本文目錄一覽:
JAVA中這兩種給字元串變數賦值的方法有區別嗎?
有區別。new出來的對象在堆內存中。
直接賦值的字元串在 常量池區
java字元串賦值
選BC
a是正確的,定義s並複製一個字元串字面量abcd
b是錯誤的,\0表示字元串的結束,如果不寫,默認添加上,這段是正確的,但字元串不能用單引號,必須用雙引號,因此也是錯誤的
c是錯誤的,\表示轉義身後的字元,\a在java中不是轉義字元,\n表示換行,\t表示一個製表符,\r表示回車等
d是正確的,正確定義s,但未初始化
java中字元串賦值問題
Java運行時會維護一個String
Pool(String池,
String常量池,
字元串緩衝區)
String池用來存放運行時中產生的各種字元串,並且池中的字元串的內容不重複。
而一般對象不存在這個緩衝池,並且創建的對象僅僅存在於方法的堆棧區
String
s
=
“accp”;
創建s之前系統會先在”池子”中查找是否已經存在這個字元串,
如果存在則直接符號該字元串的句柄
如果不存在,
系統會創建一個新”accp”字元串,
並返回句柄,
以後再有”accp”被要求創建,
系統不會創建新的,而是直接返回已經存在的字元串的句柄
String
s
=
new
String(“accp”);
系統不會去”池子”中查找,
直接在內存中新開闢一塊空間,
初始化為”accp”,並返回句柄
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286406.html