==比较的是 2个引用(内存地址)
equals是比较这个引用相应的值
当 String name=“ai”的时候在虚拟机的内部是:先建一个String name的引用,然后再栈中创建一个值为“ai"的引用o,再将name的引用地址指向“ai”的引用
name-->o的引用-->ai引用
而 “ai”是直接在栈中创建,如果栈中有那么直接将引用指向"ai"
所以用 == 比较的是 o的引用和 ai的引用 这个比较是不行的
----------------解决方案--------------------------------------------------------
楼主记住任何情况下都是本身的值比较,这里的引用的值其实就是字符串的地址,而不会每个字符的比较
不知道有没有说错,我也是初学者,以前学过C++是这样的,初感觉JAVA也是这种
----------------解决方案--------------------------------------------------------
==对比的是等式两个变量指向的内存
equals()对比的是两个变量的值
----------------解决方案--------------------------------------------------------
能记住更好,记不住也没太大关系,毕竟object类的equal方法子类是要覆盖的。
祝好
----------------解决方案--------------------------------------------------------
equals是比较这个引用相应的值
当 String name=“ai”的时候在虚拟机的内部是:先建一个String name的引用,然后再栈中创建一个值为“ai"的引用o,再将name的引用地址指向“ai”的引用
name-->o的引用-->ai引用
而 “ai”是直接在栈中创建,如果栈中有那么直接将引用指向"ai"
所以用 == 比较的是 o的引用和 ai的引用 这个比较是不行的
----------------解决方案--------------------------------------------------------
楼主记住任何情况下都是本身的值比较,这里的引用的值其实就是字符串的地址,而不会每个字符的比较
不知道有没有说错,我也是初学者,以前学过C++是这样的,初感觉JAVA也是这种
----------------解决方案--------------------------------------------------------
==对比的是等式两个变量指向的内存
equals()对比的是两个变量的值
----------------解决方案--------------------------------------------------------
能记住更好,记不住也没太大关系,毕竟object类的equal方法子类是要覆盖的。
祝好
----------------解决方案--------------------------------------------------------