黑马程序员技术交流社区
标题:
String这个类型的class为何定义成final?
[打印本页]
作者:
分解式
时间:
2014-2-15 19:43
标题:
String这个类型的class为何定义成final?
String这个类型的class为何定义成final?,如是问题,求解答一下
作者:
透过生活
时间:
2014-2-16 09:44
String这个类 是不可变化的字符串,所以final。而StringBuffer则是可变化的字符串,功能相对多;
作者:
袁劲松
时间:
2014-2-16 09:54
因为string类一旦定义就不可改变,所以是final类
作者:
Amorvos
时间:
2014-2-16 23:12
String类型一旦定义之后不允许改变,本身就是final。但是说Java中的变量名是存储的是字符串内存的地址,String变量内存上的数据不允许改变,变得是指向的位置,而位置上的数据没变
作者:
谜燕
时间:
2014-3-14 17:03
因为java语言不允许自定义的的类继承String类,继承就意味着赋写方法。
作者:
刘先斌
时间:
2014-3-19 16:03
主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。
作者:
刘先斌
时间:
2014-3-21 10:25
主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。
其它答案一:
String和其他基本类型不同,他是个对象类型.既然是对象类型,如果是在静态方法下是必须调用静态方法或值的,如果是非静态的方法,就必须要实例化.
main函数是个static的.所以String要能像其他的基本类型一样直接被调用.这也是为什么在main函数下使用String类型不会报告错误的原因..
一下就解释了两个心里的疑问..
以前一直觉得奇怪,为什么String是对象类型在main函数下却是不需要实例化的.再次佩服java设计人员想得真周到.
其它答案二:
当定义String类型的静态字段(也成类字段),可以用静态变量(非final)代替常量(final)加快程序速度。反之,对于原始数据类型,例如int,也成立。
例如,你可能创建一个如下的String对象:
private static final String x = "example";
对于这个静态常量(由final关键字标识),你使用常量的每个时候都会创建一个临时的String对象。在字节代码中,编译器去掉”x”,代替它的是字符串“example”,以致每次引用”x”时VM都会进行一次哈希表查询。
相比之下,度于静态变量(非final关键字),字符串只创建一次。仅当初始化“x”时,VM才进行哈希表查询。
作者:
houyudong
时间:
2014-5-5 16:22
final是最终的意思,有点像常量一样,他不可以被修改,最终值,只能使用,不能修改。就像圆周率3.14一样,可以使用,但是不能被修改
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2