Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,叫做String
.
字串
从字符串截取一段就是该字符串的字串
String
类的substring
方法可以从一个较大的字符串中提取一个字串。例如:
String str = "hello";
String s = str.substring(0, 3);
// s == "hel"
// 第一个参数是字串开始的位置
// 第二个参数是字串结束的下一个位置
拼接
Java语言允许使用+
号连接两个字符串;
String str1 = "hello";
String str2 = "world";
String str3 = str1 + str2; // "helloworld";
除了两个字符串之外,一个字符串与一个非字符串的值进行拼接时,后者会转换成字符串
不可变字符串
String
类中没有提供修改字符串中某个字符的方法,它的对象在创建后不能被更改。
以""
方式给出的字符串对象,在字符串常量池中存储,而且相同的内容只会存储一份通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中。
String是不可变字符串的原因
String变量每次的修改其实都是产生并指向了新的字符串对象,而原来的字符串对象都是没有发生任何改变的,所以称为不可变字符串
检测字符串是否相等
可以使用equals
方法检测两个字符串是否相等。
对于表达式s.equals(t)
,如果字符串s和字符串t相等,返回true,否则返回false。s和t可以是字符串变量,也可以是字符串字面量。
想要检测字符串是否相当,而不区分大小写,可以使用equalsIgnoreCase
方法。
不能使用==
运算符检测两个字符串是否相等。这个运算符只能够确定两个字符串是否存放在同一位置。
==
只能判断基本数据类型是否相等,而对于引用数据类型只能判断是否放在同一位置。
String API
char charAt(int index)
,返回给定位置的代码单元boolean equals(Object other)
,如果字符串与other相等,返回trueint length()
,返回字符串长度String substring(int beginIndex, int endIndex)
,返回一个新子串,从beginIndex开始到endIndex-1结束