標籤:編譯 不能 style string類 功能 字元數組 dem case 相同
String構造方法
package cn.itcast_01;/* * 字串:就是由多個字元組成的一串資料。也可以看成是一個字元數組。 * 通過查看API,我們可以知道 * A:字串字面值"abc"也可以看成是一個字串對象。 * B:字串是常量,一旦被賦值,就不能被改變。 * * 構造方法: * public String():空構造 * public String(byte[] bytes):把位元組數組轉成字串 * public String(byte[] bytes,int index,int length):把位元組數組的一部分轉成字串 * public String(char[] value):把字元數組轉成字串 * public String(char[] value,int index,int count):把字元數組的一部分轉成字串 * public String(String original):把字串常量值轉成字串 * * 字串的方法: * public int length():返回此字串的長度。 */public class StringDemo { public static void main(String[] args) { // public String():空構造 String s1 = new String(); System.out.println("s1:" + s1); System.out.println("s1.length():" + s1.length()); System.out.println("--------------------------"); //s1: //s1.length():0 // public String(byte[] bytes):把位元組數組轉成字串 byte[] bys = { 97, 98, 99, 100, 101 }; String s2 = new String(bys); System.out.println("s2:" + s2);//abcde System.out.println("s2.length():" + s2.length());// System.out.println("--------------------------"); // public String(byte[] bytes,int index,int length):把位元組數組的一部分轉成字串 // 我想得到字串"bcd" String s3 = new String(bys, 1, 3); System.out.println("s3:" + s3); System.out.println("s3.length():" + s3.length()); System.out.println("--------------------------"); // public String(char[] value):把字元數組轉成字串 char[] chs = { ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘愛‘, ‘林‘, ‘親‘ }; String s4 = new String(chs); System.out.println("s4:" + s4); System.out.println("s4.length():" + s4.length()); System.out.println("--------------------------"); // public String(char[] value,int index,int count):把字元數組的一部分轉成字串 String s5 = new String(chs, 2, 4); System.out.println("s5:" + s5); System.out.println("s5.length():" + s5.length()); System.out.println("--------------------------"); //public String(String original):把字串常量值轉成字串 String s6 = new String("abcde"); System.out.println("s6:" + s6); System.out.println("s6.length():" + s6.length()); System.out.println("--------------------------"); //字串字面值"abc"也可以看成是一個字串對象。 String s7 = "abcde"; System.out.println("s7:"+s7); System.out.println("s7.length():"+s7.length()); }}
字串的特點:一旦被賦值,就不能改變。
但是引用可以改變
package cn.itcast_02;/* * 字串的特點:一旦被賦值,就不能改變。 */public class StringDemo { public static void main(String[] args) { String s = "hello"; s += "world"; System.out.println("s:" + s); // helloworld }}
圖解:
String s = new String(“hello”)和 String s = “hello”;的區別?
String字面值對象和構造方法建立對象的區別
package cn.itcast_02;/* * String s = new String(“hello”)和String s = “hello”;的區別? * 有。前者會建立2個對象,後者建立1個對象。 * * ==:比較參考型別比較的是地址值是否相同 * equals:比較參考型別預設也是比較地址值是否相同,而String類重寫了equals()方法,比較的是內容是否相同。 */public class StringDemo2 { public static void main(String[] args) { String s1 = new String("hello"); String s2 = "hello"; System.out.println(s1 == s2);// false System.out.println(s1.equals(s2));// true }}
圖解:
String s5 = "hello"; String s6 = "hello"; System.out.println(s5 == s6);// 字串字面量,直接從記憶體找,所以true System.out.println(s5.equals(s6));// true
package cn.itcast_02;/* * 看程式寫結果 * 字串如果是變數相加,先開空間,在拼接。 * 字串如果是常量相加,是先加,然後在常量池找,如果有就直接返回,否則,就建立。 */public class StringDemo4 { public static void main(String[] args) { String s1 = "hello"; String s2 = "world"; String s3 = "helloworld"; System.out.println(s3 == s1 + s2);// false。字串如果是變數相加,先開空間,再拼接。 System.out.println(s3.equals((s1 + s2)));// true System.out.println(s3 == "hello" + "world");//true。字串如果是常量相加,是先加,然後在常量池找,如果有就直接返回,否則,就建立。 System.out.println(s3.equals("hello" + "world"));// true // 通過反編譯看源碼,我們知道這裡已經做好了處理。 // System.out.println(s3 == "helloworld"); // System.out.println(s3.equals("helloworld")); }}
String類的判斷功能:
package cn.itcast_03;/* * String類的判斷功能: * boolean equals(Object obj):比較字串的內容是否相同,區分大小寫 * boolean equalsIgnoreCase(String str):比較字串的內容是否相同,忽略大小寫 * boolean contains(String str):判斷大字串中是否包含小字串 * boolean startsWith(String str):判斷字串是否以某個指定的字串開頭 * boolean endsWith(String str):判斷字串是否以某個指定的字串結尾 * boolean isEmpty():判斷字串是否為空白。 * * 注意: * 字串內容為空白和字串對象為空白。 * String s = "";//對象存在,所以可以調方法 * String s = null;//對象不存在,不能調方法 */public class StringDemo { public static void main(String[] args) { // 建立字串對象 String s1 = "helloworld"; String s2 = "helloworld"; String s3 = "HelloWorld"; // boolean equals(Object obj):比較字串的內容是否相同,區分大小寫 System.out.println("equals:" + s1.equals(s2)); System.out.println("equals:" + s1.equals(s3)); System.out.println("-----------------------"); // boolean equalsIgnoreCase(String str):比較字串的內容是否相同,忽略大小寫 System.out.println("equals:" + s1.equalsIgnoreCase(s2)); System.out.println("equals:" + s1.equalsIgnoreCase(s3)); System.out.println("-----------------------"); // boolean contains(String str):判斷大字串中是否包含小字串 System.out.println("contains:" + s1.contains("hello")); System.out.println("contains:" + s1.contains("hw")); System.out.println("-----------------------"); // boolean startsWith(String str):判斷字串是否以某個指定的字串開頭 System.out.println("startsWith:" + s1.startsWith("h")); System.out.println("startsWith:" + s1.startsWith("hello")); System.out.println("startsWith:" + s1.startsWith("world")); System.out.println("-----------------------"); // 練習:boolean endsWith(String str):判斷字串是否以某個指定的字串結尾這個自己玩 // boolean isEmpty():判斷字串是否為空白。 System.out.println("isEmpty:" + s1.isEmpty()); String s4 = ""; String s5 = null; System.out.println("isEmpty:" + s4.isEmpty()); // NullPointerException // s5對象都不存在,所以不能調用方法,null 指標異常// System.out.println("isEmpty:" + s5.isEmpty()); }}
12-02 java String類