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。

  • 相关阅读:
    ST (Sparse Table:稀疏表)算法
    P3379 【模板】最近公共祖先(LCA)
    AT1357 n^p mod m(洛谷)
    poj2018 Best Cow Fences
    P1024 一元三次方程求解
    poj2456
    poj1064
    P2047 [NOI2007]社交网络(洛谷)
    poj1734
    洛谷P2886 [USACO07NOV]牛继电器Cow Relays
  • 原文地址:https://www.cnblogs.com/divenswu/p/3487935.html
Copyright © 2011-2022 走看看