java字符串
Java中有个类叫做String类
java.lang public final class String extends Object
implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc{}
该String类代表字符串。 在Java程序中,如所有字符串文字"abc" ,实现为这个类的实例。
字符串是常量; 创建文件后,它们的值不能改变。 字符串缓冲区支持可变的字符串。 因为字符串对象是不可变的,他们可以共享。 例如:
String str = "abc";
相当于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
下面是字符串如何使用一些例子:
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2, 3);
String d = cde.substring(1, 2);
类String包括用于检查序列的单个字符,比较字符串,搜索字符串,提取字符串,以及创建与转换为大写或小写所有字符的复制方法。 案例映射基于由指定的Unicode标准版本Character类。
Java语言提供对字符串连接运算符(+)的特殊支持,以及对其他对象的字符串转换。 有关字符串串联和转换的更多信息,请参见Java™语言规范 。
除非另有说明,传递一个null参数构造函数或方法在这个类会导致NullPointerException被抛出。
字符串的比较
下面来看几个代码
String s1 = "这是一个字符串";
String s2 = "这是一个字符串";
System.out.println(s1 == s2);//true
System.out.println(s1.equals(s2));//true
String s3 = new String("这是一个字符串");
String s4 = new String("这是一个字符串");
System.out.println(s3 == s4);//false
System.out.println(s3.equals(s4));//true
String str = "字符串";
String s5 = "这是一个" + str;
String s6 = "这是一个" + str;
System.out.println(s5 == s6);//false
System.out.println(s5.equals(s6));//true
String s7 = "这是一个" + "字符串";
String s8 = "这是一个字符串";
System.out.println(s7 == s8);//true
System.out.println(s7.equals(s8));//true
String s9 = "这是一个" + str; //str = "字符串"
String s10 = "这是一个字符串";
System.out.println(s9 == s10);//false
System.out.println(s9.equals(s10));//true
字符串一些常用的Api
public boolean isEmpty()
返回true当且仅当, length()为0 。
返回:
true如果length()是0 ,否则false
public char charAt(int index)
返回字符串指定下标的字符
参数:
index-该指数char值。
返回:
指定下标的char字符
抛出:
IndexOutOfBoundsException -如果index参数大于该字符串的长度负或小。
public byte[] getBytes(Charset charset)
编码该String成使用给定的字节序列的字符集 ,并将结果存储到一个新的字节数组。
这个方法总是会替换错误输入和不可映射的字符序列与此charset默认替换字节数组。 所述java.nio.charset.CharsetEncoder当需要在编码处理更多的控制类应当被使用。
参数:
charset - 的字符集被用于编码String (为空表示使用默认的字符集)
返回:
将得到的字节数组
public int compareTo(String anotherString)
长度相同:
从第一位开始比较,如果相同返回0,如果不同则马上返回这两个字符的ascii值的差值。
长度不同:
直接返回长度差值。
值0
如果参数字符串等于该字符串;
参数:
anotherString -用来比较的字符串
返回:
返回比较结果
抛出:
NullPointerException -如果指定对象为null
ClassCastException -如果指定对象的类型阻止其相对于该对象。
public boolean startsWith(String prefix, int toffset)
查询是不是以 字符串prefix 开头
参数:
prefix - 前缀。
Toffset - 从哪里开始寻找这个字符串。
返回:
如果是 返回true 否则false
public boolean endsWith(String suffix)
此字符串是否以指定的后缀结束测试。
参数:
后缀 - 后缀。
返回:
如果是 返回true 否则false
public int indexOf(String str)
返回此字符串的指定子第一次出现处的索引。
参数:
str - 要搜索的字符串
返回:
指定的字符串的第一个出现的索引,找不到返回-1
public int lastIndexOf(String str)
返回此字符串指定子字符串最后一次出现处的索引。
参数:
str - 要搜索的字符串
返回:
指定的字符串的第一个出现的索引,找不到返回-1
public String substring(int beginIndex,int endIndex)
截取一个字符串的开始下标 到 结束下标
并且创建一个新的字符串返回
参数:
beginIndex - 开始索引
endIndex的 - 结束索引 -如果这里不写默认到结尾
返回:
指定的字符串。
抛出:
IndexOutOfBoundsException - 如果beginIndex为负,或者endIndex大于字符串长度,或beginIndex大于endIndex 。
public String replace(char oldChar,char newChar)
替换字符串里面的内容
参数:
oldChar - 旧符。
newChar - 新字符。
返回:
替换后的字符串
public String replaceAll(String regex,String replacement)
替换正则表达式匹配到的字符串。
参数:
regex- 正则表达式到该字符串是否要被匹配
replacement - 字符串被替换为每个匹配
返回:
得到的String
抛出:
PatternSyntaxException -如果正则表达式的语法无效
public String[] split(String regex,int limit)
将正则表达式匹配到的字符串返回一个字符串数组
参数:
regex - 定界正则表达式
limit - 限制 如果不写表示没有限制
返回:
正则表达式匹配的字符串的数组
抛出:
PatternSyntaxException -如果正则表达式的语法无效
public static String join(CharSequence delimiter, CharSequence... elements)
返回一个有分隔符组成的字符串
例如:
String message = String.join("-", "Java", "is", "cool");
// message: "Java-is-cool"
需要注意的是,如果一个元素为null,则"null"加入。
PARAMS:
delimiter - 分隔符
elements - 要加入的元素
返回:
一个新的String ,其组成的elements分离用delimiter
抛出:
NullPointerException -如果delimiter或elements是null
public String toLowerCase()
将大写字母转换为小写
返回:
将字母转换成小写的字符串
public String toUpperCase()
将字母转换成大写
返回:
将字母转换成大写的字符串
public String trim()
删除收尾空白字符
返回:
删除收尾空白字符之后的字符串