A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张青峰 黑马帝   /  2012-2-5 19:29  /  3770 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张青峰 于 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 这个是什么意思?

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1 OK,已经加上,欢迎踊跃参加论坛交流.

查看全部评分

10 个回复

倒序浏览
Person@de6ced  是你打印的对象的地址值,this代表的是当前对象的引用  this(name)就带表调用对象参数为 (String name)  这个构造函数。
回复 使用道具 举报
本帖最后由 黑马唐浩 于 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()).
我觉得是这样,希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
为什么会有这个输出 呢 Person@de6ced
回复 使用道具 举报
哦 原来如此  谢谢
回复 使用道具 举报
同学,
我想还是在提问题前多看看其他同学的问题,
有好多都是重复的.
回复 使用道具 举报
我看了一下,最后这个p实际上是实例化的对象,存在于堆内存中(含有很多内容如age、name等)等同于一个数组吧。在直接输出时P时相当于直接输出数组名,所以出现了Person@de6ced。
回复 使用道具 举报
  打印的是指向对象在内存中的地址。
回复 使用道具 举报
易伟 黑马帝 2012-2-5 23:10:55
9#
p是一个引用变量,存放的是你实例对象存放在堆内存中的地址值,这样p就指向了这个对象。
回复 使用道具 举报
秦碧 黑马帝 2012-2-6 00:03:57
10#
p为引用型变量,若打印 期打印结果为
p所引用的类的类名@p所指对象的十六进制地址
回复 使用道具 举报
你认真看看 毕向东老师的视频的话,应该很容易找出答案的。

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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马