从零开始学Java(二)一切都是对象

一、Java是一种更“纯粹”的面向对象程序设计语言


1、尽管Java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象程序设计语言C++和Java都是混合/杂合型语言,后者的设计者认为这种杂合性并不像C++中那么重要。C++之所以成为一种杂合语言主要是因为它支持与C语言的向后兼容,作为C的一个超集,它具有许多C语言不具备的特性,而这些特性使得C++在某些方面显得过于复杂。


2、Java中(几乎)一切都是对象,并且借助引用(reference)来操纵对象

(1)Java中(几乎)一切都是对象,因而可采用单一固定的语法——引用来操纵元素;
(2)引用之于对象就像遥控器之于电视机,遥控器(引用)可以没有电视机(对象)与之关联而独立存在;


3、对象的存储位置

(1)寄存器:位于处理器内部,存取速度最快同时数量也极其有限,并且开发者无法直接控制。
(2)栈:位于通用RAM中,存取速度仅次于寄存器,用于存放对象引用、变量值等。创建程序时,Java系统必须知道存储在堆栈内所有项的确切声明周期,以便上下移动堆栈指针——堆栈指针向下移动,则分配内存;若向上移动,则释放那些内存。每个方法在执行时都会创建自己的栈内存,用于存放局部变量,栈内存在方法结束时自动销毁。
(3)堆:也位于通用RAM,存取速度比堆栈慢,用于存放所有Java对象。编译器无需知道存储的数据在堆中存活多长时间,因而具有更大的灵活行。
(4)常量存储:常量永远不会改变,通常直接存放到程序代码内部。有时,在嵌入式系统中,常量直接存放到ROM中。
(5)非RAM存储:有些数据可以独立于程序之外,在程序没有运行时也可以存在。其中两个基本的例子是流对象(对象转化为字节流发送给另一台机器)和持久化对象(对象存放与磁盘上,在需要时,可以恢复成常规的基于RAM的对象)。


4、永远不需要销毁对象

(1)变量只可用于定义它的作用域之内:与C、C++类似,Java的作用域也是由花括号位置决定。不同的是,Java不允许在嵌套的块内外定义同名的变量。
(2)对象在不被引用时,会被垃圾回收器自动销毁,因而不存在“内存泄漏”的问题。



二、创建新的数据类型:类


1、在Java中,你所做的全部工作就是定义类,产生这些类的对象,以及发送消息给这些对象。一旦定义了一个类,就可以在类中设

置两种类型的元素:字段(数据成员)和方法(成员函数)。



2、类的数据成员如果是基本数据类型(8种),即使没有初始化,Java也会确保它获得一个默认值:


数据类型

字节数

默认值

byte

1

(byte)0

short

2

(short)0

int

4

0

long

8

0L

float

4

0.0f

double

8

0.0d

boolean

1bit

false

char

2

‘\u0000’(null)


但是,方法内部定义的变量如果没有初始化,直接使用,编译器就会报错而不会自动初始化为默认值。


3、通过对象名完成的方法调用通常被称为“发送消息给对象”,面向对象的程序设计通常简单地归纳为“向对象发送消息”。


4、在每个Java文件的开头,必须声明import语句,以便引入在文件代码中需要用到的额外类。注意,java.lang是默认自动导入到

每个java文件中的,无需开发者手动import导入。关于import和package的具体用法,可以参考这篇文档。



三、注释和嵌入式文档


1、Java中有两种注释风格,都是从C++中继承而来:“//”和“/**/”。


2、JDK中提供了javadoc工具,用于简化文档管理——将代码和文档放在同一个文件内,通过从中提取文档并输出一个HTML文件文档。

3、javadoc语法

(1)只能处理位于“/**”和紧接着的”*/”之间的内容;

(2)内容中包括两种方式:

HTML标签:可以是Web文档中的任何标签(除

外,因为javadoc会插入自己的标题)文档标签:即以“@”开头的命令,包括独立文档标签

(必须位于注释行的最前面)和行内文档标签(必须括于花括号内,可以位于javadoc注释中的任何地方);


(3)共有三种类型的注释文档:

    /** 注释内容 */

    /* 注释内容 */

    //注释内容

4、详细的规范可以参考《EffectiveJava中文第二版》第44条




参考资料:


《Java编程思想 (第4版)》





你可能感兴趣的:(Java基础)