编程语言-编程语言中对string的设计

编程语言-编程语言中对string的设计

虐人心 发布于 2017-03-26 字数 122 浏览 1102 回复 4

像C++中的string是可变的,java中就是不可变的,python中也是不可变的,这样设计有什么用意吗?在实际使用中各有什么好处?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

灵芸 2017-09-05 4 楼

如果想要可以被修改的String就用StringBuffer,String是一个常量,它是被final修饰的一个类,所以不能被继承,当然属性也被final所修饰,所以它不可修改,进入eclipse按下F3看一下源代码,String类的是由常量char字符串组成的,这也是为了保障安全性,如果String可以随意修改,那你的网站是不是很容易被人拼接字符串而被盗号,所以在面向对象里面,不仅是String和StringBuffer这样两种,还有Object-c里面也有数组(NSArray)和可变数组(NSMutableArray)之分,这是一个很重要的概念,所以好好掌握可变和不可变的区别,

浮生未歇 2017-08-30 3 楼

java和PY是动态语言,运行在虚拟机上,所以倾向于设计成不可变的。
主要考虑:
1.安全。比如java的string类是final的,防止重写length方法。
2.final的类可以在编译时进行内联优化,提高效率

偏爱自由 2017-08-13 2 楼

java中把String类定义成final主要是考虑“效率” 和 “安全性”。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。

偏爱自由 2017-06-18 1 楼

C++中的string管理的是动态数组,其实每次改变string的时候都是将原来的内存删掉,再申请新的内存。