美文网首页app开发
Android复习一遍又一遍

Android复习一遍又一遍

作者: 耑意儿 | 来源:发表于2017-02-16 15:41 被阅读174次

1. 解释下主函数:

public static void main(String[] args){}

public :表该函数访问权限最大
static :表该函数随着类的加载便存在
void :表主函数无具体返回值类型
main :非关键字,但可以被JVM识别
(String[] args) :函数的参数是一个字符串类型的数组
主函数是固定格式的,被JVM识别,且只识别这个。
args 是数组对象,虚拟机调用主函数时,传入的是new String[0]

2. 构造函数

作用:给对象初始化 。
多个构造函数以重载形式出现

2.1. 构造函数在写法上与一般函数不同的地方在于:

  • 函数名与类名一致
  • 无返回值类型
  • 无需return语句

2.2. 对象一创建即调用与之对应的构造函数,比如生活中小孩一出生就会哭。
2.3. 若类未定义构造函数,系统就会默认给该类加一个空参数的构造函数,如果开发人员自定义了构造函数,就不会有这个默认的了。
2.4. 构造函数和一般函数在运行上的不同?
构造函数:对象一建立就执行,进行初始化。一个对象建立,构造函数只会运行一次
一般函数:调用时才执行,是给对象添加对象具备的功能。一个对象建立,一般方法可被对象调用多次
(如:婴儿会吃饭,但并非一直不停地吃。)
2.5. 何时定义构造函数?
分析事物时,该事物存在具备一些特性或行为,则将这些内容定义在构造函数中。

3. 构造代码块

构造代码块是给对象进行初始化
对象一建立就执行,且优先于构造函数执行
与构造函数的区别

  • 构造代码块给所有对象进行初始化。
  • 构造函数给对应对象初始化。

4. 静态static

静态变量也称为类变量
静态函数随着类的加载而加载,故静态函数可直接被类调用。
静态方法为共享数据,存储在方法区中
静态虽好,只能访问静态。非静态可访问静态
4.1. static 的特点:

  • 随着类的加载而加载,消失而消失,所以生命周期最长
  • 优先于对象存在,静态先存在,对象后存在
  • 被所有对象共享
  • 可直接被类名调用

4.2. 静态使用注意事项:

  • 静态方法只能访问静态成员,非静态方法既可以访问静态成员也可以访问非静态成员
  • 静态方法中不可以定义this,super关键字,因静态优先于对象存在
  • 主函数为静态函数

4.3. 静态的利与弊:

  • 利:对象的共享数据进行单独空间存储,节省空间,无必要每个对象一份,可直接被类名调用
  • 弊:生命周期过长,访问出现局限性(静态虽好,只能访问静态)

4.4. 如何使用静态?

  • 何时定义类变量?
    当对象中出现共享数据时,该数据用静态修饰,对象中的特有数据要定义成非静态存于堆内存中,
  • 合适定义静态变量?
    当功能内部未访问到非静态数据时

4.5. 静态代码块

static { 静态代码块中的执行语句 }

特点:随着类的加载而执行,只执行一次,用于给类进行初始化。

4.6. 静态函数应用
建立一个ArrayTools的类来实现对数组的操作,由于并未封装特有数据,因此可将函数定义成静态,然后通过类名来调用,另外为避免被创建对象应该讲构造函数私有化。

5. 实例变量和类变量的区别:

5.1. 存放位置:

  • 类变量随着类的加载而存在于方法区中
  • 实例变量随着对象的建立而存在于堆内存中

5.2. 生命周期:

  • 类变量的生命周期最长,随类的消失而消失
  • 实例变量随对象的消失而消失

6. 成员变量和局部变量

  • 作用范围:
    成员变量作用于整个类,局部变量作用于函数或语句中
  • 在内存中的位置
    成员变量存在堆内存中,因为对象存在而在内存中存在;局部变量存在于栈内存中。

7. 说明下句的内存空间是如何开辟的:

ShowSpaceCreate p = new ShowSpaceCreate("zhang" , 20)
  • 因new用到了ShowSpaceCreate.class,所以先找到该类文件加载到堆内存中
  • 执行该类中static代码块,若有,则是给该类初始化
  • 在堆内存中开辟空间,分配内存地址
  • 在堆内存中建立对象的特有属性,并进行默认初始化
  • 对属性进行显示初始化
  • 对对象进行构造代码块初始化
  • 对对象进行构造函数初始化
  • 将内存地址赋给栈内存中的p变量。

8. 匿名对象

new Car().run();

未给对象取名,new完直接调用方法
用法:

  • 当对对象的方法只调用一次时,可用匿名简化
    若对一个对象进行多个成员调用则必须命名
  • 可将匿名对象作为实际参数传递,如:
    show (new Car());

9. 内部类

将一个类定义在另一个类里面,里面的这个类就是内部类
**9.1. ** 访问特点:

  • 可直接访问外部类成员,包括私有的
    私有成员只能在类内部使用,内部类在类的内部;
    之所以可以直接访问外部类成员,是因为内部类持有一个外部类引用。
    格式:外部类.this.外部类成员
  • 外部类要访问内部类成员需要创建内部类的对象。

**9.2. **内部类在成员位置上时可被访问修饰符修饰
如:
private 将内部类在外部类中进行封装。
static 使内部类具备静态特性,此时只能访问外部类中的静态成员。

**9.3. **在外部其他类中直接访问static内部类的非静态成员:

new OuterClass.Inner().function();

**9.4. **在外部其他类中直接访问static内部类的静态成员:

OuterClass.Inner().function();

<a>注意:</a>
当内部类成员定义了一个静态成员,则该类必须也为静态类
当外部类静态方法访问内部类,则该内部类为static的。

**9.5. ** 局部内部类
局部内部类不可以被成员修饰符修饰:private ,static
局部内部类可以直接访问外部类中成员,因为还持有引用,但不可以访问所在局部中的变量,常量可以。

**9.6. ** 匿名内部类
定义匿名内部类的前提是:内部类必须是继承或者实现一个接口。
格式:

new 父类或接口(){定义子类内容}

匿名内部类即一个匿名子类对象,而这个类有点胖,可以理解成为带内容的对象
匿名内部类定义的方法最好不要超过三个。

10. final修饰符

final可以修饰类、变量和方法,分别表示类不能被继承;变量值不可改变,其实就是常量;函数不可被重写。
局部内部类只能访问该局部中被final修饰的量。

相关文章

  • Android复习一遍又一遍

    1. 解释下主函数: public :表该函数访问权限最大static :表该函数随着类的加载便存在void ...

  • 每一个善变的夜

    我卸下疲倦 却依赖疲倦 我不太善变 复习你一遍 又一遍。

  • 一遍又一遍

    又回到那样的午后了 温和的风吹来鸟儿的声音 是哪家锅翻了的声音也能听到 阳光爬升的高度正好 照到窗沿的位置 却照不...

  • 一遍又一遍

    又到了深夜。这一天,他忙完所有的事情,拖着疲惫的身躯,回到了拥挤不堪的住处。墙角里,几只蟑螂窸窸窣窣,斑驳...

  • 一遍又一遍

    一遍又一遍 翻开老照片 想念 一遍又一遍 打开空间 当我得闲 一遍又一遍 你的容颜 眼前 一遍又一遍 你的叮嘱 耳...

  • 一遍又一遍

    感覺自己放了幾天沒寫。 做了一些些決定,一些可能性的覺得。 我總記得老王說過,不管你怎麽樣我都會等你的,但是差點感...

  • 一遍又一遍

    女儿的语文老师要求读课文要一字不错,还不能断句。如果有错要从头再读,至到一字不错,流畅自然。 女儿要读的课文是《卖...

  • 一遍又一遍

    一遍又一遍,反复吟诵你在暮秋为我写的诗 暮秋的晚风像云一样轻盈 像你在耳畔喃喃细语 留住它,便可留住耳边的声声轻唤...

  • 一遍又一遍

    我所有能够给予的能量在当时知道真相的那一刻死去了。 是我后知后觉还是怎么回事。中二期也看过不少类似说跟世界保持距离...

  • 一遍又一遍

    今天早上,心血来潮,清洗浴室玻璃,想要洗得清透亮丽。 本来以为檫一遍就可以干净的,结果,第一遍,只是...

网友评论

本文标题:Android复习一遍又一遍

本文链接:https://www.haomeiwen.com/subject/cexhwttx.html