標籤:equal java 程式 依據 不包含 空格 color == boolean
String類String類的概述
查閱API中的String類的描述,發現String 類代表字串。Java 程式中的所有字串字面值(如 "abc" )都作為此類的執行個體實現。
//示範字串
String str = "oracle";
str = "甲骨文";
繼續查閱API發現說字串是常量;它們的值在建立之後不能更改,這是什麼意思呢?其實就是說一旦這個字串確定了,那麼就會在記憶體地區中就產生了這個字串。字串本身不能改變,但str變數中記錄的地址值是可以改變的。
字串的本質是一個字元的數組。
繼續查API發現,字串有大量的重載的構造方法。通過String類的構造方法可以完成字串對象的建立,那麼,通過使用雙引號的方式建立對象與new的方式建立對象,有什麼不同呢?
String s3 = "abc";
String s4 = new String("abc");
System.out.println(s3==s4);//false
System.out.println(s3.equals(s4));//true,
//因為String重寫了equals方法,建立了字串自己的判斷相同的依據(通過內容)
s3和s4的建立方式有什麼不同呢?
s3建立,在記憶體中只有一個對象。這個對象在字串常量池中
s4建立,在記憶體中有兩個對象。一個new的對象在堆中,一個字串本身對象,在字串常量池中
String類構造方法
構造方法是用來完成String對象的建立
String s1 = new String(); //建立String對象,字串中沒有內容
byte[] bys = new byte[]{97,98,99,100};
String s2 = new String(bys); // 建立String對象,把數組元素作為字串的內容
String s3 = new String(bys, 1, 3); //建立String對象,把一部分數組元素作為字串的內容,參數offset為數組元素的起始索引位置,參數length為要幾個元素
char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};
String s4 = new String(chs); //建立String對象,把數組元素作為字串的內容
String s5 = new String(chs, 0, 3);//建立String對象,把一部分數組元素作為字串的內容,參數offset為數組元素的起始索引位置,參數count為要幾個元素
String s6 = new String(“abc”); //建立String對象,字串內容為abc
String類的方法尋找
String類中有很多的常用的方法,我們在學習一個類的時候,不要盲目的把所有的方法嘗試去使用一遍,這時我們應該根據這個對象的特點分析這個對象應該具備那些功能,這樣大家應用起來更方便。
字串是一個對象,那麼它的方法必然是圍繞操作這個對象的資料而定義的。我們想想字串中有哪些功能呢?
字串中有多少個字元?
String str = "abcde";
int len = str.length();
System.out.println("len="+len);
擷取部分字串。
String str = "abcde";
String s1 = str.substring(1); //返回一個新字串,內容為指定位置開始到字串末尾的所有字元
String s2 = str.substring(2, 4);//返回一個新字串,內容為指定位置開始到指定位置結束所有字元
System.out.println("str="+str);
System.out.println("s1="+s1);
System.out.println("s2="+s2);
1.4 String類中方法尋找練習
前面給大家簡單介紹了幾個字串中常用的方法,這個過程中主要讓大家學會如何去查閱API,如何找到自己想用的方法。接下來我們來練習下字串方法的尋找。
字串是否以指定字串開頭。結尾同理。區分大小寫
String str = "StringDemo.java";
boolean b1 = str.startsWith("Demo");//判斷是否以給定字串開頭
boolean b2 = str.startsWith("String");
boolean b3 = str.endsWith("java");//判斷是否以給定字串結尾
字串中是否包含另一個字串。
String str = "abcde";
int index = str.indexOf(“bcd”); //判斷是否包含指定字串,包含則返回第一次出現該字串的索引,不包含則返回-1
boolean b2 = str.contains("bcd");//判斷是否包含指定字串,包含返回true,不包含返回false
將字串轉成一個字元數組。或者位元組數組。
String str = "abcde";
char[] chs = str.toCharArray();
byte[] bytes = str.getBytes();
判斷兩個字串中的內容是否相同
String str = "abcde";
String str2 = "abcde";
String str3 = "hello";
boolean b1 = str.equals(str2);
boolean b2 = str.equals(str3);
擷取該字串對象中的內容
String str = new String("hello");
System.out.println( str.toString() );
System.out.pintln( str );
直接列印參考型別變數時,預設調用該類型進行重寫後的toString方法
下面的需求所對應的方法,要求大家自己動手在API中尋找,並進行方法使用。
判斷該字串的內容是否為空白的字串
str.isEmpty();
擷取給定的字元,在該字串中第一次出現的位置
str.indexOf(str1);
擷取該字串中指定位置上的字元
str.charAt(index);
把該字串轉換成 小寫字串
str.toLowerCase();
把該字串轉換成 大寫字串
str.toUpperCase();
在該字串中,將給定的舊字元,用新字元替換
str.replace(char_old , char_new);
在該字串中, 將給定的舊字串,用新字串替換
str.replace(str_old , str_new);
去除字串兩端空格,中間的不會去除,返回一個新字串
str.trim();
String類方法使用練習
l 題目一:擷取指定字串中,大寫字母、小寫字母、數位個數。
l 思路:1.為了統計大寫字母、小寫字母、數位個數。建立3個計數的變數。
2.為了擷取到字串中的每個字元,進行字串的遍曆,得到每個字元。
3.對得到的字元進行判斷,如果該字元為大寫字母,則大寫字母個數+1;如果該字元為小寫字母,則小寫字母個數+1;如果該字元為數字,則數字個數+1。
4.顯示大寫字母、小寫字母、數位個數
l 代碼:
public static void method(String str){
int bigCount = 0; //大寫字母的個數
int smallCount = 0; //小寫字母的個數
int numberCount = 0; //數位個數
for (int i=0; i < str.length(); i++) {
char ch = str.charAt(i); //擷取指定位置上的字元
if (ch>=’A’ && ch<=’Z’) {
bigCount++;
} else if (ch>=’a’ && ch<=’z’) {
smallCount++;
} else if (ch>=’0’ && ch<=’9’) {
numberCount++;
}
}
System.out.println("大寫字母個數:"+bigCount);
System.out.println("小寫字母個數:"+smallCount);
System.out.println("數字個數:"+numberCount);
}
l 題目二:將字串中,第一個字母轉換成大寫,其他字母轉換成小寫,並列印改變後的字串。
l 思路:1.把字串分為兩個部分,第一部分為字串中第一個字母,第二部分為剩下的字串。
2.把第一部分字串轉換成大寫字母,把第二部分字串轉換成小寫字母
3.把兩部分字串串連在一起,得到一個完整的字串
l 代碼:
public static String convert(String str){
//擷取第一部分為字串
String start = str.substring(0,1);
//擷取第二部分為字串
String end = str.substring(1);
//把第一部分字串轉換成大寫字母,把第二部分字串轉換成小寫字母
String big = start.toUpperCase();
String small = end.toLowerCase();
//把兩部分字串串連在一起,得到一個完整的字串
return big+small;
}
l 題目三:查詢大字串中,出現指定小字串的次數。如“hellojava,nihaojava,javazhenbang”中查詢出現“java”的次數。
l 思路:1.在大串中,尋找小串出現的位置,出現了就次數+1
2.在上次小串出現位置的後面繼續尋找,需要更改大串的內容為上次未查詢到的字串。
3.回到第一步,繼續尋找小串出現的位置,直到大串中查詢不到小串為止
l 代碼:
public static int getCount(String big, String small){
int count = 0; //出現小串的次數
int index = -1;//出現小串的位置
/*
while的迴圈條件三步驟:
步驟一. big.indexOf(small) 擷取小串在大串中出現的位置
步驟二. 把小串出現的位置,賦值給變數index
步驟三. 判斷出現的位置是否為-1, 如果位置等於-1,說明大串中已經查詢不到小串了;如果位置不等於-1,那麼,進行迴圈,完成次數累加與修改大串的操作
*/
while ((index = big.indexOf(small)) != -1 ){
count++;//出現次數+1
//更改大串內容
big = big.substring(index+1);
}
return count;
}
java -> String類