试题:
问:以下程序一共创建了几个对象
public class StringTest03 {public static void main(String[] args) {String s1=new String("aaa");String s2=new String("aaa");}
}
答:一共创建了3个对象
1个对象是"aaa"在方法区字符串常量池中
2个对象是堆内存中存储的String对象
String类的构造方法实例:
public class StringTest03 {public static void main(String[] args) {String s1="aaa";System.out.println(s1);//按道理来说s1在实际的内存存储中是一个内存地址,但是这里s1属于String类,进行了重写//说明也进行了重写toString方法//当一个普通的类的引用输出时,调用的是Object类中的toStirng方法,由于此方法没有重写,故输出的是内存地址Customer customer=new Customer("aaa");//这里只掌握最常用的构造方法byte[] bytes={97,98,99};//分别对应a,b,cString s2=new String(bytes);//前面说过:输出一个普通的引用的时候,会自动调用toStirng方法,默认object的话,会自动输出对象的内存地System.out.println(customer);//通过输出结果我们得知,String类已经重写了toString方法//输出字符串对象的话,输出的不是对象的内存地址,而是字符串本身System.out.println(s2);}
}
运行结果:
常用的String构造方法
String s="aaa";
String s=new String("aaa");
Stinrg s=new String(char数组)
String s=new String(char数组,起始下标,长度);
Stinrg s=new String(byte数组)
String s=new String(byte数组,起始下标,长度);