前言
主要记录Java的基础支持,和C++做一些对比,以后有时间再展开,只为小步快跑。
正文
Java的基本数据类型,可以分:整形、浮点型、char类型、boolean类型
- 整形的分int,short,long,byte,分别4字节,2字节,8字节,1字节,相比C++,Java的int在所有平台都是4字节,取值范围一定,并且Java没有无符号整形。
- 浮点型计算,Java提供了Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN分别表示正无穷,负无穷和非数字。判断正负无穷可以直接使用==比较,但是NaN不能直接比较,Java认为所有的非数值NaN都不相同,判断NaN需要使用Double.isNaN(x)方法。
- char类型需要注意,Java采用的UTF-16编码,一个char表示UTF-16的一个代码单元,UTF-16可能需要两个char类型来表示一个字符,所以说一个char表示一个字符是不准确的。
变量的初始化。相比C++,Java并不区分声明和定义,Java的变量必须先初始化,再使用。
数值转换。Java的数值转换可以分默认转换和强制转换,数值间合法转换有一套默认规则(书41页),int与long向float转换,long向double转换会存在精度损失,但是默认可以转,而其他存在精度损失的转换则需要采用强制类型转换。
Java的字符串类型。String类型又一些特殊的地方,Java并不支持运算符重载,但是String支持+和+=,Java的对象需要使用new创建,但String可以直接进行字符串赋值。相比C++,C++的string类型可以视为vector的一个特例,因此适用于vector的函数都适用与string,但是Java的String更像是Java为处理字符串精心设计的一个类,它甚至不支持foreach操作。
Java的数组。Java的数组分配在堆上。
int[] arr = {1, 2, 3}
是一种简化的方式,等同于int[] arr = new int[]{1, 2, 3}
。Java实际上没有多维数组,只有一维数组,多维数组被解释为“数组的数组”。