public final class String
String str1 = "123";//字符串放在常量池中 String str2 = "123";//在常量池中寻找是否已存在,存在则指向它 str1 == str2;//true,比较地址 String str3 = new String("123");//只要是使用new就是开辟新的空间,地址不同 str1 == str3;//false
尽量使用StringBuilder类实现拼接
String str1 = "123"; String str2 = "456"; String str3 = "789"; str1 = str1+str2+str3; 一开始创建三个空存放字符串
一开始创建三个空存放字符串
实现字符串连接,第一步先运行str1+str2,结果存放在内存中,然后再与str3进行连接,最后产生了两个内存垃圾(不会被回收)
构造方法
public static void main(String[] args) { // 1.使用无参方式构造对象 // "" 空字符串对象,也就是有对象,只是对象中没有内容 // null 连空字符串对象都没有 // String str1 = new String(); String str1 = ""; System.out.println(str1); // 啥也没有 System.out.println("---------------------------------------------"); // 2.使用byte数组来构造字符串对象 byte[] bytes = new byte[]{97, 98, 99, 100, 101}; // 表示使用bytes数组中从下表1开始的2个字节来构造字符串对象 => 先将整数转换为字符,然后串起来变成字符串 // 98 - 'b' 99 - 'c' String str2 = new String(bytes, 1, 2); System.out.println(str2); // bc // 使用整个字节数组来构造对象 String str3 = new String(bytes); System.out.println(str3); // abcde System.out.println("---------------------------------------------"); // 3.使用char数组来构造字符串对象 char[] chars = new char[]{'h', 'e', 'l', 'l', 'o'}; // 使用chars数组中下表从0开始的4个字符来构造字符串对象 String str4 = new String(chars, 0, 4); System.out.println(str4); // hell // 使用整个数组构造对象 String str5 = new String(chars); System.out.println(str5); // hello System.out.println("---------------------------------------------"); // 4.使用字符串来构造字符串对象 String str6 = new String("world"); System.out.println(str6); }
成员方法
String toString() //返回字符串本身 byte[] getBytes() //将当前字符串内容转换为byte数组并返回 char[] toCharArray() //用于将当前字符串内容转换为char数组并返回 str = new String("avdsdfs"); System.out.println(str.toString());//avdsdfs byte[] bytes2 = str.getBytes();//97 118 100 115 100 102 115 char[] chars2 = str.toCharArray();//a v d s d f s
char charAt(int index) //用于返回字符串中指定位置的字符,0-length-1 int length() //返回字符串中字符序列的长度 boolean isEmpty() //判断字符串是否为空 char chars3 = str.charAt(1); System.out.println(chars3);//v System.out.println(str.length());//7 System.out.println(str.isEmpty());//false
String str = "I like writing coding best"; String[] str1 = str.split(" "); for(String e:str1){ System.out.println(e); } I like writing coding best
String str = "hello world!"; str = str.substring(0,6);//hello str = str.substring(3,6);//lo
String str1 = "abc"; String str2 = "abg"; System.out.println(str1.compareTo(str2));//-4, c比g小4,所以返回-4 String str1 = "abc"; String str2 = "ABC"; System.out.println(str2.compareToIgnoreCase(str1));//0,不区分大小写
String str = "abc"; String str1 = str.concat("cdefg");//已创建的字符串不能改变,单独的str.concat("cdefg")结果还是abc System.out.println(str1);//abccde
String str2 = "abc hello world!"; System.out.println(str2.contains("hello")); System.out.println(str2.contains("abch"));
String str = "abc"; str = str.toUpperCase();//小写变大写,大写不变 String str1 = "ABC"; str1 = str1.toLowerCase();//大写变小写,小写不变 System.out.println(str);//ABC System.out.println(str1);//abc
String str = " Abc sdf sdf "; System.out.println(str); str = str.trim(); System.out.println(str); Abc sdf sdf Abc sdf sdf
String str = "abc sdf"; System.out.println(str.startsWith("ab"));//true System.out.println(str.startsWith("abcd"));//false System.out.println(str.startsWith("sd", 4));//true System.out.println(str.startsWith("s", 2));//false System.out.println(str.endsWith("f"));//true System.out.println(str.endsWith(" sdf"));//true System.out.println(str.endsWith("gf"));//false
// 下面这一行代码创建了几个对象?分别存放在什么位置? String str1 = "abc"; // 1个 常量池 String str2 = "abc"; System.out.println(str1 == str2); // 比较地址 true System.out.println(str1.equals(str2)); // 比较内容 true System.out.println("----------------------------------"); // 下面这一行代码创建了几个对象?分别存放在什么位置? // String str3 = new String("123"); // 2个 常量池 堆区 // 比较地址和内容 String str3 = "hello"; String str4 = "hello"; String str5 = new String("hello"); String str6 = new String("hello"); System.out.println(str3 == str4); // 比较地址 true System.out.println(str3.equals(str4)); // 比较内容 true System.out.println(str3 == str5); // 比较地址 false System.out.println(str3.equals(str5)); // 比较内容 true System.out.println(str5 == str6); // 比较地址 false System.out.println(str5.equals(str6)); // 比较内容 true String str7 = "ABC"; String str8 = "abc"; System.out.println(str7.equalsIgnoreCase());//true