请看下面一道有关final修饰的作业题,此外我又画了一张内存分析图,若是有什么问题不要骂我,毕竟我还只是小虾米而已。
public class Test { public static void main(String[] args) { final Person person = new Person("欧欧"); person.name = "美美"; person = new Person("亚亚"); person1.say(); } } class Person { public String name; public Person(String name) { this.name = name; } public void say(){ System.out.println("姓名:" + name); } }
执行结果如下:
由于Eclipse工具的强大性,使得我们刚把代码放进去,就看到了错误信息。分析这行报错代码,看看也没什么错误啊!这些是正常的对象创建,可问题出在了哪里呢?这个时候内心一定要镇静,千万不要摔电脑。当你通过回溯对象 person时,可以发现此对象创建的时候前面被加了final关键字进行修饰。我说呢?原来是不能再改变了,顿时松了一口气,终于解决了问题。可...可当你向下继续看时,尼玛 person.name = "美美" 怎么没报错啊!不是说不能改变了吗?这时忽然听到谁在说 "别急,别急,先看下面的图再说"。
思路总结:final修饰的对象,表示引用不可变,对象的内容可以改变以及赋值。
时间: 2024-10-26 11:32:26