当前位置:编程学习 > JAVA >>

JAVA看代码

class V{ } public static void main A{ public static void main(string[]args){ string s1="123" string s2="123" system.out.println(s1.equals(s2)); V v1=new v(); v v1=new v(); system.out.println(v1.equals(v2)); } } 当123赋值给S1时候,自动创建STRING类的对象S1,同时STRING类里有该类重写的equals()方法,而再次创建类V1的时候里面没有重写的equals(),所以继承OBJECT类的equals()方法,既然STRING类里对父类里的equals()重写了,OBJECT类的equals()发生了改变,那为什么再次调用父类OBJECT类里的方法却是不行的呢还是以前为被STRING类重定义的equals()方法?
追问:public class A{
 private String name;
 public static void main(String[]args){
  A test=new A();
  test.name="123";
  String s1="123";
  String s2="123";
  System.out.println(s1.equals(s2));//输出true
  Object v1=new Object();
  Object v2=new Object();
  System.out.println(v1.equals(v2));//输出false(为啥是假呢?)
}不是说子类继承父类的情况下重写父类的方法,再次调用还是子类重写的那个方法吗所有的类都是继承于object,其中的tostring()是他其中的一个方法。你到底会不会啊-.-什么叫博而不精呢原装正版清华大学教材那意识是不是string类在重写equals() 时候把equals()方法权限修改为private 了?
答案:说实话,你能提出这个问题挺好的,虽然这个问题比较基础。
你的代码写的很凌乱,我帮你写了下:
public class A{
 private String name;
 public static void main(String[]args){
  A test=new A();
  test.name="123";
  String s1="123";
  String s2="123";
  System.out.println(s1.equals(s2));//输出true
  Object v1=new Object();
  Object v2=new Object();
  System.out.println(v1.equals(v2));//输出false
  Object s3=new Object();
  Object s4=new Object();
  s3="456";
  s4=test.name;
  System.out.println(s3.equals(s4));//输出false
 }
}
 
你要理解引用这个概念。
其他:代码有问题吧。。。 string 重写的equals()作用域是自己,以及继承string 的类  。。。
他无法改变父类原有的方法。。。所以v还是调用的object中的equals() 

上一个:java中,xml和html之间的联系和区别呢?
下一个:struts2中什么时候使用filter什么时候使用interceptor?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,