• 《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);
    	}
    }

  • 相关阅读:
    AVL树的java实现
    request和response的setCharacterEncoding()方法
    几种常用数据库连接池的使用
    String类、static关键字、Arrays类、Math类
    QT学习笔记(day02)
    QT学习笔记(day01)
    STL中栈和链表的不同实现方式的速度对比
    C++泛化双端队列
    C++泛化队列
    C++泛化栈
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299860.html
Copyright © 2020-2023  润新知