String str = “my name”
1 :子串
String类的substring方法可以从一个较大的字符串中提取出一个子串,例如:
String str = “hello”;
string s = str.substring(0,3);
首先声明了一个 str 字符串 为 “hello” , 之后,通过substring类截取 0 -2 的字符也就是 h e l 第三位是要截取到的位置,但不会去截取
2 :拼接
Java 中字符串的拼接可以使用 + 号来连接两个或者多个字符串
3 :字符串的不可变性
String 类没有提供用于修改字符串的方法,如果要“修改”字符串,可以通过String内置的方法来处理字符串,但是,处理之后,将会生成另一个字符串
为了了解字符串的具体工作方式,我们可以想象将各种字符串存放在公共的存储池中,字符串变量指向存储池中相应的位置,如果复制一个字符串变量,原始字符串与复制的字符串共享相同的字符。
Java的设计者认为共享带来的高效率远远胜过于提取,拼接字符串所带来的低效率
4 :字符串的检查
java中可以使用 equals 方法检测两个字符串是否相等。
如果要比较两个字符串是否相等,而不区分大小写。可以使用 equalsIgnoreCase方法
不能使用 == 运算符检测两个字符串是否相等。这个运算符只能够确定两个字符串是否放置在同一个位置上,如果字符串放置在同一个位置上,它们必然相等,但是,完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。
比如:
String str = “hello” ;
if(str == “hello”){ true; }
if(str.substring = “hel”){false}
在第一条中,我们声明了一个字符串常量str ,那么跟hello时相同的
在第二条中我们通过substring类处理了str字符串,这时候str.sunstring 生成的是一个 String 的引用地址
源码 :
public String substring(int beginIndex, int endIndex) {
if (beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
if (endIndex > value.length) {
throw new StringIndexOutOfBoundsException(endIndex);
}
int subLen = endIndex - beginIndex;
if (subLen < 0) {
throw new StringIndexOutOfBoundsException(subLen);
}
return ((beginIndex == 0) && (endIndex == value.length)) ? this
: new String(value, beginIndex, subLen);
}
5 :空串与NULL串
空串 “” 是长度为0的字符串可以用以下代码判断是否为空
if(str.length == 0)或者 if(str.equals(“"))