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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姚伟涛 中级黑马   /  2012-4-20 21:53  /  2649 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Point {
int x;
int y;

Point(int _x,int _y) {
x = _x;
y = _y;
}

public static void main (String [] args) {
Point p = new Point (1,2);
System.out.println(p);
}

}
结果为什么是Point@de6ced?

7 个回复

倒序浏览
因为Point类没有重写toString方法。
这问题。。。楼主还是好好看看基础把。
回复 使用道具 举报
Point@de6ced                           
Point说明类型是你定义的Point类型
@de6ced  代表的内存
说明是把新建对象的地址值赋给了p..
所以打印出来了就是p指向对象的地址值
回复 使用道具 举报
System.out.println(p)的意思是输入p的地址,因为在java中声明的point类型的p内存空间只分配一个32位的地址空间,而不是真正存储数据地方,
计算机内存在操作系统和JVM中使用时分为堆内存和栈内存两种方式。
堆内存由所有应用程序公用,存储空间分配不连续,存储容量大。在堆内存中分配空间和进行存储操作速度慢,但堆内存保存对保存对象以及成员变量,
栈内存小,速度快,用来存放临时变量,也就是此时p保存在栈内存中,而且保存的是对象的地址,所以会出现这样的结果。
可以添加两个get函数返回x,y。
回复 使用道具 举报
输出的是对象的地址
回复 使用道具 举报
打印对象,实际上是调用了Object的toString方法,默认会将对象的地址打印出来,如果想按照自己的方式来打印,必须重写toString方法。
回复 使用道具 举报
没有复写toString(),打印的是地址
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马