String类介绍
String类代表字符串。 Java程序中的所有字符串文字(例如"abc"
)都被实现为此类的实例。
String类的声明方式
/*
方式一
*/
String str1 = "第一种方式";
/*
使用该方式创建str1时,先从常量池查看是否有"第一种方式"数据空间,如果有,那么Str1
直接指向该空间。如果没有,那么就会在常量池新建一个空间为"第一种方式",然后再指向该
空间,str1最终指向的是常量池的空间地址
*/
/*
方式二
*/
String str2 = new String("第二种方式");
/*
先在堆中创建一个空间,里面维护了一个vcalue属性,指向常量池中的"第二种方式"空间,如果常量池
中没有此空间,那么会先创建后指向,同上。
*/
String类的特点
1.String是一个final类,代表不可变的字符序列
2.字符串是不可改变的,一个字符串对象一旦被分配,其内容是不可改变的
String常用的方法
(1)equals 比较内容是否相同,区分大小写
String str1 = "hello";
String str2 = "Hello";
System.out.println(str1.equals(str2));
/*
运行结果为: true
*/
(2)equalsIgnoreCase 忽略大小写的判断内容是否相等
String username = "johN";
if ("john".equalsIgnoreCase(username)) {
System.out.println("Success!");
} else {
System.out.println("Failure!");
}
/*
运行结果为: Success!
*/
(3)length 获取字符的个数,字符串的长度
System.out.println("实习工程师".length());
/*
运行结果为: 5
*/
(4)indexOf 获取字符在字符串对象中第一次出现的索引,索引从 0 开始,如果找不到,返回-1
String s1 = "wer@terwe@g";
int index = s1.indexOf('@');
System.out.println(index);// 3
System.out.println("weIndex=" + s1.indexOf("we"));
/*
运行结果为: 0
*/
(5)lastIndexOf 获取字符在字符串中最后一次出现的索引,索引从 0 开始,如果找不到,返回-1
s1 = "wer@terwe@g@";
index = s1.lastIndexOf('@');
System.out.println(index);//11
System.out.println("ter 的位置=" + s1.lastIndexOf("ter"));
/*
运行结果为: 4
*/
(6)substring 截取指定范围的子串
String name = "hello,张三";
//下面 name.substring(6) 从索引 6 开始截取后面所有的内容
System.out.println(name.substring(6));//截取后面的字符
//name.substring(0,5)表示从索引 0 开始截取,截取到索引 5-1=4 位置
System.out.println(name.substring(2,5));//llo
(7)toUpperCase 转换成大写
String s = "heLLo";
System.out.println(s.toUpperCase());//HELLO
(8)toLowerCase 转换成小写
System.out.println(s.toLowerCase());//hello
(9)concat 拼接字符串
String s1 = "宝玉";
s1 = s1.concat("林黛玉").concat("薛宝钗").concat("together");
System.out.println(s1);//宝玉林黛玉薛宝钗 together
(10)replace 替换字符串中的字符
s1 = "宝玉 and 林黛玉 林黛玉 林黛玉";
// 在 s1 中,将 所有的 林黛玉 替换成薛宝钗
// 解读: s1.replace() 方法执行后,返回的结果才是替换过的.
// 注意对 s1 没有任何影响
String s11 = s1.replace("宝玉", "jack");
System.out.println(s1);//宝玉 and 林黛玉 林黛玉 林黛玉
System.out.println(s11);//jack and 林黛玉 林黛玉 林黛玉
(11)split 分割字符串
String poem = "锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦";
// 解读:
// 1. 以 , 为标准对 poem 进行分割 , 返回一个数组
// 2. 在对字符串进行分割时,如果有特殊字符,需要加入 转义符 \
String[] split = poem.split(",");
poem = "E:\\aaa\\bbb";
split = poem.split("\\\\");
System.out.println("==分割后内容===");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
//输出后的内容:
/*
锄禾日当午
汗滴禾下土
谁知盘中餐
粒粒皆辛苦
*/
(12)toCharArray 转换成字符数组
s = "happy";
char[] chs = s.toCharArray();
for (int i = 0; i < chs.length; i++) {
System.out.println(chs[i]);
}
//输出后的内容:
/*
h
a
p
p
y
*/
(13)compareTo 比较两个字符串的大小,如果前者大,则返回正数,后者大,则返回负数,如果相等,返回 0
// 解读
// (1) 如果长度相同,并且每个字符也相同,就返回 0
// (2) 如果长度相同或者不相同,但是在进行比较时,可以区分大小
// 就返回 if (c1 != c2) {
// return c1 - c2;
// }
// (3) 如果前面的部分都相同,就返回 str1.len - str2.len
String a = "jcck";// len = 3
String b = "jack";// len = 4
System.out.println(a.compareTo(b)); // 返回值是 'c' - 'a' = 2 的值
(14)format 拼接字符串
String name = "john";
int age = 10;
double score = 56.857;
char gender = '男';
//将所有的信息都拼接在一个字符串.
String info ="我的姓名是" + name + ",年龄是" + age + ",成绩是" + score +
",性别是" + gender + "。希望大家喜欢我!";
System.out.println(info);
//输出结果为:
//我的姓名是john,年龄是10,成绩是56.857,性别是男。希望大家喜欢我!