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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 漩涡java 中级黑马   /  2014-2-21 08:27  /  714 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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"是在编译时就写到内存了。

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

public class Test4 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str1 = "abc";
        String str2 = "Abc";
        String str3 = "abc";
        String str4 = new String("abc");
        System.out.println(str1 == str2);        //输出false
        System.out.println(str1.equals(str2));   //输出false
        System.out.println(str1 == str3);        //输出true
        System.out.println(str1.equals(str3));   //输出true
        System.out.println(str1 == str4);        //输出false
        System.out.println(str1.equals(str4));   //输出true
    }
}
复制代码

内存分析图:


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

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