目录
2.2.2:public String(String original)
2.2.3:public String(char[] chs)
2.2.4: public String(byte[] chs)
一:String的概念
在Java中,String类位于java.lang包中,用于创建和处理文本字符串。String对象一旦创建,其内容就不能修改,它们通常是不可变的。这是因为String类被设计为final类,避免继承时可能出现的修改。(下图是API中String的解释)
二:String的两种构建方式
2.1:直接赋值
String 变量名="赋值";
String s="asadfsgsv";
System.out.println(s);
//运行结果: asadfsgsv
优点:此方法会节省内存空间并提升性能。
java存在一个常量池,可以用来存储字符串常量,称为字符串池(StringTable)。在编译期,JVM优先去字符串池(堆空间)中查找是否存在“asadfsgsv”。如果存在,就无需开辟新的内存空间,直接使用;如果不存在,就在常量池中开辟一个新的内存空间来储存储“asadfsgsv”;在栈内存中开辟一个名字为s的空间,来存储“asadfsgsv”在字符串池中的地址值。
缺点:赋值呆板。一经赋值,无法灵活更改,后期无法根据需求更改字符串的长度或者字符。
2.2:创建new关键字
2.2.1:public String()
1.public String() 创建空白字符串,不含任何内容
String s1=new String();
System.out.println(s1);
//运行结果为' '
//无单引号,只有一个空格。此处为表达出空格,特地添加
不推荐此方法赋值,此方法意义不大。
2.2.2:public String(String original)
public String(String original) 根据传入的字符串,创建字符串对象
String s2=new String("abc");
System.out.println(s2);
//运行结果为 abc
2.2.3:public String(char[] chs)
public String(char[] chs) 根据字符数组,创建字符串对象
char[] chs={'a','b','c'};
String s3=new String(chs);
System.out.println(s3);
//运行结果为: abc
此方法通过传递一个字符数组构建形成一个字符串,类似于将拼接在一起。创建过程看似十分笨拙,但使用方面十分灵活,可以通过修改数组,来进一步修改字符串的长度或者内容。解决了直接赋值一经赋值无法对字符串进行更改缺点。
2.2.4: public String(byte[] chs)
public String(byte[] chs) 根据字节数组,创建字符串对象
byte[] bytes={97,98,99,100};
String s4=new String(bytes);
System.out.println(s4);
//运行结果: abcd
//在ASCII码表中 97-a 98-b 99-c 100-d 将字节转换成字符,输出为abcd
此方法通过传递一个字节数组构建形成一个字符串,一般要将字节信息进行转换,转成字符串,使用此结构。创建过程看似更加笨拙,但以后网络中传输的数据其实都是字节信息,更够更加高效地满足修改需求。使用此方法时需注意48-57分别对于阿拉伯数字0-9。
创建new关键字方法缺点:每次创建变量都需要开辟一个新的空间,相比直接赋值,可能会造成地址滥用。比如之前创建s1,时间一长,忘记该变量,再创建相同用法的s2,s1与s2用法和赋值一样,但由于使用new关键词创建,则需开辟两块内存空间,但如果是直接赋值则一定程度上避免此浪费。