您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關java中string類指的是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
String是不可變對象
java.lang.String類使用了final修飾,不能被繼承。Java程序中的所有字面值,即雙引號括起的字符串,如"abc",都是作為String類的實例實現的。
String是常量,其對象一旦構造就不能再被改變。換句話說,String對象是不可變的,每一個看起來會修改String值的方法,實際上都是創造了一個全新的String對象,以包含修改后的字符串內容。而最初的String對象則絲毫未動。String對象具有只讀特性,指向它的任何引用都不可能改變它的值,因此,也不會對其他的引用有什么影響。但是字符串引用可以重新賦值。
java字符串在內存中采用unicode編碼方式,任何一個字符對應兩個字節的定長編碼,即任何一個字符(無論中文還是英文)都算一個字符長度,占用兩個字節。
例子:
public class Immutable { public static String upcase(String s) { return s.toUpperCase(); } public static void main(String[ ] args) { String str1= "Hello World"; System.out.println(str1); //Hello World String str2 = upcase(str1); System.out.println(str2); //HELLO WORLD System.out.println(str1); //Hello World } }
當把str1傳遞給upcase()方法時,實際傳遞的是引用的一個拷貝。其實,每當把String對象作為方法的參數時,都會復制一份引用,而該引用所指的對象其實一直待在單一的物理位置上,從未動過。
String常量池
常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的.class文件中的一些數據。它包括了關于類、方法、接口等中的常量,也包括字符串常量。Java為了提高性能,靜態字符串(字面量/常量/常量連接的結果)在常量池中創建,并盡量使用同一個對象,重用靜態字符串。對于重復出現的字符串直接量,JVM會首先在常量池中查找,如果常量池中存在即返回該對象。
例2:
public class test1 { public static void main(String[] args){ String str1 = "Hello"; //不會創建新的String對象,而是使用常量池中已有的"Hello", String str2 = "Hello"; System.out.println(str1 == str2); //true //使用new關鍵字會創建新的String對象 String str3 = new String("Hello"); System.out.println(str1 == str3); //false } }
感謝各位的閱讀!關于java中string類指的是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。