Java学习

String类常用方法

截取字符串(substring)

1
2
3
4
5
String str = "Hello World";
//取左不取右
String substr1 = str.substring(6,11);
//一个参数默认左起点到结尾
String substr2 = str.substring(6);

查找字符串(indexOf)

1
2
3
4
5
String str = "Hello World";
//查找子串在目标字符串第一次出现的位置
int index1 = str.indexOf("World");
//从目标字符串指定索引后查找
int index2 = str.indexOf("o",5);

字符串相等判断

1
2
3
4
5
6
7
8
9
String a = "123";
String b = "123";
//比较两个字符串对象的地址是否相同
System.out.println(a==b);
//比较字符的内容是否相同
//方式一
System.out.println(a.equals(b));
//方式二(可以不用考虑a是否为空)
System.out.println(Objects.equals(a,b));

字符串拼接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
String str1 = "Hello";
String str2 = "World";

//方式一:使用‘+’号拼接(实质上是调用了)
//注意:如果其中一个是null,拼接后会将null作为“null”字符串拼接
System.out.println(str1+str2);

//方式二:使用StringBuilder类中的append方法
StringBuilder sb = new StringBuilder();
sb.append(str1);
sb.append(str2);
System.out.println(sb);


//方式三:String类的concat方法
//注意:此方法遇到null会报错
System.out.println(str1.concat(str2));

//方式四:String类的join方法
String newstr = String.join("",str1,str2);

字符串拆分

1
2
3
4
5
String str = "1,2,3";
//方式一:String中的split方法进行拆分
String [] parts = str.split(",");
//方式二:正则表达式
...

其他常见操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String str = "Hello World ";

//获取字符串长度
int len = str.length();

//判断字符串是否为空
boolean f = str.isEmpty();

//返回指定索引的字符
char ch = str.charAt(1);

//将其他类型的数据转化为字符串
String s = String.valueOf(123);

//去除字符串两边的空白字符
str.trim();

字符串常量池

引入

1
String s = new String("STK");
  • 这行代码创建了几个对象?
  • 两个

作用

  • 字符串常量池是java虚拟机为了提升性能和减少内存开销而开辟的一块特殊的内存空间.
  • 在执行String s = "STK"这段代码时,Java虚拟机会首先在字符串常量池中有无存在的“STK”这个字符串对象。如果有,则直接将常量池中该对象的地址返回,赋值给s;如果没有,则先在常量池中创建该对象,再将该地址返回,赋值给s。

位置

常量池的位置