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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 游兴钟 中级黑马   /  2012-4-16 14:25  /  1672 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Person
{
      public static void main(String[] args)
      {
            Person p = new Person();
            P1= new Person();
      }
}
这两种新建的对象有什么区别?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 于潇 于 2012-4-16 14:54 编辑

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

建议楼主不要在这种问题上纠结,多往后看看视频自然就明白了。
回复 使用道具 举报
第二行是错的吧,没有定义p1,p1的类型不明确会编译失败的。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
袁培育 发表于 2012-4-16 15:24
第二行是错的吧,没有定义p1,p1的类型不明确会编译失败的。

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

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

q错误.png
回复 使用道具 举报
p1没有类型指向 没有意义 Person p = new Person(); 这个在栈中创建一个p的对象,然后在堆中开辟一块儿new person()的内存 将其首地址返回给p
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马