A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 棉/mg花/x糖 于 2014-2-13 22:05 编辑

关于“equals()”和“==”的使用总结

(1)str1 == str2表示比较str1与str2两个字符串是否引用同一个对象;
(2)str.equals(str2)是表示比较str1与str2两个字符串的内容是否相等;
(3)为了比较基本数据类型变量的值是否相等一般是使用“==”,但这个办法并不适用String对象(或者其
        他任何对象)。即不适用引用类型的比较

请看下面的例子:Test4.java
(1)输出结果为:
         false
         false
         true
         true
         false
         true
(2)对于str1和str3,都是引用同一个字符串常量"abc",其内容也当然相同。
        故"str1 == str3"和"str.equals(str3)"均取真值true。
(3)对于str1和str4,内容虽然相同,但引用的却不是同一对象。原因在于:
        str1引用的是的编译时就确定的字符串常量,而str4引用的是程序运行时才创建的对象。

也就是说:字符串常量"abc"是在编译时就写到内存了。

示例源码如下:
  1. package com.yb.Test;

  2. public class Test4 {
  3.     /**
  4.      * @param args
  5.      */
  6.     public static void main(String[] args) {
  7.         // TODO Auto-generated method stub
  8.         String str1 = "abc";
  9.         String str2 = "Abc";
  10.         String str3 = "abc";
  11.         String str4 = new String("abc");
  12.         System.out.println(str1 == str2);        //输出false
  13.         System.out.println(str1.equals(str2));   //输出false
  14.         System.out.println(str1 == str3);        //输出true
  15.         System.out.println(str1.equals(str3));   //输出true
  16.         System.out.println(str1 == str4);        //输出false
  17.         System.out.println(str1.equals(str4));   //输出true
  18.     }
  19. }
复制代码

内存分析图:



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马