/**
* Created by Dale on 2017/5/27.
* 字符串创建的几种方式
* 1.字面值常量
* 2.String() 空参构造:创建一个空的字符串对象
* 3.public String(String original) 使用给定的字符串常量创建一个字符串对象
* 4.public String(byte[] bytes) 给定一个字节数组,根据字节数组的内容翻译成字符串
* 5.public String(char[] value) 给定一个字符数组,将数组翻译成字符串
*
*/
public class Demo {
public static void main(String[] args){
//1.
String s = "abc";
System.out.println(s);
//2.
String s2 = new String();
System.out.println(s2);
//3.
String s3 = new String("123");
System.out.println(s3);
//4.
byte[] bytes = new byte[]{100,99,98,97};
String s4 = new String(bytes);
System.out.println(s4);
}
}
package com.xyf.string;
/**
* Created by Dale on 2017/5/27.
* 字符串为常量,字符串值一旦初始化便不可以修改,即字符串对象内容不变,字符串的引用可以指向其他对象
*
*/
public class Demo2 {
public static void main(String args[]){
String s = "abc";
s="bcd";
System.out.println(s);
// Person p = new Person("嬴渠梁");
// p.setName("嬴驷");
// p = new Person("赢荡");
// System.out.println(p);
//面试题:问比较的结果是多少
String str = "abc";
String str2 = new String("abc");
String str3 = "abc";
System.out.println(str==str2); //false
System.out.println(str==str3); //true
//比较的是字面量
System.out.println(str.equals(str2)); //true
System.out.println(str.equals(str3)); //true
}
}
String string2 = new String("abc");实际上是"abc"本身就是常量池中的一个对象,在运行 new String()时,把常量池中的字符串"abc"复制到堆中,并把这个对象的引用交给string2 。所以创建了两个String对象,一个在常量池中,一个在堆中。