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

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

哈尼露易丝
浏览 1910回答 2
2回答

慕莱坞9220042

你好:原始类型(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望采纳!

冰山点水

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

相关分类

Java