字符串String
String基礎(chǔ)
1)String位于java.lang包中脾拆,Java程序默認(rèn)導(dǎo)入java.lang包时鸵。
2)ava字符串就是Unicode字符序列鞠抑,例如串“Java”就是4個(gè)Unicode字符J拨黔、a称杨、v始苇、a組成的砌烁。
3)Java沒有內(nèi)置的字符串類型,而是在標(biāo)準(zhǔn)Java類庫(kù)中提供了一個(gè)預(yù)定義的類String催式,每個(gè)用雙引號(hào)括起來(lái)的字符串都是String類的一個(gè)實(shí)例函喉。? ? ? ? ??
【示例1】String類的實(shí)例
String e =?""? ; //?空字符串a(chǎn)n empty string
??? String greeting = " Hello World ? ";?
Java允許使用符號(hào)"+"把兩個(gè)字符串連接起來(lái)
【示例2】字符串連接
String s1 = "Hello";
String s2 = "World! ";
??? String s = s1 + s2; //HelloWorld!
符號(hào)"+"把兩個(gè)字符串按給定的順序連接在一起,并且是完全按照給定的形式荣月。
當(dāng)"+"運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是字符串(String)類型管呵,系統(tǒng)會(huì)自動(dòng)將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接。
【示例3】"+"連接符
int age = 18;
String s = "age is" + age;? //s賦值為age is 18
//這種特性通常被用在輸出語(yǔ)句中:
System.out.println("age is" + age);
String類和常量池
1)全局常量池在每個(gè)VM中只有一份喉童,存放的是字符串常量的引用值撇寞。
2)class常量池是在編譯的時(shí)候每個(gè)class都有的,在編譯階段堂氯,存放的是常量的符號(hào)引用蔑担。
?3)運(yùn)行時(shí)常量池是在類加載完成之后,將每個(gè)class常量池中的符號(hào)引用值轉(zhuǎn)存到運(yùn)行時(shí)常量池中咽白,也就是說(shuō)啤握,每個(gè)class都有一個(gè)運(yùn)行時(shí)常量池,類在解析之后晶框,將符號(hào)引用替換成直接引用排抬,與全局常量池中的引用值保持一致。
閱讀API文檔
1)API文檔如何閱讀
??進(jìn)入JDK安裝目錄下面的doc目錄授段,點(diǎn)擊index.html即可打開API文檔蹲蒲。
圖1 API文檔
2)eclipse中將鼠標(biāo)放到類和方法上,即可看到相關(guān)的注釋說(shuō)明侵贵;再按下F2即可將注釋窗口固定届搁。
字符串類常用的方法
字符串是我們最常使用的類。字符串類的方法我們必須非常熟悉!我們列出常用的方法卡睦,請(qǐng)大家熟悉宴胧。
char charAt(int ? index)
返回字符串中第index個(gè)字符
boolean ? equals(String other)
如果字符串與other相等,返回true
boolean ? equalsIgnoreCase(String other)
如果字符串與other相等(忽略大小寫)表锻,則返回true
int ? indexOf(String str)
返回從頭開始查找第一個(gè)子字符串str在字符串中的索引位置恕齐。如果未找到子字符串str,則返回-1
lastIndexOf()
返回從尾開始查找第一個(gè)子字符串str在字符串中的索引位置瞬逊。如果未找到子字符串str显歧,則返回-1
int length()
返回字符串的長(zhǎng)度
String ? replace(char oldChar,char newChar)
返回一個(gè)新串,它是通過(guò)用?newChar?替換此字符串中出現(xiàn)的所有oldChar而生成的
boolean startsWith(String ? prefix)
如果字符串以prefix開始码耐,則返回true
boolean endsWith(String ? prefix)
如果字符串以prefix結(jié)尾追迟,則返回true
String substring(int ? beginIndex)
返回一個(gè)新字符串,該串包含從原始字符串beginIndex到串尾
String substring(int ? beginIndex,int endIndex)
返回一個(gè)新字符串骚腥,該串包含從原始字符串beginIndex到串尾或endIndex-1的所以字符
String toLowerCase()
返回一個(gè)新字符串敦间,該串將原始字符串中的所有大寫字母改成小寫字母。
String toUpperCase()
返回一個(gè)新字符串束铭,該串將原始字符串中的所有小寫字母改成大寫字母廓块。
String trim()
返回一個(gè)新字符串,該串刪除了原始字符串頭部和尾部的空格契沫。
【示例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方法用來(lái)檢測(cè)兩個(gè)字符串內(nèi)容是否相等带猴。如果字符串s和t內(nèi)容相等,則s.equals(t)返回true懈万,否則返回false拴清。
2)要測(cè)試兩個(gè)字符串除了大小寫區(qū)別外是否是相等的,需要使用equalsIgnoreCase方法会通。
3)判斷字符串是否相等不要使用"=="?
【示例6】忽略大小寫的字符串比較
"Hello".equalsIgnoreCase("hellO");//true?
【示例7】字符串的比較"=="與equals()方法
public?class?TestStringEquals ? {
????public?static?void?? main(String[] args) {
?????? String g1="北京尚學(xué)堂";
?????? String g2="北京尚學(xué)堂";
?????? String g3 =?new?? String("北京尚學(xué)堂");
?????? System.out.println(g1==g2); ??//true指向同樣的字符串常量對(duì)象
?????? System.out.println(g1==g3); ??//false? g3是新創(chuàng)建的對(duì)象
?????? System.out.println(g1.equals(g3)); ?//true? g1和g3里面的字符串內(nèi)容是一樣的
??? }
}
g1口予、g2、g3變量的內(nèi)存示意圖:
? ?示例7?內(nèi)存分析圖
「全棧Java筆記」是一部能幫大家從零到一成長(zhǎng)為全棧Java工程師系列筆記涕侈。筆者江湖人稱 Mr. G沪停,10年Java研發(fā)經(jīng)驗(yàn),曾在神州數(shù)碼裳涛、航天院某所研發(fā)中心從事軟件設(shè)計(jì)及研發(fā)工作木张,從小白逐漸做到工程師、高級(jí)工程師端三、架構(gòu)師舷礼。精通Java平臺(tái)軟件開發(fā),精通JAVAEE郊闯,熟悉各種流行開發(fā)框架且轨。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數(shù)據(jù)庫(kù)從入門到精通
C-手刃移動(dòng)前端和Web前端
D-J2EE從了解到實(shí)戰(zhàn)
E-Java高級(jí)框架精解
F-Linux和Hadoop?