笔记:String与new String(),Integernew Integer()int的区别
Posted 尚墨1111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记:String与new String(),Integernew Integer()int的区别相关的知识,希望对你有一定的参考价值。
一、String 与 new String()的区别
1.直接赋值,如果值相同,就直接引用这个对象,不用新建–> true
2.用new新建对象,新建对象是直接在堆内存中新建一个对象,再赋值,用new新建对象的对象****都不是同一个对象
public void test() {
// 搞清楚new与常量池的关系
// 现在java的常量池中寻找 abc 对象
// 如果没有,在堆内存中new一个值为”abc” 的对象,放到常量池中.
// 1.直接赋值,如果值相同,就直接引用这个对象,不用新建.--> true;
// 2.用new新建对象,新建对象是直接在堆内存中新建一个对象,再赋值.用new新建对象的对象都不是同一个对象
String a = "abc";
String b = new String("abc");
System.out.println(a == b);//false;
String c = new String("abc");
System.out.println(b==c);//false;
String d = "abc";
System.out.println(a==d);//true
System.out.println("--------");
}
二、int new Integer Integer的区别
1、 两个 new Integer() 变量比较 ,永远是 false
2、Integer变量 和 new Integer() 变量比较 ,永远为 false。
3、 两个Integer 变量比较,
如果两个变量的值在区间-128到127 之间,则比较结果为true,
如果两个变量的值不在此区间,则比较结果为 false
4、 int 变量 与 Integer、 new Integer() 比较时,只要两个的值是相等,则为true
public void test() {
// Integer 也是同理,只要是new的都是对象,不相等
// 两个 new Integer() 变量比较 ,永远是 false
// Integer变量 和 new Integer() 变量比较 ,永远为 false。
// Integer变量 指向的是 java 常量池 中的对象,而 new Integer() 的变量指向 堆中 新建的对象,两者在内存中的地址不同。
// 两个Integer 变量比较,
// 如果两个变量的值在区间-128到127 之间,则比较结果为true,
// 如果两个变量的值不在此区间,则比较结果为 false
// int 变量 与 Integer、 new Integer() 比较时,只要两个的值是相等,则为true
// Integer 和 int 比较时,java会自动拆包装为int ,然后进行比较,
// 实际上就变为两个int变量的比较
int x = 3;
Integer y1 = 3;
Integer y2 = 3;//会翻译成 Integer i = Integer.valueOf(100)
Integer I1 = new Integer(3);
Integer I2 = new Integer(3);
System.out.println(I1==I2);//false;
System.out.println(y1==I1);//false;
System.out.println(y2 == y1);//true;
System.out.println(x==y1);//true;
System.out.println(x==I1);//true;
}
以上是关于笔记:String与new String(),Integernew Integer()int的区别的主要内容,如果未能解决你的问题,请参考以下文章
Java面试宝典_君哥讲解笔记04_java基础面试题——String s=new String(“xyz“);创建了几个String Objectequals和hashCodehashCode(