string类代表所有字符串--java中的所有双引号字符串都是string类的对象
字符串特点:a-创建的值不可改变,但是可以被共享
b--字符串效果上相当于字符数组char[],但是底层原理是字节数组byte[]
String的常用构造方法
public String() ------创建一个空白字符串对象,不含任何内容
public String(char[] chs)-----根据一个字符数组内容 来创建字符串对象
public String(byte []bys)---根据一个字节数组的内容来创建字符串对象
String s ="abc"------直接赋值创建字符串对象,
public class StringDemo01 {
public static void main(String[] args) {
//public String() ------创建一个空白字符串对象,不含任何内容
String s = new String();
System.out.println("s:"+s);
//public String(char[] chs)-----根据一个字符数组内容 来创建字符串对象
char[] chs ={'a','b','c'};
String s2 =new String(chs);
System.out.println(s2);
//public String(byte []bys)---根据一个字节数组的内容来创建字符串对象
byte[] bys ={97,98,99};
String s3 =new String(bys);
System.out.println(s3);
//String s ="abc"------直接赋值创建字符串对象
String s4 ="abc";
System.out.println(s4);
}
}
String 对象的特点
1.通过new每一次创建字符串对象,每一次new都会开辟一个内存空间,如果内容是相同的,但是地址是不同的
2.以双引号""给出的字符串,只要字符串序列相同(顺序和大小写相同),无论出现多少次,jvm虚拟机都只会创建一个String对象,并在字符串池中维护
String 字符串的比较
用==做比较
基本类型:比较的是数据值是否相同
引用类型:比较的是地址值是否相同
比较字符串的内容:字符串是对象,用一个equals方法来实现比较字符串内容是否相同
public boolean equals(objec anobject) 将此字符串与指定对象进行比较,因为我们比较的是字符串对象,所以参数直接传一个字符串
package String;
//用==做比较
public class StringDemo02 {
public static void main(String[] args) {
//构造方法的方式得到对象
char[] chs ={'a','b','c'};
String s1 = new String(chs);
String s2 =new String(chs);
//直接赋值的方式得到对象
String s3 = "abc";
String s4 = "abc";
//比较字符串对象地址是否相同
System.out.println(s1==s2);//false
System.out.println(s1==s3);//false
System.out.println(s3==s4);//true
//比较字符串内容是否相同
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
System.out.println(s3.equals(s4));//true
遍历字符串通用格式
for(int i=0;i<s.length();i++){ s.charAT(i)//指定索引处的字符值
StringBuilder概述
StringBuilder是一个可变的字符串类,我们可以把它看做一个容器,StringBudiler对象里面的字符串内容是可以改变的
String 和StringBuilder的区别
String里面的内容不可变的
StringBuilder里面的内容是可变的
StringBuilder的构造方法
public StringBuilder----创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)--根据字符串内容,创建可变字符串对象
package String;
//StringBuilder的构造方法
public class StringBuilderDemo {
public static void main(String[] args) {
//public StringBuilder----创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb =new StringBuilder();
System.out.println("sb"+sb);
System.out.println(sb.length());
//public StringBuilder(String str)--根据字符串内容,创建可变字符串对象
StringBuilder sb2 =new StringBuilder("123456");
System.out.println(sb2);
System.out.println(sb2.length());
}
}
StringBuilder的添加与反转
package String;
//StringBuilder的添加与反转
public class StringBuilderDemo03 {
public static void main(String[] args) {
StringBuilder sb =new StringBuilder();
// public StringBuilder append(添加数据)--添加任何类型,并返回对象本身
sb.append("你好").append("在家").append("吃饭").append("然后睡觉");
System.out.println(sb);
//public StringBuilder reverse();反转字符串,---就是返回相反的字符序列
sb.reverse();
System.out.println(sb);
}
}
String和StringBuilder的相互转换
package String;
//String和StringBuilder相互转换
public class StringBuilderDemo04 {
public static void main(String[] args) {
//StringBuilder转换为String--public String toStringg():
//通过重写tostring方法实现
StringBuilder s= new StringBuilder();
s.append("你好");
String sb = s.toString();
System.out.println(sb);
//String转换为SttirnBuilder:public StringBuilder(string s)
//通过构造方法来实现
String s1="你好";
StringBuilder s2 =new StringBuilder(s1);
System.out.println(s2);
}
}
应用案例演示: 字符串拼接/字符串反转升级版