我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:财神爷图库 > 定义符 >

请问在java中定义字符串时要加上final修饰吗?

归档日期:08-06       文本归类:定义符      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部亲,final 加到属性上面就是常量了,也就是说他不能变了。String这个类他本身就是final的,所以你定义字符串不须要加,除非你要把这个String变量弄成常量。正常的来说,final修饰就是一个不再改变的量,这样,他的修饰的字符串就要大写,比如:private static final String PRICE=15;这这个PRICE就是个常量了。不明白可再问哈更多追问追答追问谢谢。String这个类他本身就是final的和把String变量弄成常量这里有点混乱……那么String变量和类本身有关系吗?追答

  这就说明:被final修饰的值是不可以改变的。现在你可能会感觉到奇怪的是为什么A.price=2222/这里是正确的。如下图:

  你发现没?变化的是A中的price这个引用,而不是字符串本身放发生了改变。这就是String这个类被final修饰的,所以,后面的“2222”不是在前面的“222”上直接加上一个“2”,而是单独弄了一个空间来放“2222”这个字符串。懂了没亲?

  非常详细,谢谢。我想再请教一下这里可以直接用A.price=2222; 来修改是直接调用类的常量吗?会显示创建price的提示??

  A.price 表示什么就要弄清楚,他就是A类的price属性我想你很清楚,A.price就是类名.属性名对吧,那什么时候可以这样做呢,只要他的属性是被static修饰那么他就可以用类名.属性名得到该类的对应的属性,你就可以在面做操作了。相反,如果你的属性没有被static修饰,那么就要用new来创建该类的一个对象,比如,A类

  注意:static修属性如果是private,那么其他的类是不能纺问他的,你改为public 就可以

  他们都说错了,字符串本身是常量,存在静态池里,是不可变的,如果对字符串做操作是会新生成字符串的,因为这点所以才有了StringBuffer和StringBuilder,但是你的问题不在这里,final是来修饰这个引用的,加上final后,这个引用就不能再变了,例如在你定义上述语句之后,在执行x=abcd,这个是不能编译通过的。至于该不该加,如果你需要对这个字符串做操作,当然是不加了,如果你这个值是定死了的,不会再变了,当然也可以不加,但是加上有两点好处,1,安全,你不能对这个引用再进行赋值,保证了他的不变,2,效率,通过jvm,加了final的变量和类执行的效率都高。。

  final意为常量,加不加final修饰就要看你的这个字符串的用处了,你想要它成为一个不变的常量就加上final修饰,普通的字符串就不用加了。

本文链接:http://mymediaworld.net/dingyifu/799.html