java String型別總結

2021-06-29 05:48:50 字數 1275 閱讀 1063

總結昨天遇到的乙個string型別的知識

在記錄題目之前先補充幾個知識點

1.string a=「abc」;與string b=new string("abc");

此時的變數a、b兩個物件不相等。  a==b不成立 但是 a.equal(b)成立  

並且無論a,b的定義位置如何,都不會影響到該結論

2.string a="abc";

string b=new string("abc") 新建乙個物件,中間有乙個物件的問題。由物件引用指向字串常量池中的某乙個字串

string c=a;          將字串常量池中的某個字串位址賦給變數c。注意中間沒有物件池的問題。

string d=b;        將物件池中的物件引用賦給變數d    注意這個賦值不直接涉及到字串常量池

string e="a"+"bc";     在編譯的過程中就已經將其便以為字串abc ,相當於直接把字串abc賦值給變數e

string f="a";

a、b、c、d、e、h幾個物件之間的equal  成立(成立的意思是兩兩之間的equal的值為true)

對於==      說明  

a!=b              新建的物件跟原來的物件不一樣。

c==a        

d==a

d!=a

e==a

h!=a

3.intern()  粗略說明一下

當a.intern()時,當字串常量池中存在變數a物件的字串時,返回字串常量池中的字串;如果不存在該字串,則將此物件新增到字串常量池中,並返回剛新增的字串物件的引用 

假設字串常量池中存在字串"number",不存在字串"number1";

如果變數 a  string  a="number";   則a直接取自字串常量池中的字串number ,並返回的是字串的引用賦值給變數a  。(假設  string a= "number1";  則需要在字串常量位址池中新增乙個字串number1,變數a 等於新新增的字串number1的引用)

變數 b   string b=new string("number");

當變數c   string c=a.intern();     由於變數a已經定義並賦值,a.intern()會返回字串常量池中的字串「number」。

當變數d   string d="number1".intern();由於字串常量池中不存在字串number1,所以會先把字串number1存入字串常量池中,然後,把剛新增的字串number1返回   

Java String型別如何判斷相等?

最初我寫的是 輸入乙個string類的變數,如果它既不是a 也不是b,那就報錯,重新輸入。我寫的 是 scanner sc new scanner system.in system.out.print 請輸入種類 a或b string type sc.next if type a type b if...

Java String型別資料的位元組長度

問題描述 向oracle資料庫中一varchar2 64 型別欄位中插入一條string型別資料,程式使用string.length 來進行資料的長度校驗,如果資料是純英文,沒有問題,但是如果資料中包含中文,校驗可以通過,但是在資料入庫時經常會報資料超長。問題分析 既然問題是資料超長,那麼問題應該就...

java String 連線問題

string s new string hello 與 string s2 hello 建立的區別 對於string s2 hello 現在棧中建立乙個 string 物件引用的變數 s,然後查詢 hello 字串是否被儲存在常量池中,如果沒有則會將 hello 放入常量池,最後s 將指向這個物件位...