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

java里为什么数字可以用比较运算符==比较,而字符串不可以

java里为什么数字可以用比较运算符==比较,而字符串不可以

哈尼露易丝 2016-06-13 12:57:00
java里为什么数字可以用比较运算符==比较,而字符串不可以
查看完整描述

2 回答

已采纳
?
慕莱坞9220042

TA贡献377条经验 获得超508个赞

你好:

  1. 原始类型(int, long, float, double, short, char等)可又直接使用==比较:
    如:
    int a = 1, b = 1;
    a == b结果为true

  2. 引用类型(也就是对象)其实也可又用==比较,不过这里的比较不是比较内容了,而是比较对象在内存中的地址,也就相当于C/C++中的指针。所以
    String s = "abc", s1 = s;
    这时候 s == s1结果为true,因为它们指向内存中的同一个地址,而
    String s = "abc";
    String s1 = "abc";
    这两条语句看似都把"abc"同时赋给了s和s1,但实际上在内存中是分配了两块内存,一块存放"abc",另一块存放另一个"abc",s和s1的地址不同,所以
    s == s1结果是false
    那么如何比较它们的内容而不是比较地址呢,java的基类Object中有equals方法,用于比较两个对象的内容是否相同,只要子类实现了该方法,就可以使用此方法进行比较,String这么强大的类当然实现了该方法,所以比较两个字符串是否相同应该使用下面的方法:
    s.equals(s1)或者s1.equals(s),这两种方法的结果都是true

    望采纳!

查看完整回答
3 反对 回复 2016-06-13
?
冰山点水

TA贡献109条经验 获得超149个赞

简单的讲,java中的8种基本数据类型都是在栈内存中分配空间,==实际上就是比较他们的值是否相等。而除开这8种基本数据类型,其他的都属于引用类型,创建的对象均是在堆内存中分配空间,这时候==实际上就是比较他们的内存地址是否相同。基本数据类型比值,引用数据类型比地址。现在你就这么简单的了解就行,当你学到后面便会深入了解这些东西的!

查看完整回答
3 反对 回复 2016-06-13
  • 2 回答
  • 0 关注
  • 1879 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信