搜索
写经验 领红包
 > 社会

javastig类型的赋值(java中stig类的用法)

导语:Java中String类型常规赋值与构造赋值的区别

1、String常规赋值

String a = ;  //引用a指向常量池中的对象String b = ; //引用b指向常量池中的对象a == b;   //true

总结:引用a与引用b的指向的地址和内容是完全一致的,运算符比较的是引用指向的对象(或变量)的地址,故返回true。

2、String构造赋值

String c = new String();  // 在堆内存中创建String对象“hello”,在栈内存中创建对象引用cScanner input = new Scanner(System.in);  // 接收键盘输入System.out.println();  String d = input.next();  // 创建方式与new 关键字创建是一样的

总结:尽管引用c与引用d指向的内容的值是一致的,但new关键字会在堆里面开辟新空间,引用c与引用d指向的地址是不同的。故当判断c==d时会返回false。

3、测试代码

System.identityHashCode() // 与Object类中未重写的的hashCode()返回值是一致的。//此处String对象中重写了hashCode()方法,故调用系统方法来判断原始地址值。

4、运行结果

5、结论

①常规赋值,只要赋值是相同的,则地址也是相同的。

②构造赋值,尽管值相同,地址也会不同。

凡是通过new关键字创建的两个对象,系统都会为其分配不同的内存空间,则地址值不相同。

本文内容由快快网络小姿创作整理编辑!