- String类是保存字符串常量的。每次更新都需要重新开辟空间,效率较低,因此java设计者还提供了StringBuilder 和 StringBuffer 来增强String的功能,并提高效率。
- String继承了三个接口(了解),String的爸爸是Object
- CharSequence
- Comarabel
- Serializable
举例
String s = new String("");
for(int i = 0; i < 80000; i++){
s += "hello";
}
这段代码用String对象直接开辟了80000个内存空间,相当浪费
String类的常用方法
equals 区分大小写,判断内容是否相等
equalslgnoreCase 忽略大小写的判断内容是否相等
length 获取字符的个数,字符串的长度
indexOf 获取字符在字符串中第一次出现的索引,索引从0开始,如果找不到,返回 -1
lastIndexOf 获取字符在字符串中最后1次出现的索引,索引从0开始,如果找不到,就返回-1
substring 截取指定范围的子串
package com.tao.string_;
/**
* Create By 刘鸿涛
* 2022/1/2 15:58
*/
public class StringMethod01 {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "Hello";
System.out.println(str1.equals(str2)); //F
System.out.println(str1.equalsIgnoreCase(str2)); //T
System.out.println(str1.length()); //5
System.out.println(str1.indexOf('e')); //1
String str3 = "helloe";
System.out.println(str3.lastIndexOf('e')); //5
String str4 = str3.substring(0,3); //表示从 0开始取到 3-1
System.out.println(str4); //hel
str4 = str3.substring(1); //表示从下标1开始,全部取出
System.out.println(str4); //elloe
}
}
trim 去前后空格
charAt: 获取某索引处的字符
toUpperCase 转换大写
toLowerCase 转换小写
concat 拼接字符串 (类似于 “+” 号)
replace 替换字符串中的字符
split 分割字符串,对于某些分割字符,我们需要转义比如|\ \等
compareTo 比较两个字符串大小
toCharArray 字符串转换成字符串数组
format 格式化字符串,%s字符串 %c 字符 %d 整型 %.2f 浮点型
package com.tao.string_;
/**
* Create By 刘鸿涛
* 2022/1/2 16:15
*/
public class StringMethod02 {
public static void main(String[] args) {
String s = "Hello";
System.out.println(s.toLowerCase()); //hello
System.out.println(s.toUpperCase()); //HELLO
String s1 = "鬼鬼";
s1 = s1.concat("骑士").concat("目标").concat("是Java高级程序员");
System.out.println(s1); //鬼鬼骑士目标是Java高级程序员
s1 = "鬼鬼骑士 目标 是Java高级程序员";
System.out.println(s1.replace(" ","")); //鬼鬼骑士目标是Java高级程序员
String poem = "锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦";
String[] poemText = poem.split(",");
for(String i:poemText){
System.out.print(i); //锄禾日当午汗滴禾下土谁知盘中餐粒粒皆辛苦
}
//注意转义分割
poem = "E:\\aaa\\bbb";
poemText = poem.split("\\\\"); //特殊字符需要转义符
for(String i:poemText){
System.out.print(i); //E:aaabbb
}
char[] chs = s.toCharArray();
for (int i = 0; i < chs.length; i++) {
System.out.println(chs[i]);
}
//compareTo 比较两格字符串的大小,如果前者打,则返回正数,
//后者大,则返回负数,如果相等,返回0
String a = "jchn";
String b = "jack";
System.out.println(a.compareTo(b)); //返回值是 'c' - 'a' = 2的值
a = "jackfff";
System.out.println(a.compareTo(b)); //3
b = "jackfffaa";
System.out.println(a.compareTo(b)); //-2
a = "jackfffaa";
System.out.println(a.compareTo(b)); //0
//format 格式化字符串
String name = "taotao";
int age = 10;
double score = 98.3 / 3;
char gender = '男';
//一
System.out.printf("我的姓名是%s年龄是%d,成绩是%.2f性别是%c,希望大家喜欢我!\n",
name,age,score,gender);
//二
String info = "我的姓名是%s年龄是%d,成绩是%.2f性别是%c,希望大家喜欢我!";
String printInfo = String.format(info,name,age,score,gender);
System.out.println(printInfo);
//1.%s,%d,%.2f,%c 称为占位符
//2.这些占位符由后面变量来替换
//3.%s 表示后面由 字符串来替换
//4.%d 是整数来替换
//5.%.2f 表示使用小数来替换,替换后,只会保留小数后两位,并且进行四舍五入
//6.%c 使用char 类型来替换
}
}