1、String类源码
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {}
从源码上可以看到 String类是通过final修饰的,先浅聊一下final,用final修饰的类表明他是最终类,不能被继承,并且类中的所有属性和方法都默认是final修饰。
什么是String字符串?
如果直接按照字面意思来理解就是多个字符连接起来组合成的字符序列。
1,String字符串是使用一对“”引起来表示;
2,String 用final表示,不可以被继承;
3,字符串的字符使用Unicode编码,一个字符(不区分字母还是汉字)都占两个字节;
4,String实现了Serializable:表示字符串是支持序列化的 表示可以在网络上传输;实现了Comparable接口,表示可以比较大小;
5,String类内部定义了 final char[] value 用于存储字符串数据;value是一个final类型,不可以修改;即value不能指向新的地址,但是单个字符内容是可以改变的;
6,String代表不可变的字符序列,简称不可变性;
7,当对字符串重新赋值的时候,需要重新指定内存区域赋值,不能使用原有的区域进行赋值;当对现有的字符串进行连接操作时,也需要重新指定区域进行赋值,不能使用原有的区域进行赋值;当调用String replace()修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值;
1.1、String类是final修饰的,使得它是一个不可变字符串
不可变的字符串:当字符串对象创建完毕之后,该对象的内容(上述的字符序列)是不能改变的,一旦内容改变就会创建一个新的字符串对象;
2、String对象的创建:
方式一:通过字面量赋值创建,String s1 = “laofu”; 需要注意这里是双引号:“”,区别与字符char类型的单引号:‘’;
方式二:通过构造器创建, String s2 = new String(“laofu”);
2.1、String类的构造方法有很多
2.2、常用的构造方法
void StringGouZao(){
String aa ="aa";
System.out.println(aa);
String bb = new String("bb");
System.out.println(bb);
char[] chars = {'a','b','c'};
System.out.println(chars);
}
public class Test {
public static void main(String[] args) {
String str1 = "hello";
String str2 = "";
char[] arr = {'h','e','l','l','o'};
System.out.println(str1.length());//求字符串度,打印5
System.out.println(str2.length());//求字符串度。打印0
System.out.println(arr.length);//主要数组求长度和字符串求长度的区别,一个调用方法,一个调用属性
}
}