一、Java数据类型
分为:基本类型和引用类型。void/Void是一个特殊类型,既可认为是基本类型,也可认为不是基本类型,在本系列中,不认为它是基本类型。
1.1、基本类型
Java中一共有8种基本类型,这些基本类型所占用的存储空间都是固定的,该特性使得Java程序比其他语言的程序更具有可移植性。
每种基本类型都有对应的包装器类,基本类型和对应的包装器类之间能够互相无缝转换。
关于8种基本类型的描述见表1。
表1
基本类型 | 类型占据大小 | 最小值 | 最大值 | 包装器类型 |
---|---|---|---|---|
boolean | – | – | – | Boolean |
byte | 8 bits | -128 | +127 | Byte |
short | 16 bits | -215 | +215-1 | Short |
char | 16 bits | \u0000 | \uffff | Character |
int | 32 bits | -231 | +231-1 | Integer |
float | 32 bits | -3.4028235E38 | 3.4028235E38 | Float |
long | 64 bits | -263 | +263-1 | Long |
double | 64 bits | -1.7976931348623157E308 | 1.7976931348623157E308 | Double |
备注:
- 所有数值类型都有正负号,所以不要去寻找无符号的数值类型
- boolean类型所占用的存储空间没有明确指定,仅定义为能够取字面值
true
和false
- float和double都符合IEEE 754标准。另外,在Java的Float类中有以下几个静态变量(Double类中类似)
- Float.MAX_VALUE:表示最大正值,最大负值为“-Float.MAX_VALUE”
- Float.MIN_VALUE:表示最小能够取到的正数值,这个名称取得很有歧义。注意,0不是正数
- Float.MAX_EXPONENT:表示最大能够取到的科学计数法中的指数值
- Float.MIN_NORMAL:表示最小能够取到的科学计数法中的底数值
1.2、引用类型
引用类型的类型占据大小为32 bits(32位虚拟机)
或者64 bits(64位虚拟机)
,引用类型的值逻辑上等价于所引用对象的内存地址,当不引用任何对象时,值为NULL
。
二、类
类对应“类对象”和“实例对象”。引用类型引用的对象就包括上述两种对象。
示例如下:
1 | //类对象 |
类中包含“字段”和“方法”,“方法”由“方法名”和“参数列表”进行唯一标识。“普通字段”和“普通方法”跟“实例对象”相关联,“静态字段”和“静态方法”跟“类对象”相关联。
类的定义中,“字段”(包括“普通字段”和“静态字段”)的默认值描述如表2。
表2
类型 | 默认值 |
---|---|
boolean | false |
byte | (byte)0 |
short | (short)0 |
char | \u0000 |
int | 0 |
float | 0.0F |
long | 0L |
double | 0.0D |
引用类型 | NULL |
三、其他
3.1、注释
注释有两种语法:/*...*/
和//
。
3.2、JavaDoc
JavaDoc代码位于/**
和*/
之间,它使得文档代码和源代码处于同一个文件,有利于维护。
JavaDoc代码语法主要包括两部分内容:嵌入HTML和文档标签。
3.2.1、嵌入HTML
直接嵌入HTML标签,示例如下:
1 | /** |
3.2.2、文档标签
文档标签以“@”字符开头,可再细分为“独立文档标签”和“行内文档标签”。
独立文档标签只能出现于JavaDoc中每一行的第一个“*”字符后面,常见的独立文档标签有“@see,@version,@author,@since,@param,@return,@throws”,示例如下:
1 | /** |
行内文档标签可出现于JavaDoc中每一行的任意位置,但是需要由花括号围括,常见的行内文档标签有“{@link package.class#member label},{@docRoot},{@inheritDoc}”,示例如下:
1 | /** |
3.3、作用域
3.3.1、隐藏作用域
在C和C++中,将一个较大作用域的变量“隐藏”起来的做法,在Java里是不被允许的。比如如下写法,在C和C++中被允许,在Java中不被允许:
1 | { |
3.3.2、存活
“基本类型”和“引用类型”只能存活于作用域内,“对象”(包括“类对象”和“实例对象”)可存活于作用域外。
3.4、向前引用
Java解决了“向前引用”问题,即在某处可使用在其后定义的资源。
3.5、默认导入包
默认导入“java.lang.*”包,即等价于在每个“.java”源文件中,默认包含“import java.lang.*”语句。