tostringbuilder(java的StringBuilder如何加入一个换行)
本文目录
java的StringBuilder如何加入一个换行
直接加入一个\n在字符序列中就可以了,例如:sbuilder.append(’\n’);下面是一个完整的演示程序,你可以看一看加\n和没有加\n有什么不一样的地方。
public class StringBuilderTest{ public static void main(String args) { StringBuilder sbuilder = new StringBuilder(); sbuilder.append("welcome to"); sbuilder.append("StringBuilder"); sbuilder.append(’\n’); sbuilder.append("world"); System.out.println(sbuilder.toString()); }}
为什么String在java中是不可变的
String类在Java中被设计成不可变的,这是Java开发人员大家都知道的事情。但是要让大家真的说出来为什么String在Java中是不可变的,有时候真的能让人一时语塞,或者说的不够全面。这个问题有各种提问的方式,例如:“为什么Java中要把String类设计成不可变的?”,“String类被设计成不可变类有什么好处?”基本上都是一个思路。
接下来个人从以下几个方面来谈谈自己对这个问题的看法:
什么是不可变?
《Effective Java》中对于不可变类的解释如下:
不可变类只是其实例不能被修改的类。每个实例中包含的所有信息都必须在创建该实例的时候就提供,并且在对象的整个生命周期内固定不变。为了使类不可变,要遵循下面五条规则:
1. 不要提供任何会修改对象状态的方法。
2. 保证类不会被扩展。 一般的做法是让这个类称为 的,防止子类化,破坏该类的不可变行为。
3. 使所有的域都是 final 的。
4. 使所有的域都成为私有的。 防止客户端获得访问被域引用的可变对象的权限,并防止客户端直接修改这些对象。
5. 确保对于任何可变性组件的互斥访问。 如果类具有指向可变对象的域,则必须确保该类的客户端无法获得指向这些对象的引用。
不可变带来的好处
- 多线程安全:不可变对象天生多线程安全。因为不可变对象不会被改变,所以它们可以被多线程共享,不需要增加额外的同步操作。
- 字符串池:
上面的代码只会创建一个对象实例到Java Heap中,当创建str1时候,会去字符串池中查看是否已经有了这个字符串,如果有,那么把str1的引用直接指向这个字符串实例上去,这样便极大的节省了内存空间的使用。如果字符串可变的话,那么修改了其中一个对象,就会影响另外一个。
缓存HashCode
- String类是基石
正是因为有了以String类为代表的这些不可变类,才能为其他对象的构建提供了极大的便利,想想我们在编写Java程序的时候,是不是大量的使用了String类。
以上,就是我个人对Java中为什么String类是不可变的几点看法,大家还有什么更好的见解?欢迎讨论交流,批评指正~
更多文章:
战神夜袭全橙武获得方法 战神夜袭橙武怎么得?战神夜袭绅士怎么召唤
2023年7月15日 10:00
linux操作系统下载(linux操作系统下载,谁有linux系统啊,最好是GHOST版飞)
2024年7月19日 10:06
迅捷斥候出装(迅捷斥候 最好的出装!经验只谈不要给我复制官方的)
2023年4月17日 06:20
appcrash(台式电脑APPCRASH出问题是什么意思)
2024年7月18日 10:16
月魔辅助官方指定歪歪是:946111 金牌服务理念,“专注用户感受,用心发展月魔”是他们的宗旨,?月魔辅助怎么好
2024年3月12日 12:00
让房地产大亨潘石屹都赞不绝口的儿媳,究竟是什么来历?中国房地产大亨都有哪几位他们的公司叫什么
2024年3月6日 18:05
绕口令:标兵怕碰炮兵炮原文是什么?谁可以给我个炮炮兵Flash动画下载的网址啊
2024年1月9日 15:40
电脑录视频软件哪个好(电脑有什么免费好用的录屏软件可以推荐吗)
2024年7月19日 02:55
安卓4 4系统下载(vivoX5max+手机4.4.4版本系统下载不了微信怎么搞)
2024年7月17日 02:19
《英雄无敌之死亡阴影》哪个种族最强大为什么?谁知道 英雄无敌3死亡阴影 的规则或玩法
2024年8月30日 15:30
谷歌地球专业版(谷歌地图VIP专业版多少钱 跟免费的有什么区别)
2024年5月22日 07:55