前言

主要记录Java的基础支持,和C++做一些对比,以后有时间再展开,只为小步快跑。

正文

  1. Java的基本数据类型,可以分:整形、浮点型、char类型、boolean类型

    1. 整形的分int,short,long,byte,分别4字节,2字节,8字节,1字节,相比C++,Java的int在所有平台都是4字节,取值范围一定,并且Java没有无符号整形。
    2. 浮点型计算,Java提供了Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN分别表示正无穷,负无穷和非数字。判断正负无穷可以直接使用==比较,但是NaN不能直接比较,Java认为所有的非数值NaN都不相同,判断NaN需要使用Double.isNaN(x)方法。
    3. char类型需要注意,Java采用的UTF-16编码,一个char表示UTF-16的一个代码单元,UTF-16可能需要两个char类型来表示一个字符,所以说一个char表示一个字符是不准确的。
  2. 变量的初始化。相比C++,Java并不区分声明和定义,Java的变量必须先初始化,再使用。

  3. 数值转换。Java的数值转换可以分默认转换和强制转换,数值间合法转换有一套默认规则(书41页),int与long向float转换,long向double转换会存在精度损失,但是默认可以转,而其他存在精度损失的转换则需要采用强制类型转换。

  4. Java的字符串类型。String类型又一些特殊的地方,Java并不支持运算符重载,但是String支持+和+=,Java的对象需要使用new创建,但String可以直接进行字符串赋值。相比C++,C++的string类型可以视为vector的一个特例,因此适用于vector的函数都适用与string,但是Java的String更像是Java为处理字符串精心设计的一个类,它甚至不支持foreach操作。

  5. Java的数组。Java的数组分配在堆上。int[] arr = {1, 2, 3}是一种简化的方式,等同于int[] arr = new int[]{1, 2, 3}。Java实际上没有多维数组,只有一维数组,多维数组被解释为“数组的数组”。