1.字符串的特点
一旦定义,长度和内容均不可改变!!!
2.String如何创建字符串
2.1 字面量方式
String str = "我爱中国!";
2.2 new
String str02 = new String("我爱中国");
2.3 区别

字面量的定义方式, 数据直接存放在元空间的静态常量池中,而new String() 需要借助堆来实现
2.4 示例
private static void stringstudy() {
// TODO Auto-generated method stub
String str = "我爱中国!";
String str02 = new String("我爱中国!");
//地址不一样,str在元空间,str02 在堆中
System.out.println(str == str02);
System.out.println(str.equals(str02));
// == 比较地址的值,equals 用来比较具体的内容
//如下这句话只有1个对象:我爱中国!
String str03 = "我爱" + "中国!";
System.out.println(str == str03);
//以下代码是创建了3个对象:我爱 中国 我爱中国!
String str04 = "我爱";
String str05 = "中国!";
String str06 = str04 + str05;
System.out.println(str == str06);
// //字符
// char a = '中';
// //字符串就是多个字符构成的东西
// char[] strs = new char[5];
// strs[0] = '我';
// strs[1] = '爱';
// strs[2] = '中';
// strs[3] = '国';
// strs[4] = '!';
// System.out.println(Arrays.toString(strs));
}
3.String类常用API
private static void stringstudy02() {
// TODO Auto-generated method stub
String str = " 2020-12-12 ";
//获得字符串的长度length()
System.out.println(str.length());
//判断字符串中是否包含某一个字符
System.out.println(str.contains("!"));
//获得某一个字符在字符串的位置(-1代表不存在)
System.out.println(str.indexOf("!",4));
//返回某一个下标所在的字符
// System.out.println(str.charAt(3));
//判断某个字符串是否为""字符串
System.out.println(str.isEmpty());
//用来比较2个字符串的字典出现的先后顺序
System.out.println(str.compareTo("aasdf"));
//trim()用来去掉字符串首位的空格
System.out.println(str.trim());
//trim()用来去掉字符串首位的空格 2020-12-12
str = str.trim();
//split("-") 将字符串按照某个字符进行拆分
String[] strs = str.split("-");
System.out.println(strs[0]);
System.out.println(strs[1]);
System.out.println(strs[2]);
//字符串的截取(从某一位开始,完成字符串的截取)
System.out.println(str.substring(5));
//字符串的截取(某一部分,截取规则:包前不包后[) )
System.out.println(str.substring(5, 7));
//找到某一个字符在字符串中最后一次出现的下标
System.out.println(str.lastIndexOf("2"));
//如下3个方法,代表字符串的替换
System.out.println(str.replace("2020", "2019"));
//替换第一个符号
System.out.println(str.replaceFirst("2", "3"));
//替换所有的符号
System.out.println(str.replaceAll("2", "3"));
//字符串的大小转换
System.out.println("asdfASADFWER".toLowerCase());
System.out.println("asdfASADFWER".toUpperCase());
}
4.String类常见面试题
4.1 对象数量
String str = “a” + “b” + “c”;
上述代码只创建了1个对象:abc
String a = “a”;
String b = “b”;
String c = “c”;
String d = a + b + c 创建了几个对象?答案:5
“a” “b” “c” “ab” “abc”
4.2 String str = new String(“abc”); 创建了几个对象?
答案:2
“abc” new String()
4.3 如何获得数组的长度以及字符串的长度?
使用length属性来获得数组的长度
使用length()方法来获得字符串的长度
4.4 String StringBuffer StringBuilder 的区别?
1、String是长度固定,并且内容不可改变的字符串;其他2种都是可以改变的
2、StringBuffer 和 StringBuilder的区别,StringBuffer的方法使用synchronized,从而做到了”线程安全”
线程安全,意味着:数据的准确性,但是效率低
线程不安全,意味着:数据的准确性相对较差,但是效率高
