笔记: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() 变量比较 ,永远为 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;
    }

以上是关于笔记:String与new String(),Integernew Integer()int的区别的主要内容,如果未能解决你的问题,请参考以下文章

Java 基础知识点 笔记总结

Thinking in Java 整理笔记:字符串

Thinking in Java 整理笔记:字符串

Java面试宝典_君哥讲解笔记04_java基础面试题——String s=new String(“xyz“);创建了几个String Objectequals和hashCodehashCode(

leetcode笔记11 First Unique Character in a String

String使用字面值常量赋值与new String()赋值的区别