Java的String类
创建字符串
String str = String(String original);
String str = String(char[] value);
String str = "abc";
可能会遇到的问题:
public static void main(String[] args) {
String s1 = "abcd";//直接创建
String s2 = new String("abcd");//String对象创建
String s3 = "ab" + "cd";//直接创建
if(s1 == s2){//引用不同
System.out.println(1);
}
if(s1 == s3){//引用相同
System.out.println(2);
}
if(s2 == s3){//引用不相同
System.out.println(3);
}
}
那么这段代码的运行结果是什么呢?
2
String创建的字符串在内存中的字符串常量区,而new创建的对象在堆内存上去引用字符串常量区的字符串。
注意 String类是被final修饰的,所以一旦创建是不能被修改的,每次当你修改实际上是重新创建一个字符串对象,因此不建议频繁的去修改字符串的内容,如果遇到要经常修改的建议使用StringBuffer和StringBuilder类的append()方法。
字符串长度(length)
用于获取字符串中包含的字符的个数(字符串长度)
str.length()
连接字符串(concat)
String类中连接字符串有两种方式:
string1.concat(string2)
返回一个string1和string2拼接后的新字符串,该方法也可以对字符串常量使用如:
"abcd".concat("123")
比较常用的方法是使用 + 进行字符串拼接,这种方式也可以拼接其他类型数据如:
//1.
str1 + " abcd" + " hello";
//2.
"" + 3.14159
//这种方式也可以用于其他类型数据转字符串的方法
获取指定下表下的字符(charAt)
和数组一样,通过下标(从零开始)访问字符串的内容
str.charAt(int index)
可以用此遍历字符串,也可以先将字符穿转为数组在用下标操作如:
int [] ch = str.toCharArray();
for(int i = 0;i < ch.length;i++){
......
}
判断字符串是否相等(equals)
判断两个字符串的内容是否相等而不是仅仅比较两个字符串对象的地址,返回值是true或false如:
String str1 = "hello";
String str2 = new String("hello");
System.out.println(str1.equals(str2));
System.out.println(str1.equals("hello"));
System.out.println("hello".equals(str2));
以上代码的输出结果均为true
,
除此之外还有一个:
String str1 = "HeLLO";
String str2 = "hEllo";
System.out.println(str1.equalsIgnoreCase(str2));
作用是忽略大小写进行比较可以用在登录验证码内容的判断
判断字符串是否包含部分字串
判断字符串中是否包含部分字串,返回值为true
或false
boolean contains(CharSequence chars);
//用法
String s1 = "abccba";
System.out.println(s1.contains);
该方法底层是用KMP实现的,执行速度还是挺高的
字符串分分割
将字符串按照指定内容进行分割
String s1 = "name=zhangsan&psw=222369";
String[] s = s1.split("&|=");//多个分割符用|连接