1.String 是引用数据类型
2.一个字符串是常量,在堆中的常量池中,只能改变字符串变量的引用地址
3.字符串本质是一个字符数组
4.String类重写了equals方法比的是内容
1 String s1 = "abc";// 一个对象 在常量池中 2 String s2 = new String("abc");// 两个对象 "abc"在常量池中 s2在堆中 3 String s3 = "abc"; 4 System.out.println(s1 == s2);// fales 5 System.out.println(s1 == s3);// true
总结:一对双引号就是一个String对象
String类的构造方法
1 // 1. 传一个字节数组 2 byte[] bytes = { 65, 66, 67, 68 }; 3 String str1 = new String(bytes); // 正数走ASCII码表,被解析成字符串 负数为汉字, 一个汉字两个字节 4 System.out.println(str1); 5 String str2 = new String(bytes, 1, 2); // 选择转几个 从索引1处 解析2个包括索引1 6 System.out.println(str2);// BC 7 8 // 传一个字符数组 9 10 char[] chars = { ‘a‘, ‘5‘, ‘e‘, ‘你‘ }; 11 String str3 = new String(chars, 0, 1); 12 System.out.println(str3);// a
String类的常用方法
1 String sss = "i love java"; 2 System.out.println(sss.length());// 字符串长度 11 空格也算一个字符 3 System.out.println(sss.substring(3)); // 从索引3开始包括3 ove java 4 System.out.println(sss.substring(0, 2));// i 从索引0开始包括0 往后截取两个 5 System.out.println(sss.startsWith("i"));// 判断是否以i开头 true 6 System.out.println(sss.endsWith("java"));// 判断是否以java结尾 true 7 System.out.println(sss.contains("j"));// 判断是否包含某个字符串 true 8 System.out.println(sss.indexOf("a")); // 返回子字符串第一次出现的索引 8 没有就返回-1 9 10 // 字节数组转字符串 字符数组转字符串 通过String类的构造方法 11 // 字符串=》字节数组 12 String ss2 = "ABCD"; 13 byte[] b = ss2.getBytes(); 14 for (byte bb : b) { 15 System.out.println(bb);// 65 66 67 68 16 } 17 // 字符串=》字符数组 18 for (char bb : ss2.toCharArray()) { 19 System.out.println(bb);// A B C D 20 } 21 22 // 忽略大小写的比较 23 String a = "ABC"; 24 String c = "abc"; 25 System.out.println(a.equalsIgnoreCase(c)); // true 26 System.out.println(a.charAt(0)); // A 27 28 char d = ‘D‘; 29 char e = ‘E‘; 30 System.out.println(d < e);// true 比较的是ASCII值 31 System.out.println("D".toLowerCase());// d 32 System.out.println("d".toUpperCase());// D 33 //字符串的替换 34 String str5 = "ABCD"; 35 System.out.println(str5.replace("A", "哈哈"));// 哈哈 BCD
原文:https://www.cnblogs.com/lxzwhite/p/10530591.html