String 的常用操作
阿新 • • 發佈:2019-02-16
String 類,我可以不負責的說在 Java 中這個類應該是使用最頻繁的類了。然而關於它的常用的操作,我卻不甚瞭解。整理這個東西很反人性的,這些方法,你看到他的時候感覺很簡單,但是真正用的時候還是不太會,還是會藉助網路,今天我就來強行整理一波,不求全,但求精。
先說說 String 物件的構造器,建立一個字元創可以使用如下方法
String s = "123"; String s1 = new String("123"); char[] value = {'1','2','3'}; String s2 = new String(value); System.out.println(s2); // 123 char[] value1 = {'0','1','2','3','4'}; String s3 = new String(value1,1,3); // 從哪裡開始,取幾位 System.out.println(s3); //123 StringBuilder sb = new StringBuilder("123"); String s4 = new String(sb); System.out.println(s4); //123
我就提一下,為什麼人家類建立物件都用 new ,而 String 可以直接賦值呢?s 和 s1 的區別到底在哪呢?這樣設計的思路還是因為 String 的超高使用頻率,為了節省空間,s 的建立過程為在記憶體中建立一個 “123” 這個 String,然後將引用賦給 s ,如果這個時候還有一條語句 String s5 = “123”,那麼 JVM 將不再建立 “123”,而是直接將第一個 “123” 的引用賦給 s5,也就是說 s 和 s5 使用同一塊記憶體,但是使用 new 建立就不一樣,不論之前有沒有,照樣在堆中開闢新的空間 。
下面就看看常用的方法有那些吧!
基礎篇
String s = "I don't like JAVA !"; // 返回字串的長度,注意和陣列的length屬性的區別呦 ! int length = s.length(); System.out.println(length); // 19 // 返回某個字元在字串中的位置,即陣列下標 int position = s.indexOf('!'); System.out.println(position); // 18 // 返回指定下標的字元 char charAt = s.charAt(0); System.out.println(charAt); // I // 求子串 引數為下標的起止位置,含前不含後。尾下標可以預設不寫 String substring = s.substring(13, 19); System.out.println(substring); // JAVA ! // 將字串轉換為 大寫,相應的還有轉換為小寫 toLowerCase() String s1 = s.toUpperCase(); System.out.println(s1); // I DON'T LIKE JAVA !
提高篇
// 字串的替換,前為舊串,後為新串。 String s2 = s.replace("don't", "do"); System.out.println(s2); // I do like JAVA ! // 去除前後空格 String trim =s.trim(); System.out.println(trim); // I don't like JAVA ! // 使用指定的語言環境、格式字串和引數返回一個格式化字串。 String format = String.format("請說出真心話: %s", s); System.out.println(format); // 請說出真心話: I don't like JAVA ! // 以指定字串進行分割字串,得到字串陣列。 String[] split = s.split(" "); for (int i = 0; i < split.length; i++) { System.out.print(split[i]); // Idon'tlikeJAVA! } // 將一個字串轉換成位元組陣列,得到一個系統預設的編碼格式的位元組陣列。 byte[] bytes = s.getBytes(); // 將一個字串轉換成字元陣列 ,返回的陣列中是一個個的字元。 char[] array = s.toCharArray();
鬱悶篇
不知道你們是怎麼樣的,我在寫程式碼的時候總是會不自覺地使用 “==” 來比較兩個字串是否相等。雖然我明確的知道這是不對的,我想還是因為我程式碼寫的少… ,所以你們記住了啊,要使用 equals 方法的!給個例子,自己感受感受區別。
String s3 = "123"; String s4 = new String("123"); String s5 = "123"; System.out.println(s3 == s4); // false System.out.println(s3 == s5); // true System.out.println(s3.equals(s4)); // true
最後來看一看基本型別和字串之間的相互轉化。
String s3 = "123"; int num = Integer.parseInt(s3); System.out.println(num); // 123 String string = String.valueOf(num); System.out.println(string); // 123
套路就是想得到基本資料型別,就使用對應包裝類呼叫包裝類的 praseXXX() 方法。想得到字串就使用 String 呼叫 String 類的靜態過載方法 valueOf() 。