麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

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

2019-11-26 16:09:58
字體:
供稿:網(wǎng)友

1.創(chuàng)建對象

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

復(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
         }
 }

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

String str3 =new String("abc");

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

String str ="ab"+"cd";

創(chuàng)建了幾個對象?

答:一個。"ab"和"cd"都是常量被放在字符串池中。因此只創(chuàng)建了一個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)建對象并加入字符串池
        String str4 =str1+str2;
        String str5 =str1+"cd";
        System.out.println(str3==str4);//false
        System.out.println(str3==str5);//false

        }
}

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

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

復(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)建對象并加入字符串池
        String str4 =str1+str2;
        String str5 =str1+"cd";
        System.out.println(str3==str4);//true
        System.out.println(str3==str5);//true

        }
}

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

將上面的代碼稍加改變看看會出現(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)建對象并加入字符串池
         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ù),因此性質(zhì)和變量一樣。只能在運(yùn)行時被創(chuàng)建。

2.字符串方法

獲取方法

•int length()
•char charAt(int index)根據(jù)位置獲取某個字符
•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()

對兩個字符串進(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為子串的長度
            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;
    }
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91看片王| 午夜久久视频 | 一级啪啪片 | 国产在线久 | 成人毛片免费视频 | 天堂成人国产精品一区 | 国产一区二区午夜 | 欧美黄 片免费观看 | 日本a级一区 | 久久久久久久久国产 | 毛片视频网站在线观看 | 成年人观看免费视频 | 欧美中文字幕一区二区 | 精品国产一区二区三区免费 | 91久久夜色精品国产网站 | 91午夜免费视频 | wwwxxx国产 | 欧美激情性色生活片在线观看 | 久久国产精品久久久久久电车 | 久久久电影电视剧免费看 | 一区二区三区在线观看视频 | 欧美精品激情在线 | 亚州综合图片 | 一级片免费在线 | 亚洲99| 精品亚洲午夜久久久久91 | 欧美一级精品片在线看 | 末成年女av片一区二区 | 国产乱乱视频 | 中国女人内谢69xxxx天美 | 久草在线综合网 | 久久精品片 | 国产在线播放一区二区 | 综合毛片 | 色a综合 | 精品久久久久久久久久中文字幕 | 欧美一级做一a做片性视频 日韩黄色片免费看 | 777sesese| 深夜免费视频 | 中文字幕爱爱视频 | 免费一区区三区四区 |