黑马程序员技术交流社区

标题: this调用本类中其他函数的问题? [打印本页]

作者: 张青峰    时间: 2012-2-5 19:29
标题: this调用本类中其他函数的问题?
本帖最后由 张青峰 于 2012-2-8 18:09 编辑

我是新学徒,写了这样一个程序:
public class Person{
        String name;
        int age;
       public Person(){
            
        }
        public Person(String name){
            
            System.out.print(this.name = name+"    ");
        }
        public Person(String name,int age){
           
            this(name);
           
            System.out.println( this.age = age);
        }
        public static void main(String[] args){
                Person p = new Person("张三",12);
               
                System.out.println(p);
        }
    }

程序的运行结果是:

张三    12
Person@de6ced

Person@de6ced 这个是什么意思?
作者: 刘峰    时间: 2012-2-5 19:36
Person@de6ced  是你打印的对象的地址值,this代表的是当前对象的引用  this(name)就带表调用对象参数为 (String name)  这个构造函数。

作者: 黑马唐浩    时间: 2012-2-5 20:02
本帖最后由 黑马唐浩 于 2012-2-5 20:03 编辑

我的理解是你的Person类调用的构造方法和
  1. public Person(String name,int age)
  2. {
  3.   this. name = name;
  4.   this.age = age;
  5. }
复制代码
功能是一样的,只是在构造方法调用的时候先调用了Person(String name)和Person(int age)两个构造方法,程序结果张三和12也是在调用上述两个Person构造方法时执行的打印语句。
程序结果Person@de6ced是因为你没有重写Object类的toString()方法造成的。
如果没有重写object的toString方法,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode()).
我觉得是这样,希望能帮到你
作者: 张青峰    时间: 2012-2-5 20:11
为什么会有这个输出 呢 Person@de6ced
作者: 张青峰    时间: 2012-2-5 20:13
哦 原来如此  谢谢
作者: 王文龙    时间: 2012-2-5 20:37
同学,
我想还是在提问题前多看看其他同学的问题,
有好多都是重复的.
作者: 魏腾飞    时间: 2012-2-5 20:46
我看了一下,最后这个p实际上是实例化的对象,存在于堆内存中(含有很多内容如age、name等)等同于一个数组吧。在直接输出时P时相当于直接输出数组名,所以出现了Person@de6ced。
作者: 彭沛东    时间: 2012-2-5 21:41
  打印的是指向对象在内存中的地址。
作者: 易伟    时间: 2012-2-5 23:10
p是一个引用变量,存放的是你实例对象存放在堆内存中的地址值,这样p就指向了这个对象。
作者: 秦碧    时间: 2012-2-6 00:03
p为引用型变量,若打印 期打印结果为
p所引用的类的类名@p所指对象的十六进制地址
作者: 黑夜里的白猫    时间: 2013-5-22 16:19
你认真看看 毕向东老师的视频的话,应该很容易找出答案的。

Person p=new Person();
主函数在栈内存中开辟一块空间,并且定义了一个p变量,
= 右边,是在堆内存中开辟了一个空间用来存放对象,
而对象又是一个实体,
在堆内存中 每一个实体都有一个地址值,
将这个地址值给p之后,就可以通过p的值来找到这个对象,
你说的那个Person@de6ced就是地址值了;






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2