復雜的事情要簡單做;   簡單的事情要認真做;   認真的事情要重復做;   重復的事情要創造性地做。

          信心 恒心 決心 創意 樂意

          も軍魂ミ 心系java

          Java的魅力:跨平臺、動態的Web、Internet計算 Java在Web、移動設備以及云計算方面前景廣闊 我的java編程不是夢!!! 俗話說的好:“授人以魚不如授人以漁”.
          posts - 10, comments - 12, trackbacks - 0, articles - 5
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          淺談java中String類

          Posted on 2010-11-08 14:41 セ軍魂ミ 閱讀(2562) 評論(0)  編輯  收藏

          String:

                        java中的字符串。 String類是不可變的,對String類的任何改變,都是返回一個新的String類對象。 String 對象是 System.Char 對象的有序集合,用于表示字符串。String 對象的值是該有序集合的內容,并且該值是不可變的這樣的話把String類的引用傳遞給一個方法,該方法對String的任何改變,對原引用指向的對象沒有任何影響,
           String  s1 = "abc";  
              String  s2= "def";   
              String  s2 = s1;

           //這樣操作之后s1是"abc",s2也是"abc".

                     String 有兩種賦值方式:直接賦值:String  s1 = "abc"; 
                                                             ②用new開辟空間:String str1 = new String(“abc”) ;

                區別:①先看下面這個程序,看結果是否相等
                          public static void main(String args[]) {
                                      //都是采用直接賦值的方式
                                      String str1 = "abc";
                                      //String能否采用new的方式賦值呢?
                                      String str2 = new String("abc");
                                      String str3 = str2;
                                      System.out.println(str1);
                                      System.out.println(str2);
                                      //String該如何比較是否相等呢
                                      System.out.println(str1==str2);
                                      System.out.println(str2==str3);
                                    }

          運行結果:abc
                             abc
                             false
                             true

          出現上述運行結果的原因: “==”如果直接應用在字符串上進行比較,則表示比較的是內存地址的值。在
           String str1="abc";證明棧內存中有個str1,在堆內存中的內容就是abc,只會產生一個對象;而在String str1 = new String(“abc”) ;代碼中我們知道“abc”是匿名對象,那么在堆內存中就會有塊空間是“abc”,緊接著new String("abc") 使用new在堆內存中又開辟了一個空間“abc”,最后String str1 = new String("abc") ;代碼將最后生成的“abc”內存地址指向str1,最早的一個“abc”就沒使用上。 即使用new 關鍵字開辟,則會產生兩個對象 。
            


                     ②直接賦值法,在堆內存中只會產生一個對象,而用new開辟空間法,最后在堆內存中是產生了兩個對象。

                    String str1="abc";                                                                                                                 

           
          String str1 = new String("abc") ;




                    String 類提供的成員執行以下操作有:比較 String 對象;返回 String 對象內字符或字符串的索引;復制 String 對象的值;分隔字符串或組合字符串;修改字符串的值;將數字、日期和時間或枚舉值的格式設置為字符串;對字符串進行規范化。
                       使用 Compare、CompareOrdinal、CompareTo、Equals、EndsWith 和 StartsWith 方法進行比較。                                                
                          使用  IndexOf、IndexOfAny、LastIndexOf 和 LastIndexOfAny 方法可獲取字符串中子字符串或 Unicode 字符的索引。
                          使用 Copy 和 CopyTo 可將字符串或子字符串復制到另一個字符串或 Char 類型的數組。
                       使用 Substring 和 Split 方法可通過原始字符串的組成部分創建一個或多個新字符串;
                          使用 Concat 和 Join 方法可通過一個或多個子字符串創建新字符串。
                          使用 Insert、Replace、Remove、PadLeft、PadRight、Trim、TrimEnd 和 TrimStart 可修改字符串的全部或部分。 
                          使用 ToLower、ToLowerInvariant、ToUpper 和 ToUpperInvariant 方法可更改字符串中 Unicode 字符的大小寫。 
                          使用 Format, 可將字符串中的一個或多個格式項占位符替換為一個或多個數字、日期和時間或枚舉值的文本表示形式。
                          使用 Length 屬性可獲取字符串中 Char 對象的數量;使用 Chars 屬性可訪問字符串中實際的 Char 對象。
                          使用 IsNormalized 方法可測試某個字符串是否已規范化為特定的范式。使用 Normalize 方法可創建規范化為特定范式的字符串。

             

                    "=="與equals的區別:“==”表示比較的是內存地址的值
                                                            equals表示比較兩個字符串的內容是否相等

          若把上面的程序改為如下程序,再看運行結果是什么:
             public static void main(String args[]) {
                                      //都是采用直接賦值的方式
                                      String str1 = "abc";
                                      //String能否采用new的方式賦值呢?
                                      String str2 = new String("abc");
                                      String str3 = str2;
                                      System.out.println(str1);
                                      System.out.println(str2);
                                      //String該如何比較是否相等呢
                                      System.out.println(str1.equals(str2);
                                      System.out.println(str2.equals(str3);
                                    }
            
          運行結果:abc
                             abc
                             true
                             true


          總結:這些就是我對java中String類的初步認識,希望能給大家帶來一定的幫助,若有什么不對的,也希望大家給與提出建議,我也從中學習、體會,謝謝!

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 军事| 融水| 炎陵县| 西宁市| 博白县| 齐河县| 马关县| 温州市| 昭平县| 越西县| 苍南县| 峡江县| 建始县| 崇信县| 绥中县| 双辽市| 白沙| 纳雍县| 根河市| 化德县| 宁陕县| 库尔勒市| 隆德县| 普定县| 南阳市| 满城县| 施甸县| 濮阳县| 迁西县| 哈巴河县| 宁津县| 于田县| 翁牛特旗| 洱源县| 安西县| 黔南| 安义县| 界首市| 潢川县| 泰宁县| 句容市|