2 回答
TA贡献377条经验 获得超508个赞
你好:
原始类型(int, long, float, double, short, char等)可又直接使用==比较:
如:
int a = 1, b = 1;
a == b结果为true引用类型(也就是对象)其实也可又用==比较,不过这里的比较不是比较内容了,而是比较对象在内存中的地址,也就相当于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望采纳!
TA贡献109条经验 获得超149个赞
简单的讲,java中的8种基本数据类型都是在栈内存中分配空间,==实际上就是比较他们的值是否相等。而除开这8种基本数据类型,其他的都属于引用类型,创建的对象均是在堆内存中分配空间,这时候==实际上就是比较他们的内存地址是否相同。基本数据类型比值,引用数据类型比地址。现在你就这么简单的了解就行,当你学到后面便会深入了解这些东西的!
添加回答
举报