小说网站 搜小说 无限网 烟雨红尘 小说爱好者 免费小说 免费小说网站

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

/*
	面试题: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);
	}
}

posted on 2016-05-06 08:49  王小航  阅读(123)  评论(0编辑  收藏  举报

导航