1.属性是引用类型怎么访问(内存图讲解)
属性也就是成员变量或者说是实例变量
引用一定是局部变量吗?为什么?
不一定 类体外定义的是一种引用数据类型,
add 是成员变量并且还是一个实例变量,所以add也是一个引用
2.程序在什么情况下会出现空指针异常呢?
空引用 访问 对象相关的数据时,会出现空指针异常
垃圾回收器主要针对堆内存
Student s = new Student();
s = null;
s.name;//出现空指针异常,语法可以检测通过,运行报错
s.age;
出现空引用异常的前提条件是?
空引用访问实例(对象相关)相关的数据时,都会出现空指针异常
3.方法在调用的时候参数是如何传递的?
实际上,在java语言中,方法调用时参数传递,和类型无关,都是将变量中保存的那个值传过去,这个值可能是一个数字100,也可能是一个java对象的内存地址:0x1234
4.构造方法
-
当一个构造方法没有提供任何构造方法,系统默认提供无参构造方法,无参构造方法叫构造方法器
-
当一个类中手动提供了构造方法,系统不爱再提供无参数的构造函数
-
无参数构造方法,和有参数的构造方法都可以调用
- new Student();
- new Student(100);
-
构造方法支持方法重载:方法名相同,参数不同
输出结果:
注意事项: -
对于实例变量来说,只要你在方法中没有手动给它赋值,统一都会默认赋值,默认赋值系统值.
将上面User()内容改成下面的内容
总结:
参数传递:不管是哪种数据类型的传递,都是将变量中保存的值复制一份,传过去
有参构造和无参构造
默认的为无参,设置有参时,无参自动被覆盖了,如果需要使用无参的话,可以通过重载的方法将手动定义出来
1.两个作用:创建对象,给属性赋值
(成员变量 /实例变量/属性)
2. 修饰符 + 类名(){
}
3.使用new 运算符调用构造函数
4.系统默认创建的无参构造函数
5.建议手动的将默认的构造器加上,指定不会错
public User(){
}
6.实例变量是在构造方法执行的时候进行初始化