更新時間:2020-10-20 17:08:57 來源:動力節(jié)點 瀏覽1480次
字符串是在實際的項目開發(fā)中一定會使用到的,是在java筆試題中都會經(jīng)常出現(xiàn)字符串的考題,也是屬于java基礎(chǔ)范圍的知識。其中string字符串是字符串中需要重點學習的一個,初學者需要在開始學習java的時候掌握好string字符串的知識,下面整理了string字符串的基礎(chǔ)知識點,朋友們一起來學習吧!

先來對字符串的概念總結(jié)一下,什么是字符串?如果直接按照字面意思來理解就是多個字符連接起來組合成的字符序列。字符序列是把多個字符按照一定的順序排列起來;而字符序列就是作為字符串的內(nèi)容而存在的。所以可以把字符串理解為:把多個字符按照一定的順序排列起來而構(gòu)成的排列組合。
String字符串和char字符不同,char使用單引號,只能表示一個字符,字符串就是一段文本。String是個類。這個類使用final修飾,所以這個類是不可以繼承擴充和修改它的方法的。String類又特別常用,所以在對String對象進行初始化時,它可以不像其它對象一樣,必須使用new關(guān)鍵字構(gòu)造對象。Java提供了一種簡化的特殊語法。
String類表示不可變的字符串,當前String類對象創(chuàng)建完畢之后,該對象的內(nèi)容(字符序列)是不變的,因為內(nèi)容一旦改變就會創(chuàng)建一個一個新的對象。
String字符串對象的創(chuàng)建,有兩種方式:方式一:通過字面量賦值創(chuàng)建,String s1 =“l(fā)aofu”; 需要注意這里是雙引號:“”,區(qū)別與字符char類型的單引號:‘’;方式二:通過構(gòu)造器創(chuàng)建,String s2 = new String(“l(fā)aofu”)。
以上兩種創(chuàng)建方式的對象在JVM中又是如何分布的呢? 分別有什么區(qū)別呢?方式一:String s1 =“l(fā)aofu”; 有可能只創(chuàng)建一個String對象,也有可能創(chuàng)建不創(chuàng)建String對象;如果在常量池中已經(jīng)存在”laofu”,那么對象s1會直接引用,不會創(chuàng)建新的String對象;否則,會先在常量池先創(chuàng)建常量”laofu”的內(nèi)存空間,然后再引用。方式二:String s2 = new String(“l(fā)aofu”); 最多會創(chuàng)建兩個String對象,最少創(chuàng)建一個String對象??墒褂胣ew關(guān)鍵字創(chuàng)建對象是會在堆空間創(chuàng)建內(nèi)存區(qū)域,這是第一個對象;然后對象中的字符串字面量可能會創(chuàng)建第二個對象,而第二個對象如方式一中所描述的那樣,是有可能會不被創(chuàng)建的,所以至少創(chuàng)建一個String對象。
String字符串對象的空值:(1)對象引用為空,即:String s1 = null; 此時s1沒有初始化,也在JVM中沒有分配內(nèi)存空間;()對象內(nèi)容為空字符串, 比如:String s2 =“”; 此時對象s2已經(jīng)初始化,值為“”,JVM已經(jīng)為其分配內(nèi)存空間。
如何比較兩個字符串?String內(nèi)部實現(xiàn)了Comparable接口,有兩個比較方法:compareTo(String anotherString) 和compareToIgnoreCase(String str)。(1)compareTo(String anotherString)與傳入的anotherString字符串進行比較,如果小于傳入的字符串返回負數(shù),如果大于則返回證書。當兩個字符串值相等時,返回0.此時eqauls方法會返回true;(2)equalsIgnoreCase(String str),該方法與compareTo方法類似,區(qū)別只是內(nèi)部利用了Character.toUpperCase等方法進行了大小寫轉(zhuǎn)換后進行比較。
正在學習字符串的朋友們可以根據(jù)這篇文章來檢測一下自己是否對string字符串的內(nèi)容掌握了,上面的內(nèi)容都是關(guān)于string字符串的基礎(chǔ)知識,也是在java面試中會考察到的,所以希望大家可以好好學習上面的內(nèi)容,并在實際項目中練習使用string字符串。