本文目錄一覽:
- 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-hant/n/142609.html