zoukankan      html  css  js  c++  java
  • 关于Java中equal 和 == 的区别

      在对Java开发还不熟练的时候,往往很多人都喜欢用==去比较两个对象是否相等,有时候就会出现很奇葩的问题。

      其实这类问题并不是奇葩问题,只是我们不够细心而已,在Java中“==”比较两个变量本身的值,即两个对象在内存中的首地址,而“equals()”比较字符串中所包含的内容是否相同,假如我们有两个String 对象:

    String str1 = new String ("1号");  

    String str2 = new String("1号");

    System.out.println(str1==str2);

    上面的三条语句将打出false。原因就是str1和str2不是同一个对象,他们指向的内存地址是不同的。

    String str1 = new String ("1号");  

    String str2 = new String("1号");

    System.out.println(str1.equals(str2));

    上面的三条语句将打出true。虽然str1和str2不是同一个对象,但是他们的内容是是相同的,都是“1号”,因此返回true.

    String str1 = "1号";
    String str2 = "1号";
    System.out.println(str1 == str2);

    上面的三条语句将打出true。原因是str1和str2同时引用了“1号”这个字符常量,也就是str1引用了“1号”,str2引用了“1号”,因此str1和str2的内存地址都是“1号”所对应的内存地址,至于下面的:

    String str1 = "1号"; 
    String str2 = "1号";

    System.out.println(str1.equals(str2));

    返回的是true。

  • 相关阅读:
    两种选择排序法
    三种方法求组合偶数字
    sizeof和mallo
    多态的概念与接口重用
    Delphi Exception的理解
    给老婆留着
    Delphi 一个简单的DELPHI自定义事件的例子
    Delphi 纯Pascal编写的程序,没有通过VCL
    Delphi 继承类的构造函数和析构函数的构建顺序
    Delphi 对象间数据的复制
  • 原文地址:https://www.cnblogs.com/divenswu/p/3487935.html
Copyright © 2011-2022 走看看