String s = "hello";
String backup_of_s = s;
java復制粘貼。s = "bye";
在這一點上,備份變量仍然包含原始值“hello”(這是因為String的不變性是什么?)。
但是它是真的安全的復制字符串與這個方法(這是當然不安全復制常規可變對象),還是最好寫這個? :
網上復制的java代碼怎么用,String s = "hello";
String backup_of_s = new String(s);
s = "bye";
java判斷字符串相等?換句話說,這兩個片段之間有什么區別(如果有的話)?
EDIT – 第一個代碼段安全的原因:
讓我根據已經提供的好的答案(基本上集中在兩個片段之間的性能差異的問題),更詳細地解釋一些事情:
java 文件復制、字符串在Java中是不可變的,這意味著String對象在其構造之后不能被修改。
因此,
String s =“hello”;創建一個新的String實例,并將其地址分配給s(s是對實例/對象的引用)
字符串復制不用strcpy。String backup_of_s = s;創建一個新變量backup_of_s并初始化它,以便它引用當前由s引用的對象。
注意:字符串不變性保證此對象不會被修改:我們的備份是安全的
注2:Java垃圾收集機制保證只要被至少一個變量(在這種情況下為backup_of_s)引用,這個對象不會被銷毀,
最后,s =“bye”;創建另一個String實例(因為不可變性,它是唯一的方式),并修改s變量,以便它現在引用新對象。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态