*引用变量:简称引用
存储的是堆中对象的地址信息,可以理解为变量指向了堆中的对象
*方法:
1.方法签名: 方法名+参数列表
2.方法的重载:
同一个类中,方法名相同,参数列表不同
3.定义语法:
修饰词 返回值类型 方法名(...){
}
4.调用语法:
没有static修饰的方法
必须使用引用.方法(有参传参);
*构造方法:
作用: 创建对象时,初始化对象的实例变量
定义语法:修饰词 类名(...){}
调用语法:new 构造方法();
无参构造器: 没有定义构造器时,系统会默认提供无参构造器
构造器的重载: 同一个类里有多个构造器,多个构造器的形参列表不同
在构造器中: 还可以使用this关键字调用本类中其他构造方法
###:只要定义了构造器,系统不再提供默认的构造器
*成员变量与局部变量的区别:
--成员变量:
位置:在方法外,类体中
默认值:有默认值,构造器中可以不对成员变量初始化
内存位置:在堆中
生命周期:从对象实例化开始出现,到对象被销毁
--局部变量:
位置:在方法内(包含形参)
默认值:没有默认值,必须初始化再使用
内存位置:在栈帧中
生命周期:从声明时开始,到方法结束后,栈帧消失时
*内存管理:
jvm将内存分成三大主要区域.
--堆(heap):存储new出来的对象,给成员变量分配空间
--栈(stack):jvm在执行程序时,在栈中,会为每一个方法分配一个空间(即栈帧)
用来存储方法的局部变量
--方法区:用来存储jvm加载的字节码文件的信息(类的信息)
包含类的方法,方法只有一份,堆中的对象共享这份方法
在使用非static修饰的方法时,需要对象来调用(即动态绑定到对象上)
*垃圾回收机制:(GC)
jvm的一个独有线程(程序),用于回收没有任何引用指向的"对象"
System.out.println((new Person()).name);
上述产生的对象再也无法使用,如果类似的这样的情况有很多
对象来不及被处理,内存剩余空间就会越来越小
有可能出现"内存溢出"情况
因此需要一个垃圾处理机制
没有被引用的对象会被视为垃圾,等待被GC回收
(因为有垃圾回收机制,所以java程序员无须担心"内存溢出"或"泄露"现象)
*this关键字:
在普通方法中,操作的成员变量如果与局部变量名称相同时
为了避免出现歧义,应该在成员变量前使用this,进行区分
当没有歧义时,this.可以省略不写
--在构造器中:还可以使用this关键字调用本类中其他构造方法
语法格式:this(有参传参);
###:只能在首行首句使用一次
*经典俄罗斯方块游戏:
比最小单元大点的:
游戏中有很多T对象,我们可以抽象出来一种T类型
--所有T\L\J\I\O\S\Z对象的共同特征:
--所有T\L\J\I\O\S\Z对象的共同行为:
重载上述方法:
*数组:
基本数据类型数组,元素是基本类型的数据
引用数据类型数组,元素是对象(元素对象的地址信息)
初始化方法:
--静态初始化:
--动态初始化:
*引用类型的数组:
引用数据类型的数组使用规定长度的方式进行初始化时,默认值null
引用类型的数组对象内,存储的是元素对象的地址信息