您的位置:首页 > 职场人生

《java入门第一季》之面向对象面试题(fianl关键字)

2016-05-06 08:49 330 查看
/*
面试题:final修饰局部变量的问题
基本类型:基本类型的值不能发生改变。
引用类型:引用类型的(地址值)(不能发生改变),但是,该对象的堆内存的值是可以改变的。
*/
class Student {
int age = 10;
}

class FinalTest {
public static void main(String[] args) {
//局部变量是基本数据类型
int x = 10;
x = 100;
System.out.println(x);
final int y = 10;
//无法为最终变量y分配值
//y = 100;//y是最终的,不能再次被赋值!/基本类型的值不能发生改变
System.out.println(y);
System.out.println("--------------");

//局部变量是引用数据类型
Student s = new Student();
System.out.println(s);
System.out.println(s.age);
s.age = 100;//堆内存中的值可以改变的
System.out.println(s.age);
s = new Student();////重新分配内存空间,new一次就重新分配一次内存空间。此时改变了地址
System.out.println(s);
System.out.println("--------------");

final Student ss = new Student();//引用类型被fianl修饰后,ss的地址不会再发生改变。不能再new一个值给ss了
System.out.println(ss);
System.out.println(ss.age);
ss.age = 200;//对象对应的堆内存中的值可以改变的
System.out.println(ss.age);

//无法为最终变量ss分配值
ss = new Student();////重新分配内存空间错误,不能再new了,final修饰之后就限定 地址不再变化不能再new了。
//System.out.println(ss);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: