用Java从txt文件读取字符串内容,读取出来进行比较,相同的字符却不能相等,比如从txt读取出string="123",但是读出来后用它比较如if(string=="123") { }
if判断是false,望大神指教
两个不同对象比较,当然返回的是false了
在java中对比较字符串是否相等一般用equals方法
if(string.equals("123")){ }
字符串之间用equals是比较是否一样
== ,判断的是内存地址。看多个引用是否指向,同一个对象。equals 比较的是内容,是值。如果==为true
,equals 返回值也一定是true,反之则不然。String.equals().重写了object的equals方法,你可以看jdk源码,
就可以知道他们的真面目
对string一般用equals
== 比较的是地址 ,.equals()比较的是内容 String类复写了object的equeals()
这么跟你说吧,在java中什么都可以看做是一个对象, 没错,你的String也是一个对象,它指向了一段值为“123”的内存, 你从txt文件中读取出来的“123”也是一个对象。 在java中你如果想返回true的话,就得使用equals方法,这个方法就是用来比较对象中的值用的。而“==”这个方法实际上比较的是两个对象的地址
根据你提的这个问题我估计你还无法理解地址是什么,但是你要记住的是equals比较的是对象的值,“==”对比的是两个对象的地址
== 比较的是 数据类型的值 或者 引用变量的对应值的存储地址
equals 比较的是 引用对象的内容
例如:字符串1“love”指向引用变量a,字符串2“love”也指向另一个引用变量b;
然而 a和b中的“love”是指向不同的 也就是他们的位置不同 但是内容相同的
所以a.equals(b)为true 而a==b为 false;
若果说 a和b是指向同一个位置的“love” 那么equals和==都是true;
if("123".equals(变量名)){},字符串类型的比较用equals
比较字符串内容 是否相等一般用equals方法