黑马程序员技术交流社区

标题: 求助构造函数 [打印本页]

作者: 姚伟涛    时间: 2012-4-20 21:53
标题: 求助构造函数
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?
作者: 张亮    时间: 2012-4-20 22:01
因为Point类没有重写toString方法。
这问题。。。楼主还是好好看看基础把。
作者: 林豪    时间: 2012-4-21 09:45
Point@de6ced                           
Point说明类型是你定义的Point类型
@de6ced  代表的内存
说明是把新建对象的地址值赋给了p..
所以打印出来了就是p指向对象的地址值
作者: 乞文超    时间: 2012-4-21 10:00
System.out.println(p)的意思是输入p的地址,因为在java中声明的point类型的p内存空间只分配一个32位的地址空间,而不是真正存储数据地方,
计算机内存在操作系统和JVM中使用时分为堆内存和栈内存两种方式。
堆内存由所有应用程序公用,存储空间分配不连续,存储容量大。在堆内存中分配空间和进行存储操作速度慢,但堆内存保存对保存对象以及成员变量,
栈内存小,速度快,用来存放临时变量,也就是此时p保存在栈内存中,而且保存的是对象的地址,所以会出现这样的结果。
可以添加两个get函数返回x,y。
作者: 韩新凯    时间: 2012-4-21 10:46
输出的是对象的地址
作者: 蒋亮    时间: 2012-4-21 11:00
打印对象,实际上是调用了Object的toString方法,默认会将对象的地址打印出来,如果想按照自己的方式来打印,必须重写toString方法。
作者: 邵中国    时间: 2012-4-21 14:01
没有复写toString(),打印的是地址




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