最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java字符串詳解的實(shí)例介紹

 更新時(shí)間:2013年04月27日 09:38:41   作者:  
本篇文章介紹了,在Java中關(guān)于字符串詳解一些實(shí)例操作,需要的朋友參考下

1.創(chuàng)建對(duì)象

  對(duì)于java程序中的字符串直接常量,JVM會(huì)使用一個(gè)字符串池來(lái)保存它們。當(dāng)?shù)谝淮问褂媚硞€(gè)字符串直接常量時(shí),JVM會(huì)將它放入字符串池中進(jìn)行緩存。在一般情況下,字符串池中的字符串對(duì)象不會(huì)被垃圾回收。當(dāng)程序再次需要使用該字符串時(shí),無(wú)需重新創(chuàng)建一個(gè)新的字符串就可以直接讓引用變量直接指向字符串中已有的字符串。而使用new操作創(chuàng)建的字符串對(duì)象不指向字符串池中的對(duì)象,但是可以使用intern()方法使其指向字符串池中的對(duì)象。

復(fù)制代碼 代碼如下:

public class StringDemo1 {
     public static void main(String[] args){
         String str1 ="abc";
         String str2 ="abc";
         String str3 =new String("abc");
         System.out.println(str1==str2);//true
         System.out.println(str1==str3);//false
         }
 }

常見問(wèn)題
復(fù)制代碼 代碼如下:

String str3 =new String("abc");

創(chuàng)建了幾個(gè)對(duì)象?
答:兩個(gè)
復(fù)制代碼 代碼如下:

String str ="ab"+"cd";

創(chuàng)建了幾個(gè)對(duì)象?

答:一個(gè)。"ab"和"cd"都是常量被放在字符串池中。因此只創(chuàng)建了一個(gè)abcd字符串池中并將字符串a(chǎn)bcd保存在字符串池中。

復(fù)制代碼 代碼如下:

public class StringDemo1 {
    public static void main(String[] args){
        String str1 ="ab";
        String str2 ="cd";
        String str3 ="ab"+"cd";//創(chuàng)建對(duì)象并加入字符串池
        String str4 =str1+str2;
        String str5 =str1+"cd";
        System.out.println(str3==str4);//false
        System.out.println(str3==str5);//false

        }
}

由上面代碼可知:只有引號(hào)包含文本的方式才創(chuàng)建的String對(duì)象才能被添加到字符串池中,對(duì)于包含new方法新建對(duì)象的”+“連接表達(dá)式他所產(chǎn)生的新對(duì)象不會(huì)被加到字符串池中。

但是有一種情況需要引起我們的注意:

復(fù)制代碼 代碼如下:

public class StringDemo1 {
    private final static String str1 ="ab";
    private final static String str2 ="cd";
    public static void main(String[] args){
        String str3 ="ab"+"cd";//創(chuàng)建對(duì)象并加入字符串池
        String str4 =str1+str2;
        String str5 =str1+"cd";
        System.out.println(str3==str4);//true
        System.out.println(str3==str5);//true

        }
}

這又是為什么呢?原因是這樣的,對(duì)于常量來(lái)講。它的值是固定的,因此在編譯期間就能被確定了。

將上面的代碼稍加改變看看會(huì)出現(xiàn)什么情況。

復(fù)制代碼 代碼如下:

public class StringDemo1 {
     private final static String str1 ;
     private final static String str2;
     static{
     str1="ab";
     str2="cd";
     }
     public static void main(String[] args){
         String str3 ="ab"+"cd";//創(chuàng)建對(duì)象并加入字符串池
         String str4 =str1+str2;
         String str5 =str1+"cd";
         System.out.println(str3==str4);//false
         System.out.println(str3==str5);//false

         }
 }

str1和str2雖然被定義為常量,但是她們美譽(yù)馬上賦值,在運(yùn)算出s的值前,她們何時(shí)被賦值,以及被賦什么值都是變數(shù),因此性質(zhì)和變量一樣。只能在運(yùn)行時(shí)被創(chuàng)建。

2.字符串方法

獲取方法

•int length()
•char charAt(int index)根據(jù)位置獲取某個(gè)字符
•int indexOf(int ch) 返回的是ch在字符串中第一次出現(xiàn)的位置
•int indexOf(int ch,int fromIndex)從fromIndex指定位置開始,獲取ch在字符串中第一次出現(xiàn)的位置
•int indexOf(String str)
•int indexOf(String str,int fromIndex)
•int lastIndexOf(int ch)

判斷方法

•boolean contains(String str) 另一種判斷方法:if(str.index(str)!=-1)
•boolean startsWith(String str)
•boolean endsWith(String str)
•bolean isEmpty(String str)
•boolean equals(String str)
•boolean equalsIgnoreCase(String str);

轉(zhuǎn)換方法

•將字符數(shù)組轉(zhuǎn)換為字符串

構(gòu)造函數(shù)

1.String(char[] chs)

2.String(char[] chs,offset,count)將字符數(shù)組中的一部分轉(zhuǎn)成字符串。

靜態(tài)方法

1.static String copyValueOf(char[] chs)

2.static String copyValueOf(char[] chs,int offset,int count)

3.static String valueOf(char[] )

4.static String valueOf(char[] chs,int offset,int count)

•將字符串轉(zhuǎn)換成字符數(shù)組

char[] toCharArray

•將字符數(shù)組轉(zhuǎn)換成字符串
•將字符串轉(zhuǎn)換成字節(jié)數(shù)組
byte[] toBytes

替換方法

String replace(olderStr,newStr)

切割方法

String split(regex)

獲取子串[編輯分類]

String subString(begin)

String subString(begin,end)包含頭不包含尾

將字符串轉(zhuǎn)換成大小寫Android(10)

String toUpperCase()

String toLowerCase()

將字符串兩端的空格去除

String trim()

對(duì)兩個(gè)字符串進(jìn)行自然順序的比較

int compareTo(String str)

3.String 練習(xí)

1.字符串翻轉(zhuǎn)

復(fù)制代碼 代碼如下:

public class StringDemo2 {
     public static void main(String[] args){
         String str = "avdkfasjks";
         reverseMethod_1(str);
     }
     public static void reverseMethod_1(String str){
         for(int i=str.length();i>0;i--){
             System.out.print(str.charAt(i-1));
         }
     }
 }

2.獲取最大相同子串
復(fù)制代碼 代碼如下:

public class StringDemo2 {
    public static void main(String[] args){
        String str1 = "avdkfasjks";
        String str2 = "ewavdrtte";
        System.out.println(commonMaxSubstring(str1, str2));
    }
    public static String commonMaxSubstring(String str1,String str2){
        int len = str1.length();
        String str3 = null;
        outer:
            //i為子串的長(zhǎng)度
            for(int i = len;i>0;i--){
                //j為子串的腳標(biāo)
                for(int j=0;j<len-i+1;j++){
                    str3=str1.substring(j,j+i);
                    if(str2.contains(str3))
                        break outer;

                }
            }
        return str3;
    }
}

相關(guān)文章

  • Java線程之間數(shù)據(jù)傳遞的實(shí)現(xiàn)示例(4種)

    Java線程之間數(shù)據(jù)傳遞的實(shí)現(xiàn)示例(4種)

    我們經(jīng)常會(huì)遇到父子線程數(shù)據(jù)傳遞(非調(diào)用參數(shù))的場(chǎng)景,本文主要介紹了Java線程之間數(shù)據(jù)傳遞的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作

    Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作

    這篇文章主要介紹了Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫(kù)默認(rèn)值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java中Javers?比較兩個(gè)類的差異

    java中Javers?比較兩個(gè)類的差異

    本文主要介紹了Javers?比較兩個(gè)類的差異,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Spring Data JPA實(shí)現(xiàn)動(dòng)態(tài)條件與范圍查詢實(shí)例代碼

    Spring Data JPA實(shí)現(xiàn)動(dòng)態(tài)條件與范圍查詢實(shí)例代碼

    本篇文章主要介紹了Spring Data JPA實(shí)現(xiàn)動(dòng)態(tài)條件與范圍查詢實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-06-06
  • springboot過(guò)濾器執(zhí)行兩次的解決及跨域過(guò)濾器問(wèn)題

    springboot過(guò)濾器執(zhí)行兩次的解決及跨域過(guò)濾器問(wèn)題

    這篇文章主要介紹了springboot過(guò)濾器執(zhí)行兩次的解決及跨域過(guò)濾器問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • maven實(shí)現(xiàn)docker自動(dòng)化部署插件的使用

    maven實(shí)現(xiàn)docker自動(dòng)化部署插件的使用

    本文主要介紹了maven實(shí)現(xiàn)docker自動(dòng)化部署插件的使用,分享給大家,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 示例解析java面向?qū)ο缶幊谭庋b與訪問(wèn)控制

    示例解析java面向?qū)ο缶幊谭庋b與訪問(wèn)控制

    這篇文章主要為大家介紹了java封裝與訪問(wèn)控制的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 淺析Bean?Searcher?與?MyBatis?Plus?區(qū)別介紹

    淺析Bean?Searcher?與?MyBatis?Plus?區(qū)別介紹

    Bean?Searcher號(hào)稱任何復(fù)雜的查詢都可以一行代碼搞定,但?Mybatis?Plus?似乎也有類似的動(dòng)態(tài)查詢功能,最近火起的?Bean?Searcher?與?MyBatis?Plus?倒底有啥區(qū)別?帶著這個(gè)問(wèn)題一起通過(guò)本文學(xué)習(xí)下吧
    2022-05-05
  • JAVA十大排序算法之基數(shù)排序詳解

    JAVA十大排序算法之基數(shù)排序詳解

    這篇文章主要介紹了java中的基數(shù)排序,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java面向?qū)ο笾^承的概念詳解

    Java面向?qū)ο笾^承的概念詳解

    這篇文章主要介紹了Java面向?qū)ο笾^承的概念詳解,Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,繼承是實(shí)現(xiàn)面向?qū)ο缶幊痰幕A(chǔ)之一。通過(guò)繼承,我們可以使代碼更具可讀性、可重用性和可維護(hù)性,從而提高程序的效率和可靠性,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

芮城县| 湖州市| 呼伦贝尔市| 高陵县| 化德县| 滦南县| 通城县| 邯郸县| 安岳县| 安国市| 凤阳县| 疏附县| 庆云县| 湾仔区| 贵南县| 肇州县| 稻城县| 钦州市| 盐边县| 长武县| 大城县| 积石山| 绥中县| 甘谷县| 定西市| 那曲县| 共和县| 赤水市| 濮阳市| 奉贤区| 台东市| 沁阳市| 丰县| 安国市| 通江县| 石狮市| 天镇县| 南川市| 互助| 临江市| 和平县|