成员变量、类变量、局部变量的区别
变量名首写字母使用小写,如果由多个单词组成,从第2个单词开始的其他单词的首写字母使用大写。
如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员变量,必须使用关键字this
成员变量与局部变量的区别
1、在类中的位置不同
成员变量:在类中方法外面
局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中)
2、在内存中的位置不同,可以看看Java程序内存的简单分析
成员变量:在堆中(方法区中的静态区)
局部变量:在栈中
3、生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用或者代码块的执行而存在,随着方法的调用完毕或者代码块的执行完毕而消失
4、初始值
成员变量:有默认初始值
局部变量:没有默认初始值,使用之前需要赋值,否则编译器会报错(The local variable xxx may not have been initialized)
构造器:
new创建对象做的三件事情:
- 1.在堆中为对象开辟空间,成员属性会跟随对象进入到堆内存并赋默认值
- 2.调用构造器为对象初始化信息
- 3.将地址返回值引用
- 构造器|构造方法|构造函数:
- 构造器是一个特殊的方法,只能和new一起使用
- 作用:
-
初始化对象信息,不是用来创建对象的 - 定义:
-
构造方法的名字必须与当前的类名一致 ,不需要返回值不需要void -
修饰符 类名([参数列表]){ -
... -
} - 如果没有自定义构造器,编译器会自动为你添加空构造(不带参数的构造器)
- 如果存在自定义构造器,编译器这时不会再提供任何构造器,包括空构造
- 构造器是方法,方法就可以构成方法的重载
- 调用不同的构造器,看创建对象时候()中的参数列表匹配哪一个构造器的参数列表
- 修饰符可以是private,私有的,只能在本类中使用(单例)
- 构造器不能使用final,static,abstract修饰
- 总结:特殊的方法,只能通过new的使用使用,可以重载没有返回值和void,区分重载构造器看new后()的参数
this: 指代当前new的对象,存储的就是当前对象的地址
- 1).在构造器的首行通过this调用当前其他构造器
-
this(); -->()匹配构造器的参数 - 2).区分同名成员变量和局部变量
-
如果不使用this,会发生就近原则 -
在构造器中,this指代当前new的对象 -
在方法中,this指代当前调用成员方法的这个对象 -
如果不存在同名变量的问题,默认省略this. -
如果存在同名变量的问题,默认就近原则,区分成员,this.,this.不能省略 - 注意:
- 1.在构造器的首行调用其他构造器时候不能相互调用
- 2.如果不使用,会发生就近原则
- 3.this不能使用在static修饰的方法中
static 关键字 静态的
- static修饰变量|静态变量|类变量,只能修饰成员变量,不能修饰局部变量
- static修饰方法|静态方法|类方法
- static修饰的内容的使用方式:
-
1.类名. -
2.对象. - 注意:
-
静态的内容是属于类的,成员的内容是属于对象的 -
静态的内容是独一份的,这个类的所有对象共享这个类中的静态内容 -
在静态的内容中只能直接使用静态的内容,不能直接使用成员的内容==>对象使用 -
非静态的内容中,可以直接使用成员的内容,可以直接使用静态的内容
块 block–>{} ==>自成作用域
- {}–>方法中,局部代码块|普通语句块 执行时机:调用方法
- {}–>类中方法外,构造块 执行时机:创建对象
- static{}–>静态块
- 1.构造块先于构造器执行,如果有多个构造块,从上到下一次执行
- 2.静态{}在第一次加载类的时候只执行一次,先于主方法执行,如果有多个静态块,从上到下一次执行
- 静态块 — main —构造块—构造器
构造块在编译的时候会被放在构造器语句块中代码的最上面,如果存在this调用其他构造器,必然先调用其他构造器,因为this必须存在于首行才能调用其他构造器
*
- 使用debug调试:
- 1.先打断点
- 2.debug模式运行 f5进入细节 f6下一步执行 f7返回方法的调用出
System.gc() 通知系统回收,但是无权决定是否回收,什么时候回收
*
- finalize() 在垃圾回收机制来回收垃圾第一步会调用的方法
- 一定会调用finalize()方法的两种情况:
-
1.匿名对象 -
2.对象无引用状态
注意:不要定义与 jdk 相同的包,相同的类, 否则会引起很多你觉得莫名其妙的问题
*
- 导包: 模糊匹配 *
- 会拖慢编译效率,不会拖慢运行速度
- 静态导入:单独导入类中的静态的内容
-
可以导入变量可以导入方式
javabean
人类
- 属性: 姓名 年龄
- 功能: 学习
- 为了解决安全隐患:在外部不能直接使用对象的属性
- 新的关键字 private 私有的 成员修饰符,不能修饰局部变量
- 私有的内容只能在当前类中使用
- 如何使用私有的属性:
- 对使用的属性提供公共的访问方式 setter设置器 getter访问器
- 面向对象的三大特性之一:
- 封装:对外隐藏内部的实现细节,提供公共的访问方式就是封装
- 属性私有,公共的访问方式是封装的一个具体的体现(不能说封装是私有)
- 类,方法都是封装的体现
- 以后写模板类,属性都要私有,提供公共的访问方式
- 这种模板类|实体类|javabean
- 1.类是公共的public修饰
- 2.至少存在一个空构造
- 3.属性私有
- 4.公共的访问方式

被折叠的 条评论
为什么被折叠?



