zoukankan      html  css  js  c++  java
  • Java中“==”的使用,以及“==”和equal的比较

    int i02=59 ,这是一个基本类型,存储在栈中。

     Integer i03 =Integer.valueOf(59); 因为 IntegerCache 中已经存在此对象,所以,直接返回引用。

     Integer i04 = new Integer(59) ;直接创建一个新的对象。

     System. out .println(i01== i02); i01 是 Integer 对象, i02 是 int ,这里比较的不是地址,而是值。 Integer 会自动拆箱成 int ,然后进行值的比较。所以,为真。

     System. out .println(i01== i03); 因为 i03 返回的是 i01 的引用,所以,为真。

     System. out .println(i03==i04); 因为 i04 是重新创建的对象,所以 i03,i04 是指向不同的对象,因此比较结果为假。

     System. out .println(i02== i04); 因为 i02 是基本类型,所以此时 i04 会自动拆箱,进行值比较,所以,结果为真。

    另外的实例:

    public class Test{

          public static void main(){

              String s1="monday";

              String s2="monday";

             if(s1==s2){system.out.printLn("s1=s2");}

            else{system.out.printLn("s1!=s2");}

    }

    }

    输出:s1=s2;//

    public class Test{

          public static void main(){

              String s1="monday";

              String s2= new String("monday");

             if(s1==s2){system.out.printLn("s1=s2");}

            else{system.out.printLn("s1!=s2");}

    }

    }

    输出:s1!=s2;//

    字符串缓冲池
    原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1
    将s2引用s1所引用的对象"Monday"
    第二段程序中,使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"Monday"Sting对象被创建在内存中。他们的值相同,但是位置不同,一个在池中游泳一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢?

    "=="和equal的比较

    一、比较对象为基本数据类型(byte,short,char,int,long,float,double,boolean)
    比较两个基本数据类型是否相等用==,因为只有类才会有equals方法。

    备注:String不是基本数据类型

    二、比较对象为引用数据类型

    euqals和==本质上都是比较比较的是两个对象的引用(内存地址)是否相同。equals()是Object类的方法 ,object类是所有类的基类,所以每个类都会继承equals()方法。
    但在String,Integer,Date在这些类当中重写了equals方法,而不再是比较对象在堆内存中的存放地址了,而是比较它们指向的实体(内容)是否相同。
  • 相关阅读:
    webgl变换:深入图形平移
    webgl基础:顶点到片元的联动
    webgl基础:绘制多边形
    webgl初章:进入3D世界
    canvas动画实战与性能优化
    初识canvas(二)
    初识canvas(一)
    SQL换行符
    正则表达式校验
    2019.7.2 JQ
  • 原文地址:https://www.cnblogs.com/Lxiaojiang/p/6709950.html
Copyright © 2011-2022 走看看