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