Java:为什么String被称为不可变字符串?
很多东西,看似可变,实际上不过是是新桃换旧符罢了。
String可以使用 =,或 + 重新赋值。
看似一个对象在变化,实际上是丢弃了以前的对象,创建了新的String对象。
而StringBuilder 、 StringBuffer不会丢弃之前的String对象,所以称为可变字符串,StringBuffer线程安全,StringBuilder效率高。
测试代码:
static void testString(){ String str = "i love"; System.out.println(str+"地址是:"+System.identityHashCode(str)); str = str+" you"; System.out.println(str+"地址是:"+System.identityHashCode(str)); StringBuffer strBuffer =new StringBuffer("i love"); System.out.println(strBuffer+"地址是:"+System.identityHashCode(strBuffer)); strBuffer.append(" you"); System.out.println(strBuffer+"地址是:"+System.identityHashCode(strBuffer)); }
运行结果:
字符序列(CharSequence)的关系图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步