java 中到底是传值还是传地址
1.既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2.java只有传值,因为地址值也是值(出去面试说,说这种 支持者是詹姆斯高斯林 java之父)
局部变量和成员变量的区别?
1、在类中的定义位置不同。
局部变量:方法中,或者方法形参上。
成员变量:类中,方法外。
2、在内存中的存储位置不同。
局部变量:栈
成员变量:堆
3、生命周期不同。
局部变量:和方法相关。
成员变量:和对象相关。
4、初始化值不同。
局部变量:没有默认值,必须先定义,在赋值,然后才能使用。
成员变量:有默认值。
整型:0
浮点型:0.0
字符:'\u0000'
布尔:false
引用类型:null
在内部了的成员方法中,如何使用局部变量,内部类的成员变量以及外部类的成员变量?
局部变量:直接引用
内部类成员变量:通过this.的形式调用
外部类成员变量:通过外部类.this的形式调用
内部类之所以能使用外部类的成员,是因为内部类能获取到外部类的引用 外部类名.this
局部内部类在访问他所在的方法中的局部变量时,必须用final修饰,为什么?
因为,局部变量的生命周期是依赖于方法,方法调用完毕后,局部变量就释放了。
如果此时局部内部类对象还在使用局部变量,就会报错,所以该局部变量必须是final修饰体,
就是为了延长的局部变量的生命周期,但是JDk1.8取消了这个事情,所以我觉得这是一个bug |
|