定义
String e="";
String greeting="Hello";
子串
String类的substring方法可以从一个较大的字符串提取出一个子串。
String greeting="Hello";
String s=greeting.substring(0,3);//Hel
在substring中,第一个参数是开始位置的索引,从0开始;第二个参数是不想复制的第一个位置。字符串s.substring(a,b)的长度为b-a。
上面的含义是从0开始,直到3为止,不包含3.
String为不可变字符串
事例:将”Hello“的最后两个位置的字符修改为”p“和”!“;
C语言实现较为困难,java可以利用拼接完成
String greeting="hello";
System.out.println(greeting);//hello
greeting=greeting.substring(0,3)+"p!";
System.out.println(greeting); //help!
拼接
Java语言允许使用+号连接(拼接)两个字符串。
int age=13;
String rating="PG"+age;//PG13
当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串。(任何一个Java对象都可以转换成字符串)
如果需要把多个字符串放在一起,用一个定界符分割,可以使用静态join方法;
String all=String.join("/","S","M","L","XL");//"S/M/L/XL"
构建字符串
每次连接字符串,都会构建一个新的String对象,既耗时,又浪费空间。使用StringBuilder类就可以避免这个问题的发生。
使用许多小段的字符串构建一个字符串。具体步骤:
//1.创建一个空的字符串构造器;
StringBuilder builder=new StringBuilder();
//2.每次需要添加一小部分内容时,就调用append方法。
builder.append("ch");
builder.append("ina");
//3.小字符串拼接结束构建字符串时,调用toString方法,得到一个String对象。
String s=builder.toString();//china
StringBuilder与StringBuffer
StringBuffer 是StringBuilder的前身,其效率有些低,但允许采用多线程的方式执行添加或删除字符的操作。
StringBuilder在JDK5.0中引入,适用于 所有字符串在一个单线程中编辑的场景(通常都是这样的场景)
StringBuilder和StringBuffer两个类的API是相同的。
字符串是否相等的检测
可以使用equals方法检测两个字符串是否相等: s.equals(t)
如果字符串s与字符串t相等,则返回true;否则,返回false。
"Hello".equals(greeting)
要想检测两个字符串是否相等,而不区分大小写,可以使用equalsIgnoreCase方法。
"Hello".equalsIgnoreCase("hello")
一定不要使用==运算符检测两个字符串是否相等!这个运算符只能够确定两个字符串是否放置在同一个位置上。
空串与Null串
空串""是长度为0的字符串。[空串是一个Java对象,有自己的串长度(0)和内容(空)]
if(str.length()==0)
除此之外,该位置可能会存放一个特殊的值,null [表示目前没有任何对象与该变量关联],如何检查一个字符串是否为null
if(str==null)
检查一个字符串既不是null也不为空串:
if( str!=null&&str.length()!=0 )