黑马程序员技术交流社区

标题: 关于new 和对象 [打印本页]

作者: air    时间: 2013-10-22 16:18
标题: 关于new 和对象
本帖最后由 air 于 2013-10-22 18:23 编辑
  1. class Person
  2. {
  3.         Person()
  4.         {
  5.         System.out.println("Zombie");
  6.         }
  7. }


  8. class PersonDemo2

  9. {
  10.         public static void main(String[] args)
  11.         {
  12.         Person p= new Person();
  13.         }
  14. }
复制代码
是这样的,毕老师的视频里,听来听去3,4遍,老是不能明白对象和代码之间的关系,有没有童鞋能告诉我.这个new Person和Person p和类:person的关系.我对对象的概念不清楚.
作者: kellyzyb    时间: 2013-10-22 16:41
首先Person这个类相当于对某一事物的描述,可以看做是图纸:比如要生产汽车,首先要设计出图纸。类就相于现实生活中对图纸的描述。
Person p= new Person(); 这一名牵扯到两个知识点:首先要知道Java的基本数据类型中的引用数据类型,才能理解前面的Person p
=号后面的new Person(); new 是一个关键字,在堆内存中开辟出一个空间用来对person这个类进行实例化。当然会产生一个内存地址,将这个内存地址赋给了在栈内存中的变量P 。p有了地址以后,就指向了这个对象。
可以在看一下实例化过程的视频。


作者: 王松松    时间: 2013-10-22 16:46
给你举个例子吧!
类:人,这是一个抽象的概念。
对象:张三,这是一个实例对象,是具体的!
Person p= new Person();
p是引用类型变量,new Person()是Person类的实例对象。Person是一个类。

希望对你有帮助!{:soso_e141:}
作者: air    时间: 2013-10-22 17:31
kellyzyb 发表于 2013-10-22 16:41
首先Person这个类相当于对某一事物的描述,可以看做是图纸:比如要生产汽车,首先要设计出图纸。类就相于现 ...

按照你的说法.我能这么理解吗?
类person,这个类里面有描述.有一些细节的东西.
person p.引用了一个堆内存地址
这个堆内存地址里面有 实实在在的详细的东西.(就是堆内存分配了一些地址给类.person吗?)用Person p引用了这个类,能干嘛?
new的作用呢?
对象在哪呢?是什么呢?
帮人帮到底,你告诉我吧

作者: mayor125    时间: 2013-10-22 17:43
class Person定义一个类,类实际上是表示一个客观世界某类群体的一些基本特征抽象,而对象就是表示一个个具体的东西
例如:人就是现实生活中的一个类,而对象就是具体的某一个人。

Person p= new Person();这句话的意思是在主方法中实例化了一个Person对象,对象名为p,对象名是保存在栈内存中的,而对象的具体内容(包括对象的属性)都是保存在堆内存中的,通过new这个关键字开辟堆内存空间,并且实例化产生的堆内存地址被栈内存中的对象p所指向。

{:soso_e183:}

作者: 蓝雨星空    时间: 2013-10-22 18:19
Person类: 描述person这种事物应该具有哪些属性,就像前面的朋友们说的汽车图纸
Person p: 意思是定义一个Person类型的引用变量,其实和 int x 的意思差不多,只是类型不一样。
new Person:创建一个Person类对象
=  :把创建的对象的内存地址赋值给 p ,这样就可以通过 p 来操作这个对象了

作者: air    时间: 2013-10-22 18:23
各位的回答,我又翻了一遍视频, 完全清晰.~~很爽,谢谢大家




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