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

比如.privatestaticfinalStringx=example;... 比如.private static final String x = example ; 展开
 我来答
车开往哪里
2012-12-16 · 超过17用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:41.1万
展开全部
他们都说错了,字符串本身是常量,存在静态池里,是不可变的,如果对字符串做操作是会新生成字符串的,因为这点所以才有了StringBuffer和StringBuilder,但是你的问题不在这里,final是来修饰这个引用的,加上final后,这个引用就不能再变了,例如在你定义上述语句之后,在执行x="abcd",这个是不能编译通过的。至于该不该加,如果你需要对这个字符串做操作,当然是不加了,如果你这个值是定死了的,不会再变了,当然也可以不加,但是加上有两点好处,1,安全,你不能对这个引用再进行赋值,保证了他的不变,2,效率,通过jvm,加了final的变量和类执行的效率都高。。
water_lang
2012-12-16 · TA获得超过233个赞
知道答主
回答量:122
采纳率:100%
帮助的人:64万
展开全部
亲,final 加到属性上面就是常量了,也就是说他不能变了。String这个类他本身就是final的,所以你定义字符串不须要加,除非你要把这个String变量弄成常量。正常的来说,final修饰就是一个不再改变的量,这样,他的修饰的字符串就要大写,比如:private static final String PRICE=15;这这个PRICE就是个常量了。不明白可再问哈
更多追问追答
追问
谢谢。String这个类他本身就是final的和把String变量弄成常量这里有点混乱……那么String变量和类本身有关系吗?
追答

这样给你说吧,现在有一个A类

public class A { 

 private static final String  PRICE ="111";

 private static String price ="222";

 }

然后用一个B类来修改A类里的的值

public class B {

 A.PRICE ="3333";//这里会报错

 A.price ="2222";  //这里是正确的

   

}

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

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

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zy1404
推荐于2018-03-28 · TA获得超过1387个赞
知道小有建树答主
回答量:784
采纳率:100%
帮助的人:473万
展开全部
不需要,
Java中字符串被称为字符串常量。
常量就是不可以修改的。因此不需要。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友69740a849
2012-12-16 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:149
采纳率:100%
帮助的人:84.6万
展开全部
final意为常量,加不加final修饰就要看你的这个字符串的用处了,你想要它成为一个不变的常量就加上final修饰,普通的字符串就不用加了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2012-12-16 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2340万
展开全部
字符串常量要加 final。
追问
请问有同学说字符串本来就是常量?这里是指字符串的引用吗?有字符串变量这种说法吗?
追答
"Hello" 是一个常量,但是 String hello = "Hello";hello不是一个常量,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式