字符串String
String基礎
1)String位于java.lang包中,Java程序默認導入java.lang包。
2)ava字符串就是Unicode字符序列,例如串“Java”就是4個Unicode字符J、a、v、a組成的。
3)Java沒有內(nèi)置的字符串類型,而是在標準Java類庫中提供了一個預定義的類String,每個用雙引號括起來的字符串都是String類的一個實例。? ? ? ? ??
【示例1】String類的實例
String e =?""? ; //?空字符串a(chǎn)n empty string
??? String greeting = " Hello World ? ";?
Java允許使用符號"+"把兩個字符串連接起來
【示例2】字符串連接
String s1 = "Hello";
String s2 = "World! ";
??? String s = s1 + s2; //HelloWorld!
符號"+"把兩個字符串按給定的順序連接在一起,并且是完全按照給定的形式。
當"+"運算符兩側(cè)的操作數(shù)中只要有一個是字符串(String)類型,系統(tǒng)會自動將另一個操作數(shù)轉(zhuǎn)換為字符串然后再進行連接。
【示例3】"+"連接符
int age = 18;
String s = "age is" + age;? //s賦值為age is 18
//這種特性通常被用在輸出語句中:
System.out.println("age is" + age);
String類和常量池
1)全局常量池在每個VM中只有一份,存放的是字符串常量的引用值。
2)class常量池是在編譯的時候每個class都有的,在編譯階段,存放的是常量的符號引用。
?3)運行時常量池是在類加載完成之后,將每個class常量池中的符號引用值轉(zhuǎn)存到運行時常量池中,也就是說,每個class都有一個運行時常量池,類在解析之后,將符號引用替換成直接引用,與全局常量池中的引用值保持一致。
閱讀API文檔
1)API文檔如何閱讀
??進入JDK安裝目錄下面的doc目錄,點擊index.html即可打開API文檔。
圖1 API文檔
2)eclipse中將鼠標放到類和方法上,即可看到相關(guān)的注釋說明;再按下F2即可將注釋窗口固定。
字符串類常用的方法
字符串是我們最常使用的類。字符串類的方法我們必須非常熟悉!我們列出常用的方法,請大家熟悉。
char charAt(int ? index)
返回字符串中第index個字符
boolean ? equals(String other)
如果字符串與other相等,返回true
boolean ? equalsIgnoreCase(String other)
如果字符串與other相等(忽略大小寫),則返回true
int ? indexOf(String str)
返回從頭開始查找第一個子字符串str在字符串中的索引位置。如果未找到子字符串str,則返回-1
lastIndexOf()
返回從尾開始查找第一個子字符串str在字符串中的索引位置。如果未找到子字符串str,則返回-1
int length()
返回字符串的長度
String ? replace(char oldChar,char newChar)
返回一個新串,它是通過用?newChar?替換此字符串中出現(xiàn)的所有oldChar而生成的
boolean startsWith(String ? prefix)
如果字符串以prefix開始,則返回true
boolean endsWith(String ? prefix)
如果字符串以prefix結(jié)尾,則返回true
String substring(int ? beginIndex)
返回一個新字符串,該串包含從原始字符串beginIndex到串尾
String substring(int ? beginIndex,int endIndex)
返回一個新字符串,該串包含從原始字符串beginIndex到串尾或endIndex-1的所以字符
String toLowerCase()
返回一個新字符串,該串將原始字符串中的所有大寫字母改成小寫字母。
String toUpperCase()
返回一個新字符串,該串將原始字符串中的所有小寫字母改成大寫字母。
String trim()
返回一個新字符串,該串刪除了原始字符串頭部和尾部的空格。
【示例4】String類常用方法一
public class ? StringTest1 {
??? public static void main(String[] args) {
?????? String s1 = "core java";
?????? String s2 = "Core Java";
?????? System.out.println(s1.charAt(4));
?????? System.out.println(s2.length());
?????? System.out.println(s1.equals(s2));
?????? System.out.println(s1.equalsIgnoreCase(s2));
?????? System.out.println(s1.indexOf("java"));
?????? System.out.println(s1.indexOf("apple"));
?????? String s = s1.replace(' ', '&');
?????? System.out.println("result ? is :" + s);
??? }
}
【示例5】String類常用方法二
public class ? StringTest2 {
??? public static void main(String[] args) {
?????? String s = "";???
?????? String s1 = "How are you?";
?????? System.out.println(s1.startsWith("How"));?
?????? System.out.println(s1.endsWith("you")); ?
?????? s = s1.substring(4);?????? System.out.println(s);
?????? s = s1.substring(4,7);?? System.out.println(s);
?????? s = s1.toLowerCase();????? System.out.println(s);?
?????? s= s1.toUpperCase(); System.out.println(s);????
?????? String s2 = "? How old are you!! " ;
?????? s = s2.trim();?? System.out.println(s);?
?????? System.out.println(s2); //???
??? }
}
字符串相等的判斷
1)equals方法用來檢測兩個字符串內(nèi)容是否相等。如果字符串s和t內(nèi)容相等,則s.equals(t)返回true,否則返回false。
2)要測試兩個字符串除了大小寫區(qū)別外是否是相等的,需要使用equalsIgnoreCase方法。
3)判斷字符串是否相等不要使用"=="?
【示例6】忽略大小寫的字符串比較
"Hello".equalsIgnoreCase("hellO");//true?
【示例7】字符串的比較"=="與equals()方法
public?class?TestStringEquals ? {
????public?static?void?? main(String[] args) {
?????? String g1="北京尚學堂";
?????? String g2="北京尚學堂";
?????? String g3 =?new?? String("北京尚學堂");
?????? System.out.println(g1==g2); ??//true指向同樣的字符串常量對象
?????? System.out.println(g1==g3); ??//false? g3是新創(chuàng)建的對象
?????? System.out.println(g1.equals(g3)); ?//true? g1和g3里面的字符串內(nèi)容是一樣的
??? }
}
g1、g2、g3變量的內(nèi)存示意圖:
? ?示例7?內(nèi)存分析圖
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗,曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設計及研發(fā)工作,從小白逐漸做到工程師、高級工程師、架構(gòu)師。精通Java平臺軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數(shù)據(jù)庫從入門到精通
C-手刃移動前端和Web前端
D-J2EE從了解到實戰(zhàn)
E-Java高級框架精解
F-Linux和Hadoop?