java中的final修饰属性时,是指内容不变还是引用不变?

xuxichun 2008-04-06 01:34:40
谁能从虚拟机的角度解释一下,谢谢:)
...全文
507 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjgj3368 2008-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lingirl 的回复:]
当含有final属性的类被加载进内存并且被实例化的时候,就会为这个final属性分配内存,同时必须对该属性进行初始化,之后不可变。也就是说如果是基本类型的,那么它的值不能再改变;如果是对象,则引用不可变,而对象本身还是可以改变的
[/Quote]
正解
w111222j 2008-04-06
  • 打赏
  • 举报
回复
3楼说得很正确哦
x03640206 2008-04-06
  • 打赏
  • 举报
回复
final修饰基本类型的变量时,表示常量,修饰引用类型时表示对象变量的值不变,对象里面的内容可以改变。
hahalzx 2008-04-06
  • 打赏
  • 举报
回复
应该不会报错吧,默认是fianl了,你写出来也是一样了
  • 打赏
  • 举报
回复
错误的,在接口中默认是final类型
istimeto 2008-04-06
  • 打赏
  • 举报
回复
接口中的成员变量默认的就是static final类型的,表示的是顶级的属性。不应该再加上final的。
xuxichun 2008-04-06
  • 打赏
  • 举报
回复
我还有一个问题,对于接口的定义
Interface A
{
final Obj b = new Obj("123");//大家觉得这行有错误么?为什么?
}
xuxichun 2008-04-06
  • 打赏
  • 举报
回复
楼上的各位解释的很好,谢谢:)
老紫竹 2008-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lingirl 的回复:]
当含有final属性的类被加载进内存并且被实例化的时候,就会为这个final属性分配内存,同时必须对该属性进行初始化,之后不可变。也就是说如果是基本类型的,那么它的值不能再改变;如果是对象,则引用不可变,而对象本身还是可以改变的
[/Quote]

说的很清楚了!

final int id = 1; // 基本类型,不可改变
final Object obj = new Object(); // 则引用不可改变,但 obj里面的属性可以改变!
ai_longer 2008-04-06
  • 打赏
  • 举报
回复
说的不太清哦,二楼,能不能说清一点哦
lingirl 2008-04-06
  • 打赏
  • 举报
回复
当含有final属性的类被加载进内存并且被实例化的时候,就会为这个final属性分配内存,同时必须对该属性进行初始化,之后不可变。也就是说如果是基本类型的,那么它的值不能再改变;如果是对象,则引用不可变,而对象本身还是可以改变的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧