java == 和equals的区别

今天用递归算法实现一个反序打印的小程序,当输入over时结束输入,反序打印,但是算法不能成功

//用递归实现反序打印

public static void reverse() {
java.util.Scanner in = new java.util.Scanner(System.in);
String ch = in.nextLine();
if (ch != "over") {
reverse();
System.out.print(ch + ",");
}

}


反复琢磨最后发现,原来java  ==和equals方法不同,当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,因为(ch)的地址和(over)的地址不同(两个不同的对象),当String中equals方法是比较字符串。JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

所以把if ((!ch.equals("over")) 就可以实现程序功能了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值