1.构造方法的作用
给对象的数据(属性)进行初始化
2.构造方法的格式特点
(1)与类的方法名相同
(2)没有返回值类型
(3)没有具体的返回值(return)
3.构造方法重载的注意事项
(1)如果我们没有给出构造方法系统将默认提供一个无参的构造方法
(2)如果我们给出了构造方法系统将不再默认给出无参构造,此时需要自己创建
(建议永远自己创建无参构造)
4.成员变量两种赋值方式的区别
(1)使用有参构造进行赋值,当修改属性值时(无其他方法可使用)只能重新创建对象,修改属性值,实际上并没有修改原对象中的内容,只是新创建了一个对象,但在运行时与预期结果相同,但此时原对象将成为垃圾
(2)使用setXxx()方法进行赋值,可以在原对象的基础上对属性值进行修改,此方法更灵活,不易产生垃圾
在使用时建议使用有参构造进行属性的初始化,在需要修改属性值时使用setXxx()方法
5.创建一个对象的步骤
(1)类加载进内存
(2)声明一个对象
(3)在堆内存中创建对象并给对象中的属性值进行默认初始
(4)对属性进行显性初始化
(5)构造方法进栈,对对象中的属性赋值,构造方法弹栈
6.static关键字
如果某个成员变量被所有对象共享,可以使用static修饰,可以节约内存,用static修饰的一般称为类成员,与类相关的
(1)内存图
(以同班学生为例)
public class Main {
public static void main(String[] args) {
Student.num = 1;//对象全部为1班学生
Student s = new Student();
s.setName("张三");
System.out.println(Student.num + ":" + s.getName());
}
}
class Student {
static int num;//班级号(有初始值)
private String name;
public void setName(String name) {
this.name = name;
}
public static void setNum(int num) {
Student.num = num;
}
public static int getNum() {
return num;
}
public String getName() {
return name;
}
}
(2)特点
- 随着类的加载而存在
- 优先于对象而存在
- 被所有对象所共享
- 一般通过类名.调用(可以通过对象调用)
(3)注意事项(静态只能访问静态)
- 在静态方法中是没有this 关键字的,this是随着对象的创建而存在的,被static修饰的成员优先于对象而存在
- 静态方法中只能访问静态的成员变量和静态的方法
7.静态变量和成员变量的区别
(1)出现时间:静态变量随着类的加载而存在,成员变量随着对象的创建而存在
(2)位置不同:静态变量位于方法区的静态区中,成员变量位于堆中
(3)所属不同:静态变量属于类,成员变量属于对象
(4)调用方式不同:静态变量可以通过类名或者对象名调用,成员变量只能通过对象名调用