java -> String類

來源:互聯網
上載者:User

標籤: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類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.