1.方法的重载
2.构造方法
3.this的使用
4.内存管理
1.方法的重载(overload):
1.1)发生在一个类中,方法名相同,参数列表不同,方法体不同
跟参数类型的个数, 顺序, 位置有关
跟参数名称, 返回值没关
方法的签名: 方法名+参数列表
1.2)编译器在编译时会根据方法的签名自动绑定调用的方法
2.构造方法:
结构:
类名(有参/无参){
}
2.1 作用是给成员变量赋初值
2.2 与类同名,没有返回值类型(连void都没有)
2.3 创建(new)对象时被自动调用
2.4 若自己没有定义构造方法,则编译期默认提供一个无参构造方法,若自己定义了,则不再默认提供
2.5 构造方法可以重载
3. this的使用:
this指代当前对象,哪个对象调用方法它指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个this.
3.1 this.成员变量名-------------访问成员变量(成员变量与局部变量同名时,this不能省略)
public 方法名(参数1,参数2,参数3..){
this.成员变量=参数1;
this.成员变量2=参数2;
......
}
3.2 this.方法名()----------调用方法(一般都不写)
3.3 this()---------调用构造方法
public 方法名(参数1,参数2,参数3..){
this(给参数1所赋的值,给参数2所赋的值); 具体写几个参数就代表调用几个参数的构造
......
}
this()调用构造的时候必须放在构造的第一行
4.内存管理: 由JVM来管理的
4.1 堆区: 存储new出来的对象地址(包括成员变量),成员变量跟着对象存放在堆区,对象失效,成员变量也失效
4.2 栈区: 局部变量(包括方法的参数),方法调用结束后,局部变量也会失效
4.2 方法区: .class字节码文件(包括方法)
局部变量和成员变量区别:
1.在类中的位置不同:
成员变量:在类中 方法外
局部变量:在方法中或方法声明上(参数)
2.在内存中位置不同:
成员变量:在堆内存
局部变量:在栈内存
3.生命周期不同:
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在.随着方法调用完毕消失
4.初始化值不用:
成员变量:有默认初始值
局部变量:没有默认初始值,必须定义,赋值,然后再使用
成员变量和局部变量名称可以一样
在方法使用时,采用的是就近原则:意思是说在类中方法外定义了一个成员变量 int num; 然后又在方法中定义赋值了一个局部变量 int num=10; 那么在这个方法中 输出num的值为10
总结:我这个方法中有局部变量,我就要我自己的,没有我就用你的(成员变量)