为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦各位大神帮忙解释下

还是没有明白为什么s3==s4返回false

正在回答

5 回答


http://img1.sycdn.imooc.com//58e2884d00017ce208190460.jpg

内存地址是不同的,s4在s3之后将"I love imooc "+s1 赋值给s4.此时开辟了新的内存空间./.

以上为个人理解.错误之处望各位斧正

1 回复 有任何疑惑可以回复我~

粗略來説,“==”是看两个字符串的内存地址是不是相同,”equals“ 就是看它们的字符是不是相同的

你可以看看相關博客好好研究一下内存分析

0 回复 有任何疑惑可以回复我~

比较值是否相等应该用equal,但是这里用equal却不行,这是我为什么

public class HelloWorld {

    public static void main(String[] args) {

// 定义一个字符串

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

        

        // 出现次数

int num = 0;

        

         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数

for ( int i=0;i<=s.length()-1;i++)

{

            // 获取每个字符,判断是否是字符a

if (charAt(i).equal('a')) {

                // 累加统计次数

num++; 

}

}

System.out.println("字符a出现的次数:" + num);

}

0 回复 有任何疑惑可以回复我~
#1

凌晨四点D洛杉矶

要重写object类中的equals方法
2017-06-19 回复 有任何疑惑可以回复我~

String类型或其他的引用类型的变量中存放的是对象的地址,并不是对象本身,这点和int,char等一些基本数据类型是不同的,由于s3和s4存储的并不是同一个对象,所以s3和s4存储的对象的地址值也就不同,s3也就不等于s4了,但s3.equals(s4)不同,s3.equals(s4)是将s3和s4所引用的对象分别给取出来,比较的是对象本身,当s3和s4所指向的对象相同时,s3.equals(s4)也就相同了,要是不好理解请看下图更直观

http://img1.sycdn.imooc.com//587367b70001ab6811050678.jpg

1 回复 有任何疑惑可以回复我~
#1

没有梦想的咸魚

怎么有种指针的意味
2017-02-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

麻烦各位大神帮忙解释下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信