1. 程式人生 > >java -> String類

java -> String類

地址 contains abc subst 根據 ’b’ 字符串替換 convert 返回

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類