String s = hello; s = s + world; 执行后原始的String对象内容是否改变

String s = “hello”; s = s + “world”; 执行后原始的String对象内容是否改变?

一 : String s = “hello”; s = s + “world”; 执行后原始的String对象内容是否改变?

String s = hello; s = s + world; 执行后原始的String对象内容是否改变

因为String是不可改变的类,所以他的所有对象都是不可变的; s 原先指向的对象是内容为hello的对象,然后进行了+操作,此时会创建一个内容为world的对象,然后再创建一个内容为helloworld的对象,并把这个对象的内存地址赋给s; 所以原先的对象并未发生改变,只是s不再指向它了!!!

二 : String的截取特点

  • String的切割特点:

  • String s = hello; s = s + world; 执行后原始的String对象内容是否改变

String s = hello; s = s + world; 执行后原始的String对象内容是否改变

三 : String StringBuilder StringBuffer三者的区别

String s = hello; s = s + world; 执行后原始的String对象内容是否改变

应用场景

  • String:适用与少量的字符串拼接

  • StringBuilder适用于单线程下在字符缓冲区进行大量的字符拼接操作(线程不安全)

  • StringBuffer:适用于多线程下在字符缓冲区进行大量操作(线程安全)

er:适用于多线程下在字符缓冲区进行大量操作(线程安全)