String(字符串)
Java 没有内置的字符串类型, 而是在标准 Java 类库中提供了一个预定义类,很自然地叫做 String。每个用双引号括起来的字符串都是 String类的一个实例:
String e = “”; // an empty string
String greeting = “Hello”;
获得子串
String greeting = "hello";
String s = greeting.substring(0, 3); //第1个参数是开始位置,第2个参数是子串长度,第2个参数忽略则取到字符串的结尾。
拼接
可以使用+
号拼接两个字符串。
String s1 = "abc";
String s2 = "def";
String s = s1 + s2;
当一个字符串与一个非字符串进行拼接时,后者被转化成一个字符串。(任何一个Java对象都可以转换成一个字符串)。
int age = 13;
String rating = "PG" + age;
double ans = 3.14159;
System.out.println("The answer is:" + ans);
不可变字符串
String类没有提供用于修改字符串的方法(和c++中的string不同)。如果想将字符串变量greeting = “Hello"修改成"Help!”,则可以使用如下方法:
String greeting = "Hello";
greeting = greeting.substring(0,3) + "p!";
不可变字符串有一个优点:编译器可以让字符串共享。
检测相等
可以使用equals方法检测两个字符串是否相等:s.equals(t)
,相等返回true,不等返回false。
例如:
String greeting = "Hello";
"Hello".equals(greeting);
"Hello".equalsIgnoreCase("hello"); //检测两个字符串是否相等,不区分大小写
注意:一定不能用==运算符检测两个字符串是否相等,这个运算符只能确定两个字符串是否放置在同一个位置上。(有可能相同的字符串不放在同一个位置上)
空串与Null串
空串是长度为0的串,可以通过以下代码检测:
if (str.length() == 0)
或if (str.equals(""))
要检测一个字符串是否为null可以使用以下方法:
if (str == null)
常用方法
- char charAt(int index)
返回给定位置的代码单元。 - int indexOf(String str)
int indexOf(String str, int fromIndex)
返回与字符串str匹配的第一个子串开始的位置。这个位置从索引0或fromIndex开始计算。无法匹配则返回-1。 - String trim()
返回一个新字符串。这个字符串不包括原字符串头部和尾部的空格。 - String replace(CharSequence oldString, CharSequence newString)
String replaceAll(String oldString, String newString);
返回一个新字符串。这个字符串用newString代替原始字符串中所有oldString。可以用String或StringBuilder对象作为CharSequence参数。replaceAll中则可以使用正则表达式作为参数。
可变字符串
- StringBuffer
(字符串加减,同步,性能好) - StringBuilder
(字符串加减,不同步,性能更好
常用方法:
- StringBuilder()/StringBuffer()
构造一个空的字符串构造器 - append(string) / append(char)
在字符串末尾添加并返回this - StringBuilder insert(int offset,String str)
在offer字段插入一个字符串并返回this - StringBuilder delete(int startindex,int endlndex)
删除偏移量从startindex-endIndex-1的代码单元并返回this - String toString()
返回一个与构建器或缓冲器内容相同的字符串 - length()返回实际大小,capacity()返回实际占用空间大小。
一旦length()大于capacity(),则capacity在原来的基础上先+1再乘2。
参考《java core》