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。

  • 相关阅读:
    Network In Network
    UNIX环境高级编程之第4章:文件和文件夹-习题
    SqlServer 错误日志切换和查看
    hihoCoder
    Mono源码学习笔记:Console类(四)
    Java transientkeyword使用小记
    高速排序算法具体解释与实现
    The Triangle
    iOS开发实践之GET和POST请求
    C#重构经典全面汇总
  • 原文地址:https://www.cnblogs.com/divenswu/p/3487935.html
Copyright © 2011-2022 走看看