private final char value[]; private int hash; // Default to 0 private static final long serialVersionUID = -6849794470754667710L; private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
package String;
public class StringTest01 {
public static void main(String[] args){
String s1 ="abcdef";
String s2="abcdef"+"xy";
//使用String的构造方法
//凡是双引号括起来的内容,都在字符串常量池中有一份
//new对象的时候,一定在堆内存当中开辟了空间
String s3 = new String("xy");
//字符串比较不能使用==比较
String s4 ="hello";
System.out.println(s4); //输出hello String重写toString方法 本应该输出内存地址
String s5 ="hello";
System.out.println(s4==s5); //引用 判断地址是否相同 //true
String s6 = new String("xyz");
String s7 = new String("xyz");
System.out.println(s6==s7); //false
System.out.println(s6.equals(s7)); //true
//常用的构造方法
byte[] bytes ={97,98,99}; //97是a ,98是b ,99是c
String s8=new String(bytes);
System.out.println(s8);
char[]chars={'报','君','黄','金','台','上','意'};
String s9 = new String(chars);
System.out.println(s9);
//截取部分字符的构造方法
//(传入的字符串,数组下标的起始位置,截取的字符长度)
String s10 = new String(bytes,1,2); //bc
System.out.println(s10);
String s11 = new String(chars,2,3); //黄金台
System.out.println(s11);}}
内存图理解
package String;
public class User {
private String name;
private int id;
public User(){
super();}
public User(String name, int id){
super();
this.name = name;
this.id =id;}
public String getName(){return name;}
public void setName(String name){
this.name = name;}
public int getId(){returnid;}
public void setId(int id){
this.id =id;}}
package String;
public class UserTest {
public static void main(String[] args){
User user= new User("张三",110);}}