如果是两个字符串变量,相比较是否相等怎么办?
if=(a.equals(b)?)
能不能if(a=b)
如果我不同过new建立对象,一般的string变量a、b相比较,比较的也是地址么?
简单!java字符串相比较
答案:2 悬赏:50
解决时间 2021-11-25 04:55
- 提问者网友:千城墨白
- 2021-11-24 23:26
最佳答案
- 二级知识专家网友:桑稚给你看
- 2021-11-25 00:31
if (a.equals(b))
一般不用if(a==b)这种方式,因为这种方式比较的是两个字符串在内存中的地址是否相同,而不是比较两个字符串的内容是否相同。equals方法比较两个字符串的内容,它不关心这两个字符串到底存放在内存中的什么地方。但如果a和b实际上是内存中同一个地方的字符串,那么它们肯定是地址相同且内容也相同的。所以用equals肯定没有问题。
补充:是的,对字符串来说,==永远比较的是地址。只是有时候,两个字符串同时使用字符串池中的同一个字符串,这时候它们的地址是相等的。除此之外,==得到的结果永远是false
一般不用if(a==b)这种方式,因为这种方式比较的是两个字符串在内存中的地址是否相同,而不是比较两个字符串的内容是否相同。equals方法比较两个字符串的内容,它不关心这两个字符串到底存放在内存中的什么地方。但如果a和b实际上是内存中同一个地方的字符串,那么它们肯定是地址相同且内容也相同的。所以用equals肯定没有问题。
补充:是的,对字符串来说,==永远比较的是地址。只是有时候,两个字符串同时使用字符串池中的同一个字符串,这时候它们的地址是相等的。除此之外,==得到的结果永远是false
全部回答
- 1楼网友:野心和家
- 2021-11-25 01:43
在java中存在一个字符串池的概念,也就是说如果你声明的几个字符串对象的内容是一样的,那么他们只占用同一块内存区域,这里你声明的a、b字符串的内容都是abc,所以在堆内存中只开辟了一块区域用于存储字符串"abc",a、b引用都指向这块内存,所以这里"abc"和b是相等的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯