“在JAVA中,我们所做的所有工作,就是定义类,创建这些类的对象,并传消息给这些对象”
对于JAVA面向对象思想的学习,依照此理解顺序
1、理解面向对象的总体思想与主要特性,例如封装,继承,多态,超类,集合,泛型,多线程等等。
2、接下来,也就是本章节讲解的内容,我们需要进一步了解,利用JAVA语言本身进行面向对象程序设计的过程。
操纵对象的“引用”
任何一种编程语言,都拥有其操纵内存中元素的方式。通过引用对象操作内存,可以把引用视为一个遥控器,将对象视为一个电视。
最简单的方式创建一个字符串对象的引用
String s; 该代码中,String作为一个类型,而s是一个引用。注意!!在这里,s并不是一个对象,它只是一个引用,一个没有指定电视机的遥控器!!!!
创建一个对象及存储位置
String s = new String("ss"); //创建了字符串对象的引用s,指向存储着内容“ss”的String对象。
那么,数据存储在什么地方呢?
(1)、寄存器,最快的存储区,位于CPU内部,数量有限,在JAVA中无法手动分配。
(2)、堆栈,位于通过RAM(Random Access Memory)中,Java的对象引用存储在堆栈中。
(3)、堆,是一种通用的内存池,存储所有的JAVA对象。
(4)、常量存储,常量值通常存放在程序代码内部,这样不会被改变,保证了安全性。
(5)、非RAM存储,代表是流对象和持久化对象,它们都游离于程序的控制以外。在流对象中,对象转换为字节流,并在不同机器中传输数据;在持久化对象中,对象被放置在磁盘上,并持久保持自己的状态。
特例:基本类型(基本类型在堆中只存储“值”,而不是对象)
在程序设计过程中经常使用到的基本类型,普通类型将“对象”存储在“堆”中,而基本类型是创建一个没有引用的“自动变量”,这个变量直接存储值,并置于堆栈中(和引用宝宝们住在一起)。
JAVA固定了每种基本类型所占用的空间大小,并且不可改变,基本类型共8个,分别是boolean,char,byte,short,int,long,float,double,void。创建一个基本数据类型:
int i = 1;
此时,变量 i 的占用存储空间大小为32bits,存储于堆栈,其值为1 但它还不是一个对象;
如果想用对象来表示一个基本数据类型,则需要使用包装器类。包装器类使得我们可以在“堆”中创建一个普通对象,并用它来表示基本数据类型。例如:
Integer i = new Integer(1);
了解完基本数据类型,再看看另外一方面,几乎所有的编程语言都支持定义数组,那么JAVA中的数组又有什么特征?当JAVA创建了一个数组对象,其实也是创建了一个引用数组。JAVA确保数组会被初始化,且不能在它的范围之外被访问。JAVA会对数组执行范围检查,一旦调用到引用为NULL(比如调用了越界的数据对象引用),即会报错。
默认值:属于基本数据类型的变量具有默认值,但要在它们作为类的成员使用时,JAVA才能确保给定其默认值,也就是说,变量作为类成员时会获得初始化,而局部变量则不会获得初始化(比如方法中的基本数据类型变量一定要手动初始化,不然系统就会报错)。
自动销毁对象
对象的生命周期问题在JAVA中得到了自动化的解决。JAVA中有一个垃圾回收期,用来监视new创建的所有对象,并且辨别不再使用的对象。在恰当的时间,释放这些对象的内存空间。如此一来,JAVA程序员不需要操心内存分配与内存释放问题,只需要创建对象,然后使用对象。
创建一个类(新类是新的引用数据类型)
创建一个类表示的语境:“我将告诉你,一个新类型的对象会是什么样子的”。
创建完一个新的数据类型,我们就可以创建引用和指向对象,而在JAVA中,我们所做的所有工作,就是定义类,创建这些类的对象,并传消息给这些对象。(超级精辟)
方法、参数和返回值
“方法”其实就是“函数”,是类中的子程序。方法包括①、名称 ②、参数 ③、返回值 ④、方法体
方法名和参数列表唯一地标识出某个方法。
假设现在有1个方法method(),它的返回值是boolean,有一个和method()方法同属于一个类的对象a,进行调用 boolean b = a.method();这句代码通俗的理解就是发送消息给a对象,命令它调用己身的method()方法。
我们了解如何编写一个简单的Java程序之后,对其基本思想也有一个总体的认识,但是如果想让程序更灵活,有逻辑性,这还不够,所以我们接下去还要额外去了解JAVA对语言逻辑所提供的支持。
原文地址:https://www.cnblogs.com/Levierx/p/9858531.html