java -> String類
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類