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。

  • 相关阅读:
    FPGA 设计怎样进行面积优化(逻辑资源占用量优化)
    实现文件下载的java代码
    java推断字符串是否为乱码
    cocos2dx 制作单机麻将(二)
    CPU 风扇清理灰尘加油全过程图解
    初识 Cloudera Impala
    怎样设计接口?
    Android ViewPager使用具体解释
    php反射类 ReflectionClass
    memwatch的使用
  • 原文地址:https://www.cnblogs.com/divenswu/p/3487935.html
Copyright © 2011-2022 走看看