黑马程序员技术交流社区

标题: 创建新对象问题 [打印本页]

作者: 游兴钟    时间: 2012-4-16 14:25
标题: 创建新对象问题
class Person
{
      public static void main(String[] args)
      {
            Person p = new Person();
            P1= new Person();
      }
}
这两种新建的对象有什么区别?
作者: 于潇    时间: 2012-4-16 14:44
本帖最后由 于潇 于 2012-4-16 14:54 编辑

Person p = new Person(); 这一句的p从一开始就声明了只能调用Person中的属性和方法
P1= new Person();  这一句的P1就只是一个变量。

建议楼主不要在这种问题上纠结,多往后看看视频自然就明白了。
作者: 袁培育    时间: 2012-4-16 15:24
第二行是错的吧,没有定义p1,p1的类型不明确会编译失败的。
作者: 游兴钟    时间: 2012-4-16 21:13
袁培育 发表于 2012-4-16 15:24
第二行是错的吧,没有定义p1,p1的类型不明确会编译失败的。

唔,的确。。谢谢
作者: 李斌    时间: 2012-4-16 21:43
必须先定义存放去数组中的元素的数据类型哦,另外只要重新定义一个new语句 就会在内存中开辟一个新的空间,并且也会有新的地址值赋给p1,使得p1指向这个数组,并能调用其中的元素。显然p没有这个地址值,不能指向这个新的数组。
作者: 李斌    时间: 2012-4-16 22:00
这2个数组是不同的 虽然在属于相同数据类型的情况下 它们其中的元素的默认初始化值是一样的 但是却具有不同的地址值,由不同的变量所引用。这是我的理解 不知道对不对哦。。
作者: 黑马—王宁    时间: 2012-4-16 22:24
Person p = new Person(); 定义一个变量的格式。
而P1=new person();这个P1是什么类型,没有指出。会出现以下错误

q错误.png (1.57 KB, 下载次数: 22)

q错误.png

作者: 李保成    时间: 2012-4-16 22:32
p1没有类型指向 没有意义 Person p = new Person(); 这个在栈中创建一个p的对象,然后在堆中开辟一块儿new person()的内存 将其首地址返回给p




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