/*
final修饰局部变量的 问题:
基本类型:基本类型的值不能发生改变。
引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。
*/
=========================基本类型 测试一=============================
class Test{
public static void main(String [] args){ int x =10; x=100; System.out.println(x); final int y =20; System.out.println(y); }
} 结果:
100
20
==========================基本类型 测试二===========================
class Person{
} class Student extends Person{ } class Test{ public static void main(String [] args){ int x =10; x=100; System.out.println(x); final int y =20; y =200; System.out.println(y); }
} 结果: 编译出错: 无法为最终变量 y 指定值
===========================引用类型 测试一==============================
class Person{
int age =10; } class Test{
public static void main(String [] args){ Person p =new Person(); System.out.println(p.age);
p.age =100; System.out.println(p.age); }
} 结果:
10
100
=================================引用类型 测试二=====================
class Person{
int age =10; } class Test{
public static void main(String [] args){ Person p =new Person(); System.out.println(p.age); p.age =100; System.out.println(p.age); final Person p2 =new Person(); System.out.println(p2.age); p2.age =100; System.out.println(p2.age); }
} 结果:
10
100
10
100
=====================引用变量 测试三===========================
class Person{
int age =10; } class Test{
public static void main(String [] args){ Person p =new Person(); System.out.println(p.age); p.age =100; System.out.println(p.age); final Person p2 =new Person(); System.out.println(p2.age); p2.age =100; System.out.println(p2.age); p2 =new Person();
}
} 结果:
编译报错:无法为最终变量 p2 指定值
|
|