string类型经常和基本数据类型一起被我们熟练运用,但却不被归为基本数据类型,他是特殊的引用类型。引用数据类型还有类,接口、数组、枚举类型和注解类型。

  我们来看下jdk对他的解释:

  String是在java.lang.String包里,前面用了final修饰,因此不可以继承和修改这个类。为了提高效率和节省空间,我们一般会引用StringBuffer类来做字符串的拼接。例如String s="hello";s=s+"world!";这两行代码执行后原始的String对象中的内容到底改变了没有?

  因为String被设计成不可变(immutable)类,所以它所有对象都是不可变对象。s原先指向一个String对象,内容是"hello",然后我们对s进行了s+的操作,s指向了另一个String对象,内容未"hello world!",原来的那个对象还存在于内存中,只是这个s引用变量不在指向它了。如果经常对String字符串进行各种各样的修改

,那势必会引起很大的内存开销。这时我们应该使用StringBuffer类了,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换也十分简单。

最新文章

  1. Elasticsearch-5.0.0移植到ubuntu16.04
  2. 给大家推荐一款高大上的代码高亮插件(sublime,github风格)——highlight.js
  3. 用手机自带uc浏览器查看静态页面,css样式不显示
  4. VC++ TinyXML
  5. 如何让你的Python代码更加pythonic ?
  6. Careercup - Facebook面试题 - 5733320654585856
  7. c++,C# 转换
  8. requireJS入门
  9. ListHelper
  10. nullable,kindof,泛型新特性
  11. 1592: [Usaco2008 Feb]Making the Grade 路面修整
  12. Android研究之监听自身应用被卸载代码实现
  13. CPP内存检测
  14. linux用户身份和文件权限
  15. 通过ModelForm实现主机添加和编辑
  16. Linux Nginx Web环境安装SSL证书后强行指向HTTPS方法
  17. android 按照拼音模糊查询中如何把字符转换成拼音
  18. 模型层model layer
  19. vij 1097 贪心
  20. 深入了解Linux(一)

热门文章

  1. spark-初阶①(介绍+RDD)
  2. 【LOJ】#3042. 「ZJOI2019」麻将
  3. Jmeter的基础使用一安装、启动、关联、断言
  4. 牛客 109B 好位置 (字符串水题)
  5. CAS实现逻辑(JWT)
  6. eclipse 创建Java web项目 Cannot change version of project facet Dynamic web module to xxx
  7. vue 换肤
  8. vs 2013 设置website项目端口
  9. docker基础知识
  10. springboot-oracle工程win下正常,centos下不能访问数据库