第2章 一切都是对象
本章主要讲述了Java程序的基本组成,包括对象及其引用的创建,对象信息的存储、基本数据类型、对象的作用域、类的定义及使用、第一个Java程序的书写、编译与运行、注释与标签实例以及基本的编码风格等内容。
1.引用
在Java程序中操作的标识符实际是对象的一个引用,然后由引用去控制对象。
String s = "hello"; //引用创建及初始化格式
在引用创建时需对其初始化。
2.对象及其存储,基本类型,高精度类型,数组
使用 new 关键字创建一个对象。
String s = new String("hello"); //对象创建格式
在计算机中,有五个地方可以存储数据。
名称 | 位置 | 特性 | 示例 |
---|---|---|---|
寄存器 | 处理器内部 | 速度最快,根据需求自动分配,无法手动控制 | |
堆栈 | 通用RAM中 | 速度仅次于寄存器。 堆栈指针向下移动,则分配内存;向上移动,则释放内存 |
Java对象的引用与基本类型数据 |
堆 | 通用的内存池 (也位于RAM中) |
分配存储灵活,清理存储比较费时 | Java对象 |
常量存储 | 程序代码内部 | 常量不可改变,故放在程序代码内部是安全的 | 常量值 |
非RAM存储 | 其他机器,磁盘 | 流数据,持久化对象 |
基本类型存储在堆栈中更加高效。
在Java中每种基本类型所占的存储空间大小是固定的,并不受机器硬件架构的影响。
[图片来自互联网]
注:boolean类型所占空间的大小没有名曲指定,仅定义为取字面值的 true 和 false
BigInteger 与 BigDecimal用于高精度计算,其操作与基本类型相似,只不过以方法来代替运算符。
Java确保数组会被初始化且不能再它的范围之外被访问。
3.作用域
Java中用花括号的位置决定对象的作用域,在作用域里定义的对象只可作用域作用域结束之前。
4.类
class ATypeName {/* Class body */} //类定义格式
类由字段和方法组成。
类的成员变量具有默认值,局部变量(非字段变量)则没有。
5.方法、参数和返回值
ReturnType methodName(/* Argument list */){
/* Method Body 8/
} //方法定义格式
方法名和参数列表(合称为“方法签名”)可以唯一的标识出某个方法。
参数列表指定要传递给方法什么样的信息。
return 关键字用于返回方法的结果与离开方法
6.构建Java程序
反转域名+功能模块名称作为包名、
package 关键字用于定义一个包。
import 关键字用于导入一个包。
static 关键字用于定义类数据和类方法,也成静态变量、静态方法。类数据和类方法可以在不创建对象的条件下使用。类方法无法使用非 static 域的成员与方法。类成员和类方法共用一份存储空间。
7.Hello,World
import java.util.Date;
public class HelloWorld{
public static void main(String[] arg){ //程序入口方法
System.out.println("Hello,World!");
System.out.prinlnt(new Date());
}
}
下载安装JDK,配置环境变量。
编译(javac)并运行(java)代码。
8.注释与嵌入式文档
//单行注释
/*
*多行注释
*/
/**
*文档型注释,可使用javadoc 命令生成HTML文档。注:javadoc 只能用于public 和 protected成员进行文档注释,程序员不希望 private 类型的数据被看到。
*/
文档型注释允许嵌入HTML标签对文字进行格式化。
标签示例:
(1)@see:引用其他类
(2)@like 与@see类似,仅用于行内
(3)@docRoot 产生到文档根目录的相对路径
(4)@inheritDoc 从直接父类中继承文档
(5)@version 版本信息
(6)@author 作者信息
(7)@since 指定程序代码最早使用的JDK版本
(8)@param 方法参数标识符及描述
(9)@return 描述方法返回值
(10)@throws 描述方法抛出的异常信息
(11)@deprecated 标识不建议用户使用的旧特性。在Java SE5中被@Deprecated 注解替代。
9.编码风格
类名首字符大写,如果类名由几个单词构成,则每个单词的首字母都采用大写形式。
方法名与变量名与类名类似,只是首字母需要小写。
这种风格有时被称作"驼峰风格”。
方法和变量名需要尽可能的体现出其表示的内容与提供的服务。