Java中String类型的概述
生活随笔
收集整理的這篇文章主要介紹了
Java中String类型的概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
String的特性
1 String類:代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作為此類的實例實現。
2 String是一個final類,代表不可變的字符序列。
3 字符串是常量,用雙引號引起來表示。它們的值在創建之后不能更改。
4 String對象的字符內容是存儲在一個字符數組value[]中的
String對象的創建
String str = "hello"; //本質上this.value = new char[0]; String s1 = new String(); //this.value = original.value; String s2 = new String(String original); //this.value = Arrays.copyOf(value, value.length); String s3 = new String(char[] a); String s4 = new String(char[] a,int startIndex,int count);String類型的概述總結
package BaiYSExer1;/*** @author Bys* @create StringTest-03-14-9:55*/ /* String的特性String:字符串,使用一對""引起來表示1.String聲明為final的,不可以被繼承2.String實現了Serializable接口:表示字符串是支持序列化的。實現了Comparable接口:表示String可以比較大小3.String內部定義了final char[] value用于存儲字符串數據4.String:代表不可變的字符序列。簡稱:不可變性。體現:1.當對字符串重新賦值時,需要重寫指定內存區域賦值,不能使用原有的value進行賦值。2.當對現有的字符串進行連接操作時,也需要重新指定內存區賦值,不能使用原有的value賦值。3.當調用String的replace()方法修改指定字符或字符串時,也需要重新指定內存區賦值,不能使用原有的value賦值5.通過字面量的方式(區別于new)給定一個字符串賦值,此時的字符串值聲明在字符串常量池中6.字符串常量池中是不會存儲相同內容的字符串的。*/ public class StringTest {public static void main(String[] args) { /*String的實例化方式:方式一:通過字面量定義的方式---->String s1 = "nbkelas";方式二:通過new+構造器的方式---->String s3 = new String("nbkelas");面試題:String s = new String("abc");方式創建對象,在內存中創建兩個對象一個是堆空間中的new結構,另一個是char[]對應的常量池中的數據"abc"*///字符串常量存儲在字符串常量池,目的是共享//字符串非常量對象存儲在堆中String s2 = "nbkelas";String s1 = "nbkelas";String s4 = new String("nbkelas");String s3 = new String("nbkelas");System.out.println(s1 == s2);//trueSystem.out.println(s1 == s3);//falseSystem.out.println(s1 == s4);//falseSystem.out.println(s3 == s4);//falseSystem.out.println("************************************");/*//字符串的特性常量與常量的拼接結果在常量池。且常量池中有一個特性,就是常量池中不會存在相同內容的常量。只要其中有一個結果是變量,結果就在堆中如果拼接的結果調用intern()方法,返回值就在常量池中。*/String ss1 = "hello";String ss2 = "world";String ss3 = "hello"+"world";String ss4 = ss1+"world";String ss5 = ss1+ss2;String ss6 = (ss1+ss2).intern();System.out.println(ss3==ss4);//falseSystem.out.println(ss3==ss5);//falseSystem.out.println(ss4==ss5);//falseSystem.out.println(ss3==ss6);//true/*最后總結一下String類型的使用陷阱String s1 = "a";說明:在字符串常量池中創建了一個字面量為"a"的字符串。s1 = s1 + "b";說明:實際上原來的“a”字符串對象已經丟棄了,現在在堆空間中產生了一個字符串s1+"b"(也就是"ab")。如果多次執行這些改變串內容的操作,會導致大量副本字符串對象存留在內存中,降低效率。如果這樣的操作放到循環中,會極大影響程序的性能。String s2 = "ab";說明:直接在字符串常量池中創建一個字面量為"ab"的字符串。String s3 = "a" + "b";說明:s3指向字符串常量池中已經創建的"ab"的字符串。String s4 = s1.intern();說明:堆空間的s1對象在調用intern()之后,會將常量池中已經存在的"ab"字符串賦值給s4。*/} }總結
以上是生活随笔為你收集整理的Java中String类型的概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯云 wdcp ip:8080打不开,
- 下一篇: JSON 常量详情参考 (内含对中文不转