类和对象
属性(成员变量) vs 局部变量
相同点
1、定义变量的格式:数据类型 变量名 = 变量值
2、先声明,后使用
3、变量都有其对应的作用域
不同点
1、在类中声明的位置不同
属性:直接定义在类的一对{}内
局部变量:声明在方法内,方法形参,代码块,构造器形参,构造器内
2、关于权限修饰符的不同
属性:可以在声明属性时指明其权限,使用权限修饰符(private、public、缺省、protected)
局部变量:不可以使用权限修饰符
3、默认初始化值的情况不同
属性:类的属性,根据其情况,都有默认初始化值
整型(byte、short、int、long):0
浮点型(float、double):0.0
字符型(char):0(或'\u0000')
布尔型(boolean):false
引用数据类型(类、接口、数组):null
局部变量:没有默认初始化值,意味着在调用局部变量之前,一定要显式赋值;特别地,形参在调用时赋值即可
4、在内存中加载的位置不同
属性:加载到堆空间中(非static)
局部变量:加载到栈空间
表格对比
成员变量 | 局部变量 | |
---|---|---|
声明的位置 | 直接声明在类中 | 方法形参或内部、代码块内、构造器内等 |
修饰符 | private、public、static、final等 | 不能用权限修饰符修饰,可以用final修饰 |
初始值 | 有默认初始化值 | 没有默认初始化值,必须显式赋值,方可使用 |
内存加载的位置 | 堆空间 或 静态域内 | 栈空间 |
默认初始化赋值
成员变量类型 | 初始值 |
---|---|
byte、short、int | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
char | 0或’\u0000’(表示为空) |
boolean | false |
引用类型 | null |
对属性的赋值操作
① 默认初始化 --> ② 显式初始化 / ③代码块初始化 --> ④ 构造器初始化 --> ⑤ 对象.方法 或者 对象.属性
(显式初始化和代码块初始化的顺序为声明的顺序,谁在前声明,谁先赋值)
方法
-
如果没返回值,通常不使用return,如果使用,只能用"return;"表示结束此方法
-
方法重载:同一类,同一方法名,参数列表不同(参数类型或参数个数)
-
可变个数的形参 (jdk 5.0新特性)
1、格式:数据类型 ... 变量名 2、可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载 3、可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载 4、可变个数形参在方法的形参中,必须声明在末尾,且最多只能声明一个可变形参
-
方法参数的值传递机制(将实际参数值的副本传入方法内,而参数本身不受影响)
形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参 形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参
构造器
1、默认构造器的修饰符与所属类的修饰符一致
2、一旦显式定义了构造器,则系统不再提供默认构造器
3、一个类可以创建多个重载的构造器
4、父类的构造器不可被子类继承
5、不能被static、final、synchronized、abstract、native修饰
javaBean
符合以下标准的java类:
1、类是公共的
2、有一个无参的公共的构造器
3、有属性,且有对应的get、set方法
this
-
this调用属性和方法:(当前对象)
1、在方法或构造器的形参和类的属性同名时,需要使用"this.变量"的方式表明此变量是属性而非形参 2、通常情况下,省略"this." 3、this不能用于static方法中
-
this调用构造器:(正要初始化的对象)
1、可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其他的构造器 2、构造器中不能通过"this(形参列表)"的方式调用自身构造器 3、如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了"this(形参列表)" 4、"this(形参列表)"必须声明在类的构造器的首行 5、在类的一个构造器中,最多只能声明一个"this(形参列表)"