class="iteye-blog-content-contain" style="font-size: 14px;">?
Java中,或者说所有面向对象的编程语言中,都有两个特别重要的概念——类和对象。
?
相较现实,类,就像是一个设计好的工程图纸,清清楚楚标注了建筑的大小以及材料,而对象则是依据这个图纸建立起来的实际存在的建筑。当然,虽然是按照同一张图纸,不同的建筑之间也有差别,比如楼栋编号。
?
类和对象也是如此。从关系上来说,类是对象的抽象,对象是类的实例化。什么意思呢?“人类”就是一个类,而“我”就是这个类中的一个对象。类规定了对象所具有的全部属性和方法,而对象之间的差异,则取决于属性的不同数值以及不同的方法调用。
?
从内存分配上来讲,类本身是不占据任何内存的,就像一张图纸不会占据建筑用地一样。而对象,在被创建的那一刻,就拥有了一块属于自己的内存空间——尽管这个空间的大小是由类确定的。
?
以一个名为People的类为例,在执行语句:People me = new People(); 时,计算机做了什么事情呢?
?
分析语句的结构:类名(People) 对象名(me) = new 构造方法((可带参数));这是Java中一个最基本的创建对象的语句。
首先从等号右边开始执行,new调用构造函数,根据类的内容,在堆中开辟了一块相应大小的内存——这个过程实际上是创建对象的过程。
等号左边的People me,执行的操作是在栈中开辟了一块内存,用于存放地址,这个地址用me来标记。
最后,等号执行赋值操作,将new在堆中开辟的内存的地址,赋值给me。
??????? 从上面的过程中可以看出Java的一个特性:非基本数据类型(如对象)都是引用类型。也就是说,对象名,实际上只是一个地址,这个地址指向对象的具体内容。
?