黑马程序员技术交流社区
标题:
求助构造函数
[打印本页]
作者:
姚伟涛
时间:
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