23.1 构造方法
23.1.1 无参构造方法
创建一个空的字符串:
public class Demo1 {
public static void main(String[] args) {
String s = new String();
System.out.println("s:"+s);
}
}
23.1.2 有参构造方法(2个)
23.1.2.1 根据字符数组创建字符串
public class Demo1 {
public static void main(String[] args) {
char[] arr = {'a','b','c'};
String s = new String(arr);
System.out.println("s:"+s);
}
}
23.1.2.2 根据字节数组创建字符串
注意字节数组的97代表a,查ASCII即可。
public class Demo1 {
public static void main(String[] args) {
byte[] arr = {97,98,99};
String s = new String(arr);
System.out.println("s:"+s);
}
}
23.2 String字符串——内存空间的理解
如上图所示,new都是在堆内存开辟空间的,而直接等于一个字符串也是,比如String s3 = "abc","abc"只会在堆内存的常量池中创建一次,并且有自己的地址,赋值的时候,直接把"abc"的地址赋值过去。注意!两个字符串比较的是地址值!
为什么单个字符串打印出的不是地址?
因为所有的类继承Object类,所以单独输出一个对象的时候,他会调用Object.toString,打印出来的就是一串表达地址的字符串,最后调用的toString。