笔记:String与new String(),Integer、new 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() 变量比较 ,永远为 false3、 两个Integer 变量比较,
       如果两个变量的值在区间-128127 之间,则比较结果为true,
       如果两个变量的值不在此区间,则比较结果为 false

4int 变量 与 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;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值