String类常用操作及常用方法
String类
String:字符串,使用一对""号表示
- String声明为final的,不可以被继承
- String实现了Serializable接口,表示String支持序列化
- Comparable接口,String可以比较大小
- String内部定义了final char value[]用于存储字符串数据
- String:代表不可变的字符序列,简称不可变性
- 通过字面量定义方式给一个字符串赋值,此时字符串值声明在字符串常量池中
- 字符串常量池中不会存储相同内容的字符串的
public class Test2 {
public static void main(String[] args) {
//字面式定义
//体现:String时不可变性的三中方式
//当对字符串重新赋值时,会创建新的内存地址指向新的内存地址,不会改变原来内存地址的值
String s1="abc"; //字面量定义方式
String s2="abc";
s1="hello";
System.out.println(s1);
System.out.println(s2);
//当对现有的字符串进行拼接操作时,会创建新的内存地址指向新的内存地址,不会改变原来内存地址的值
String s3="abc";
s3+="def";
System.out.println(s3);
//当对现有的进行替换,会创建新的内存地址指向新的内存地址,不会改变原来内存地址的值
String s4="abc";
String replace = s4.replace("a", "c");
System.out.println(replace);
System.out.println(s4);
}
}
public class Test3 {
public static void main(String[] args) {
//new+构造器创建
//字面式定义,声明在方法区常量池中
String s1="hello";
String s2="hello";
//new+构造器定义是在堆中开辟空间以后对应的地址值
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println(s1 == s2);//true
System.out.println(s1 == s3);//false
System.out.println(s3 == s4);//false
//面试题
//String s3 = new String("hello");在内存中创建了几个对象
//两个,一个是堆空间new结构,一个是char[] 常量池中的数据"hello"
}
}
不同拼接操作的比较
public class Test4 {
public static void main(String[] args) {
String s1="javase";
String s2="javaee";
String s3="javasejavaee";
String s4="javase"+"javaee";
String s5=s1+"javaee";
String s6="javase"+s2;
String s7=s1+s2;
//在比较是常量的时候,拼接的结果是相同的
System.out.println(s3 == s4);//true
//拼接的时候有变量,拼接的结果是不不相同的
System.out.println(s3 == s5);//false
System.out.println(s3 == s6);//false
System.out.println(s3 == s7);//false
//如果想要它在常量池中,就可以使用intern()方法,返回值放在常量池中
String intern = s5.intern();
System.out.println(intern==s3);
}
}
String类的常用方法
-
查看字符串的长度
-
取出指定下标的字符
-
判断字符串是否为空
-
把字符串变成小写
-
把字符串变成大写
-
返回字符串的副本,忽略前导空白与尾部空白
-
比较字符串的内容是否相同
-
比较字符串的内容是否相同 忽略大小写
-
把s2的内容拼接到s1后面,等价于+
-
比较两个字符串的大小
-
字符串截取从哪个位置开始
-
字符串截取从哪个位置开始到哪个位置结束,不包括最后那个位置
-
测试字符串是否可以使用指定的前缀
-
测试字符串是否可以使用指定的后缀
-
测试字符串是否可以使用指定的前缀,从那个下标开始
-
判断字符串是否包含括号里的字符串
-
返回括号里第一次出现字符串的下标
-
下标从哪个位置开始,第一次出现的str字符串
-
返回指定字符串在最右边出现的下标
-
返回指定下标开始,从右往左,最后出现的字符串的下标
-
indexOf()和lastIndexOf()找不到指定的字符串的下标会返回-1
-
把指定的字符串替换成新的字符串
-
把指定的字符替换成新的字符
-
根据正则表达式来替换字符串
-
先把数字替换成逗号,在把前缀逗号和后缀逗号替换成空字符
-
根据正则表达式判断字符串是否全是数字组
-
根据正则表达式判断字符串是否是一个杭州固定电话
public class Test4 {
public static void main(String[] args) {
String s1="HelloWorld";
//查看字符串的长度
System.out.println(s1.length());
//取出指定下标的字符
System.out.println(s1.charAt(0));
//判断字符串是否为空
System.out.println(s1.isEmpty());
//把字符串变成小写
System.out.println(s1.toLowerCase());
//把字符串变成大写
System.out.println(s1.toUpperCase());
String s2=" Hello World ";
//返回字符串的副本,忽略前导空白与尾部空白
System.out.println(s2.trim());
//比较字符串的内容是否相同
System.out.println(s1.equals(s2));
//比较字符串的内容是否相同 忽略大小写
System.out.println(s1.equalsIgnoreCase(s2));
//把s2的内容拼接到s1后面,等价于+
System.out.println(s1.concat(s2));
//比较两个字符串的大小
System.out.println(s2.compareTo(s1));
//字符串截取从哪个位置开始
System.out.println(s1.substring(4));
//字符串截取从哪个位置开始到哪个位置结束,不包括最后那个位置
System.out.println(s1.substring(2, 5));
String s3="helloworld";
//测试字符串是否可以使用指定的前缀
System.out.println(s3.startsWith("he"));
//测试字符串是否可以使用指定的后缀
System.out.println(s3.endsWith("ld"));
//测试字符串是否可以使用指定的前缀,从那个下标开始
System.out.println(s3.startsWith("wo", 5));
//判断字符串是否包含括号里的字符串
System.out.println(s3.contains("lo"));
//返回括号里第一次出现字符串的下标
System.out.println(s3.indexOf("ll"));
//下标从哪个位置开始,第一次出现的str字符串
System.out.println(s3.indexOf("wo", 4));
//返回指定字符串在最右边出现的下标
System.out.println(s3.lastIndexOf("ld"));
//返回指定下标开始,从右往左,最后出现的字符串的下标
//indexOf()和lastIndexOf()找不到指定的字符串的下标会返回-1
System.out.println(s3.lastIndexOf("r", 8));
String s4="好好学习,天天向上";
//把指定的字符串替换成新的字符串
System.out.println(s4.replace("好好", "认真"));
//把指定的字符替换成新的字符
System.out.println(s4.replace('学', '复'));
String str ="12hello034world5java7891mysql456";
//根据正则表达式来替换字符串
//先把数字替换成逗号,在把前缀逗号和后缀逗号替换成空字符
System.out.println(str.replaceAll("\\d+", ",").replaceAll("^,|,$",""));
str="1234567";
//根据正则表达式判断字符串是否全是数字组成
System.out.println(str.matches("\\d+"));
str="0571-4534289";
//根据正则表达式判断字符串是否是一个杭州固定电话
System.out.println(str.matches("0571-\\d{7,8}"));
}
}
String类型的转换
String number="123456";
//String-->基本数据类型,包装类通过parsexxx();
int i = Integer.parseInt(number);
System.out.println(i);
//基本数据类型,包装类-->String通过String.valueOf()
System.out.println(String.valueOf(i));
It's never too late to be the person you want to be.
去做你想成为的那个人永远都不会晚

浙公网安备 33010602011771号