一、方法
概念:类的共同行为,封装了一段逻辑代码,在封装方法时尽可能的只完成一项功能
方法的使用:方法属于对象的行为,应该使用:引用.方法,这些方法动态绑定到对象上
方法签名:方法名+形参列表=方法签名
形参列表:指的是形参的顺序列表
二、方法重载
概念:在同一个类型中,方法名相同,参数列表不同。
运行过程:在方法调用时,编译器会检查类的信息中是否有此方法签名的方法。如果有,编译通过,没有,编译失败,并提示错误。
三、内存管理机制:
jvm将内存分成三大主要区域。
方法区:jvm将字节码文件加载到此区域,用来存储类的信息
堆:用来存储引用类型的对象
栈:用来存储方法内的局部变量
栈帧:是栈中的空间,当程序执行到某一个方法时,jvm专门为此方法开辟的一块独有空间,此方法内的局部变量都在栈帧中,当此方法结束后,栈帧消失,释放内存。
垃圾回收机制:(GC)
jvm的一个独有线程(程序),用于回收没有任何引用指向的对象
System.out.println((new Person()).name);
上述产生的对象,以后再也无妨使用,如果类似的这样情况有很多,对象来不及被出来,内存剩余空间就会越来越小,有可能出现内存溢出情况。 因此需要一个处理机制,即垃圾回收机制。没有被引用的对象会被视为垃圾,等待GC被回收
四、构造方法(构造器)
是特殊的方法,作用是用来给成员变量(Field,字段,属性)初始化。
构造方法是一个特殊的方法,没有返回值,方法名和类名相同。
(1)默认无参构造器:如果定义类时,没有添加构造方法,系统会默认提供一个公有的没有形式参数的构造方法
注意:如果定义期间,提供了构造器,系统不再提供无参构造器。
(2)有参构造器:因为构造器是用来给成员变量初始化的,为了方便,所以形式参数的名称都与成员变量一致。因此,在赋值时,this.不能省略。
this关键字: 在普通方法或构造器中,操作的成员变量如果与局部变量名称相同时,为了避免出现歧义,应该在成员变量前使用this.进行区分。当没有歧义时,this.可以省略不写。
在构造器中:还可以使用this关键字调用本类中的其他构造方法(语法格式this(有参传参)只能在构造器的首行首句使用)
构造方法的调用:只能是new关键字来调用。new构造方法(有参传参)。
对象的实例化:是由new完成的(对象此时就存在了,但是成员变量都是默认值)
对象的成员变量初始化:是由new调用的构造器进行的(成员变量是第一次被赋值)
构造器的重载:一个类中,可以有很多个构造器。方法名相同,参数列表不同。
五、成员变量与局部变量的区别:
成员变量:
定义位置:在方法外,类体中
默认值:有默认值,在构造器中可以不对成员变量初始化
内存位置:在堆中
生命周期:从对象实例化开始出现,到对象消失
局部变量:
定义位置:在方法内(包含小括号内的形参)
默认值:没有默认值,必须初始化再使用
内存位置:在栈帧中
生命周期:从声明时开始,到方法结束后,栈帧消失时
六、数组:
基本数据类型数组,元素是基本类型的数据
引用数据类型数组,元素是对象
初始化的方法:
静态初始化: 元素类型[] 变量名 = {}
动态初始化: (1)规定长度的 (2)不规定长度的
引用数据类型的数组使用规定长度的方式进行初始化时,默认值为null
PS:引用类型的数组对象内,存储的是元素对象的地址信息