String的“生命起源”
String 确切地说是类的一种,任何一种语言都没有字符串数据类型,Java是用String 方便字符串操作,C语言是加入头文件等等。
String 的两种初始化
String 静态初始化,直接赋值
String str = "hello";
String 的静态初始化会将字符串存进数组,数组中没有重复字符串,str 和 str1 指向的是同一个字符串
String str = "hello";
String str1 = "hello";
String 动态初始化,new 开辟空间,不会存进数组
String str2 = new String("hello");
因此,str == str1 是 true,str == str2 是 false
String 的加号真的是“+”嘛?
刚才讲了 String 是类,既然是类就不会有“+”操作,每用一个加号其实指向都发生了改变,如下代码
String str1 = "hello";
String str2 =str1+"word";
String str3 = str2+"!";
str1 指向的是 hello 的地址,str2 指向的是 helloword 字符串的地址,str3 指向的是 helloword! 字符串的地址
String类的常见方法
这里总结了十个
public class Person{
public static void main(String[] args) {
String String1 = new String("abc");
System.out.println("原字符串:"+String1);
//连接操作,将另一个字符串连接在原字符串后面
String1 = String1.concat("def");
System.out.println("尾部连接后的字符串:"+String1);
//替换操作,方法括号内第一个是原字符串要被替换的部分,第二个是替换的内容
String1 = String1.replace("def", "123");
System.out.println("替换后的字符串:"+String1);
//截取操作,如下将索引号0-3的字符截取
String1 = String1.substring(0,3);
System.out.println("截取后的字符串:"+String1);
//查找索引号操作,查找字符操作
char number = String1.charAt(2);
System.out.println("索引号2的字符:"+number);
int word = String1.indexOf("b");
System.out.println("字符b的索引号:"+word);
//判断字符串前段,后段是否相同的操作
boolean a = String1.endsWith("c");
System.out.println("判断后缀是否相同:"+a);
boolean b = String1.startsWith("a");
System.out.println("判断前缀是否相同:"+b);
//判断两个字符串是否完全相同的操作
String String2 = "abcd";
boolean c = String1.equals(String2);
System.out.println("判断字符串是否相同:"+c);
//将小写字符变为大写
String1 = String1.toUpperCase();
System.out.println("abc的 大写:"+String1);
//拆分字符串
String String3 = "姓名:xxx;年龄:xx";
String[] arr = String3.split("\\;");
for(String i:arr) {
System.out.println("第i个元素String:"+i);
}
}
}
String和他的挛弟StringBuffer
简单的讲,String是不可变字符串,StringBuffer是可变字符串,这是两者最大的区别。