public class MyKeyTest {

 
 int a;
 int b;
public MyKeyTest(int a,int b) 
{
this.a = a;
this.b =b; 
}
 
public static void main(String[] args) {
// TODO: Add your code here
MyKeyTest mkt = new MyKeyTest(5,4);
System.out.println(mkt);
}
}
//我是一个初学者,对于上边这个程序,打出的结果是MyKeyTest@ad3ba4,
我打印的是一个对像。就是上边这个,
我不理解是什么意思,请大侠帮忙。

解决方案 »

  1.   

    如果你没有重写 这个类的toString() 方法没人就会打印出类名@内存地址  即 : MyKeyTest@ad3ba4 
      

  2.   

    MyKeyTest mkt = new MyKeyTest(5,4);
    String aa = mkt.toString();
    System.out.println(aa);和你的效果一样!
      

  3.   

    public class MyKeyTest {

     
     int a;
     int b;
    public MyKeyTest(int a,int b) 
    {
    this.a = a;
    this.b =b; 
    }
        public String toString()
    {
    return "hello world";
    }
     
    public static void main(String[] args) {
    // TODO: Add your code here
    MyKeyTest mkt = new MyKeyTest(5,4);
    System.out.println(mkt);
    }
    }
      

  4.   

    MyKeyTest 的基类是隐含的 Object.class
    如果在MyKeyTest 没有覆盖toString方法, 那么
       System.out.println(mkt); 
    调用的是mkt.toString()方法 ,也就是Object toString()方法
        //Object中toString()方法
        public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
      

  5.   

    waterborn(WaterBorn
    MyKeyTest 的基类是隐含的 Object.class
    如果在MyKeyTest 没有覆盖toString方法, 那么
       System.out.println(mkt); 
    调用的是mkt.toString()方法 ,也就是Object toString()方法
        //Object中toString()方法
        public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }楼上正解
      

  6.   

    前面几位已经说的很清楚了,小弟来补充一点,楼主你把程序改成下面的样子,即复盖基类的toString()方法:
    public class MyKeyTest 
    {int a,b;
     
     public MyKeyTest(int a,int b) 
     {
      this.a = a;this.b =b; 
     }
      public String toString()
      {return ""a+","+b;}
    public static void main(String[] args) {
     MyKeyTest mkt = new MyKeyTest(5,4);
     System.out.println(mkt);
     }
    }
    程序运行到System.out.println(mkt)时会自动去调用mkt所在类的toString()方法,如果这个类中没有重写这个方法,就直接调用Object类的toString()方法
      

  7.   

    基本这个问题楼上几位都已经说得很清楚了,这是初学者容易迷惑的地方,这也是java的一个特色吧。
      

  8.   

    上面都讲的差不多了,MyKeyTest@ad3ba4其实ad3ba4这一部分是那个对象的hashcode,看看Object的toString()和hashCode()源代码就明白了
        public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
        public native int hashCode();
    这里hashCode()方法是native的表明这个方法是c++实现的,我认为用c++实现有几点原因,首先hashCode的生成存在效率问题,即哈希算法的选择和哈希冲突的解决问题,所以选用c++实现来提高效率,还有一点java不是完全开源,哈希算法对用户保密,其次sun公司提供的是jdk的规范,和自己的一个实现,jdk可以由其他厂商来实现,常见的jdk有weblogic公司的,ibm公司的。。这些jdk在j2ee中会遇到
      

  9.   

    加个toString方法:
    public String toString() {
    return this.a+","+this.b;
    }