字符串的長(zhǎng)度:
String s6 = new String("abcde");
System.out.println("s6.length():" + s1.length());
結(jié)果:5
字符串的特點(diǎn):一旦被賦值秽浇,就不能改變,但是引用可以改變甚负。
public class StringDemo {
public static void main(String[] args) {
String s = "hello";
s += "world";
System.out.println("s:" + s);
結(jié)果:helloworld
String s = new String(“hello”)和 String s = “hello”;的區(qū)別?String字面值對(duì)象和構(gòu)造方法創(chuàng)建對(duì)象的區(qū)別
有柬焕。前者會(huì)創(chuàng)建2個(gè)對(duì)象,后者創(chuàng)建1個(gè)對(duì)象梭域。
- ==:比較引用類型比較的是地址值是否相同
- equals:比較引用類型默認(rèn)也是比較地址值是否相同斑举,而String類重寫了equals()方法,比較的是內(nèi)容是否相同病涨。
public class StringDemo2 {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = "hello";
System.out.println(s1 == s2);// false
System.out.println(s1.equals(s2));// true
}
}
- String類的判斷功能:
- boolean equals(Object obj):比較字符串的內(nèi)容是否相同,區(qū)分大小寫
- boolean equalsIgnoreCase(String str):比較字符串的內(nèi)容是否相同,忽略大小寫
- boolean contains(String str):判斷大字符串中是否包含小字符串
- boolean startsWith(String str):判斷字符串是否以某個(gè)指定的字符串開頭
- boolean endsWith(String str):判斷字符串是否以某個(gè)指定的字符串結(jié)尾
- boolean isEmpty():判斷字符串是否為空富玷。
注意:
String s = "";//對(duì)象存在,所以可以調(diào)方法
String s = null;//對(duì)象不存在既穆,不能調(diào)方法
String類的獲取功能
- int length():獲取字符串的長(zhǎng)度赎懦。
- char charAt(int index):獲取指定索引位置的字符
- int indexOf(int ch):返回指定字符在此字符串中第一次出現(xiàn)處的索引。
// 為什么這里是int類型幻工,而不是char類型?
// 原因是:'a'和97其實(shí)都可以代表'a'励两。如果里面寫char,就不能寫數(shù)字97了 - int indexOf(String str):返回指定字符串在此字符串中第一次出現(xiàn)處的索引。
- int indexOf(int ch,int fromIndex):返回指定字符在此字符串中從指定位置后第一次出現(xiàn)處的索引囊颅。
- int indexOf(String str,int fromIndex):返回指定字符串在此字符串中從指定位置后第一次出現(xiàn)處的索引当悔。
- String substring(int start):從指定位置開始截取字符串,默認(rèn)到末尾傅瞻。
- String substring(int start,int end):從指定位置開始到指定位置結(jié)束截取字符串
/*
- 需求:統(tǒng)計(jì)一個(gè)字符串中大寫字母字符,小寫字母字符盲憎,數(shù)字字符出現(xiàn)的次數(shù)嗅骄。(不考慮其他字符)
- 舉例:
"Hello123World"
- 結(jié)果:
大寫字符:2個(gè)
小寫字符:8個(gè)
數(shù)字字符:3個(gè)
- 分析:
前提:字符串要存在
A:定義三個(gè)統(tǒng)計(jì)變量
bigCount=0
smallCount=0
numberCount=0
B:遍歷字符串,得到每一個(gè)字符焙畔。
length()和charAt()結(jié)合
C:判斷該字符到底是屬于那種類型的
大:bigCount++
械Ф痢:smallCount++
數(shù)字:numberCount++
這道題目的難點(diǎn)就是如何判斷某個(gè)字符是大的,還是小的宏多,還是數(shù)字的儿惫。
ASCII碼表:
0 48
A 65
a 97
雖然,我們按照數(shù)字的這種比較是可以的伸但,但是想多了肾请,有比這還簡(jiǎn)單的
char ch = s.charAt(x);
if(ch>='0' && ch<='9') numberCount++
if(ch>='a' && ch<='z') smallCount++
if(ch>='A' && ch<='Z') bigCount++
D:輸出結(jié)果。
- 練習(xí):把給定字符串的方式更胖,改進(jìn)為鍵盤錄入字符串的方式铛铁。
*/
public class StringTest2 {
public static void main(String[] args) {
//定義一個(gè)字符串
String s = "Hello123World";
//定義三個(gè)統(tǒng)計(jì)變量
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
//遍歷字符串,得到每一個(gè)字符却妨。
for(int x=0; x<s.length(); x++){
char ch = s.charAt(x);
//判斷該字符到底是屬于那種類型的饵逐,char類型會(huì)轉(zhuǎn)成int類型
if(ch>='a' && ch<='z'){
smallCount++;
}else if(ch>='A' && ch<='Z'){
bigCount++;
}else if(ch>='0' && ch<='9'){
numberCount++;
}
}
//輸出結(jié)果。
System.out.println("大寫字母"+bigCount+"個(gè)");
System.out.println("小寫字母"+smallCount+"個(gè)");
System.out.println("數(shù)字"+numberCount+"個(gè)");
}
}
String的轉(zhuǎn)換功能:
- byte[] getBytes():把字符串轉(zhuǎn)換為字節(jié)數(shù)組彪标。
- char[] toCharArray():把字符串轉(zhuǎn)換為字符數(shù)組倍权。
- static String valueOf(char[] chs):把字符數(shù)組轉(zhuǎn)成字符串。
- static String valueOf(int i):把int類型的數(shù)據(jù)轉(zhuǎn)成字符串捞烟。
//注意:String類的valueOf方法可以把任意類型的數(shù)據(jù)轉(zhuǎn)成字符串薄声。 - String toLowerCase():把字符串轉(zhuǎn)成小寫。
- String toUpperCase():把字符串轉(zhuǎn)成大寫题画。
- String concat(String str):把字符串拼接默辨。