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

来源:互联网 发布:摄影后期软件 编辑:程序博客网 时间:2024/05/18 13:47
/*面试题: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);}}

1 0
原创粉丝点击