本文目錄一覽:
- 1、JAVA中這兩種給字元串變數賦值的方法有區別嗎?
- 2、java中字元串數組如何賦值?
- 3、java中 輸入字元串怎麼給String數組賦值
- 4、java中字元串賦值問題
-
5、java 字元串變數賦值例如
String a=”abc”;
String b;
b=a;
b=”
JAVA中這兩種給字元串變數賦值的方法有區別嗎?
有區別。new出來的對象在堆內存中。
直接賦值的字元串在 常量池區
java中字元串數組如何賦值?
變數初始化,和變數賦值是兩個不同的語法。
數組初始化時,可以為null,{value1,value2,value3,….},或者賦予另一個數組的值:String[]
b
=
a;
常量只能被初始化,一次,不能再次賦值;
非常量則可以進行賦值操作,賦值操作只能賦予以下情況:null,另一個數組的值。
lz的問題中,a={“,”}是一個初始化的語法,不是正確的賦值語法。
java中 輸入字元串怎麼給String數組賦值
java中輸入的字元串主要是使用scanner類來接收用戶從鍵盤輸入的數值,然後建立一個字元串數組來賦值,代碼如下:
public class ceshi {
public static void main(String[] args){
String[] s = new String[3];//字元串數組
Scanner sc = new Scanner(System.in);接收用戶從鍵盤輸入的字元串
String str = sc.next();
s[0]=str;//輸入的字元串str賦值給字元串數組的第一個
}
}
運行結果如下:
java中字元串賦值問題
Java運行時會維護一個String
Pool(String池,
String常量池,
字元串緩衝區)
String池用來存放運行時中產生的各種字元串,並且池中的字元串的內容不重複。
而一般對象不存在這個緩衝池,並且創建的對象僅僅存在於方法的堆棧區
String
s
=
“accp”;
創建s之前系統會先在”池子”中查找是否已經存在這個字元串,
如果存在則直接符號該字元串的句柄
如果不存在,
系統會創建一個新”accp”字元串,
並返回句柄,
以後再有”accp”被要求創建,
系統不會創建新的,而是直接返回已經存在的字元串的句柄
String
s
=
new
String(“accp”);
系統不會去”池子”中查找,
直接在內存中新開闢一塊空間,
初始化為”accp”,並返回句柄
java 字元串變數賦值例如
String a=”abc”;
String b;
b=a;
b=”
String a = “abc”; // 定義了一個 “abc” 字元串 ,a 指向 這個字元串
String b;
b = a; // 使b也指向 a現在指向的那個字元串(”abc”)
b = “abcd”; // 定義了一個”abcd” 字元串,b 指向 這個新的字元串
在內存中大致的示意圖如下:
所以最後 a =「abc」,b=「abcd」
java中字元串是一個較為特殊的存在,如果感興趣可以找資料詳細了解
Java中字元串內存位置淺析
觸摸java常量池
原創文章,作者:RGZZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142609.html