直接上代码:
/**
* 问: 使用final关键字 修饰一个变量时,是指引用变量不能变,还是指引用变量所指向的对象的内容不能变?
*
* 答: 使用final关键字 修饰一个变量是,是指引用变量不能变,引用变量所指向的对象的内容是可以变的。
*
* 验证思路:
* 在java中每一个对象都有自己独一无二的哈希编码,根据这个编码就可以找到对应的对象。
* 因此,根据哈希编码你就可以确定一个唯一的对象。
*
*/
public class HomeTest {
public static void main(String[] args) {
// StringBuilder 线程不安全 但速度快
final StringBuilder sb = new StringBuilder("验证");
System.out.println("sb=" + sb);
System.out.println("sb的哈希编码hashcode=" + sb.hashCode());
// 为sb追加内容 验证变量所指向的对象的内容是否可变
sb.append("成功");
System.out.println("追加后的sb=" + sb);
System.out.println("追加后的sb的哈希编码hashcode=" + sb.hashCode());
//为sb 指向一个新的对象 验证引用变量是否可变
//sb=new StringBuilder("nihao");该行会报错 所以引用变量不可变
/*
* 经过验证 发现 sb的内容发生了改变,但是sb的哈希编码没有变化,说明是同一个对象。
*
* 总结:使用final修饰的变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改。
* 如果是引用类型的变量,则在对其初始化之后不能指向一个另一个对象。
* 即 引用变量不可变,引用变量指向的对象的内容可变。
*/
}
}