Java基础3-字符串及相关操作
字符串及相关操作
Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类String
,这就涉及到Java变量类型的引用数据类型,包括之前提及的接口和枚举类型,都是引用数据类型,它更像C++中的char*指针。
子串
String
既然是类,那就应该有方法,Java库中定义了很多操作字符串的有用的方法,比如提取子串使用了String
类中的substring
方法:
String greeting="Hello world!";
String s=greeting.substring(0,5);
可以看到,第一个参数是起点索引位置,第二个参数是终点索引位置(但不包含)。
拼接
Java语言允许使用+
号连接两个字符串。
当将一个字符串与非字符串拼接时,后者被转换成字符串(任何一个Java对象都可以被转换成字符串,使用的是toString
方法,这也是我们可以重写的方法)。
不可变字符串
String
类没有提供用于修改字符串的方法,如果想修改,就要用到上面两个方法,先提取,再拼接。
不可变字符串的好处是,编译器能够让字符串是共享的,很少有需要修改字符串的情况,反而往往需要对字符串进行比较。
检测字符串是否相等
可以使用String
类的equal
方法。
//检验字符串s和t是否相等,相等返回true,反之返回false
s.equals(t);
//检验字符串s和t是否相等,相等返回true,反之返回false,但是不区分大小写
s.equalsIgnoreCase(t);
不能用==
去判断,这只能确定两个字符串是否存在内存的同一个地方!而不是内容是否相同。
字符串API
Java的String
类包含了很多有用的方法,绝大多数都很有用。
功能包括字符串比较、获取索引、去空格等等功能,需要的时候去API文档查询:
-
在线文档 String (Java Platform SE 8 )
-
本地文档:所安装JDK的
doc/api/index.html
-
IDE中阅读文档(
String.java
,在java.lang.String
中)
构建字符串
前面说到String是不可变的,若想从一个较短的字符串开始构建字符串,每次连接都要创建一个新的对象String,时间和空间开销太大,这时候就用到了StringBuilder
类,可以解决从小段字符串开始构建字符串的问题。
//首先构建一个空的字符串构建器
StringBuilder builder=new StringBuilder();
//当每次需要添加内容时,就调用`appends`方法
builder.appends(ch);//一个字符
builder.appends(str);//一个字符串
//添加完成后,需要构建时就调用`toString`方法,就得到了一个String对象,包含了构建器中的字符序列
String completedString = builder.toString();
所有的Java类都直接或间接继承自
Object
类,而Object
类有一个toString()
方法。这个方法可以被重写,以提供有关对象的字符串表示。当你使用
String.valueOf(object)
或者object.toString()
时,Java会调用该对象的toString()
方法。如果没有重写,Object
类的toString()
方法将返回该对象的类名,后跟@符号和对象的哈希码。
ng()`方法将返回该对象的类名,后跟@符号和对象的哈希码。
[外链图片转存中…(img-QyeidzRO-1730296070470)]
可以查看java.lang.StringBuilder
的API文档查看完整信息。