目录
基本数据类型
整型 (byte, short, int, long)
整型常量表示形式
浮点型 (float, double)
浮点类型常量表示形式
字符型(Char)
Unicode码
字符编码表
转义字符 ("")
布尔型 (boolean)
基本数据类型
Java是一种强类型语言,每个变量都必须声明其数据类型。Java的数裾类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。Java中定义了三类8种基本数据类型
数值型:byte、short、int、long、float、double字符型:char布尔型:boolean
注意
引用数据类型的大小统一为4字节,记录的是其引用对象的地址
整型 (byte, short, int, long)
整型用于表示没有小数部分的数值,它允许是负数。整型的范围与运行 Java 代码的机器,操作系统无关,这正是 Java 程序具有很强移植能力的原因之一。与此相反,C 和 C++ 程序则需要针对不同的处理器选择最有效的整型
整型常数默认为int型,声明long型常量可以在后面加“l”或“L” , 注意: 必须使用 “L” , 因为 “l” 极易与数字 “1” 混淆
整型常量表示形式
十进制整数,如 99、-500、0八进制整数,要求以0开头,如 015十六进制数,要求以0x或0X开头,如 0x15 (A-F 不区分大小写)二进制数,要求以0b或0B开头,如 0b0110011
浮点型 (float, double)
带小数的数据在 Java 中称为浮点型。浮点型可分为 float 类型和 double 类型. 浮点型的范围也与运行 Java 代码的机器,操作系统无关
float 类型又称作单精度类型,尾数可以精确到 7 位有效数字,但在很多情况下,float 类型的精度很难满足需求double 表示这种类型的数值精度约是 float 类型的两倍,因此又被称作双精度类型,为绝大部分应用程序所采用
注意
float 类型的数值有一个后缀 F 或者 f ,没有后缀 F/f 的浮点数值默认为 double 类型。也可以在浮点数值后添加后缀 D 或者 d, 以明确其为 double 类型float 型常量声明时, 需要添加 f/F 后缀. 因为, 浮点型常量无后缀时, 系统默认其为 doubule 型, 这样在 float 中再声明时会报错
注意
浮点类型 float、double 的数据不适合用于不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用 BigDecimal 类
建议
java.math包下面两个有用的类:Biginteger和BigDecimal这两个类可以处理任意长度的数值。Biginteger 实现了任意精度的整数运算,BigDecimal 实现了任意精度的浮点运算
注意
不要使用浮点数进行比较!需要比较数据时请使用BigDecimal类
总结
默认是 double 类型浮点数存在舍入误差,数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用 BigDecimal 类避免在比较中使用浮点数,需要比较请使用 BigDecimal 类
浮点类型常量表示形式
十进制数形式,如3.14、314.0、0.314科学记数法形式,如314e2、314E2、314E-2
字符型(Char)
字符型数据在内存中占 2 个字节。在 Java 中使用单引号来表示字符常量,例如 ’A’ 是一个字符,它与 "A” 是不同的,”A" 表示含有一个字符的字符串char 类型用来表示在 Unicode 编码表中的字符。Unicode 编码被设计用来处理各种语言的 文字,它占2个字节,可允许有65536个字符
注意
在 java中,char 的本质是一个整数,在输出时,是 unicode 码对应的字符 (字符 ==> Unicode码(/u十六进制) ==> 十六进制(0x) ==> 十进制)
System.out.println('a'+1); //98 (char 型的'a' 与 int型的1, 根据自动转换中的自动提升原则,运算之后成了 int 型)
char a = 'a' + 1 ; System.out.println (a); // 'b' 99 ==> 0x63 ==> /u63 ==> 'b'
'1' 'a' //正确, 1, a 为单个字符
'11' 'aa' //错误, 11, aa 为多个字符
"11" "aa" //正确, 11, aa 为字符串
以后将学到的 String 类,其实是字符序列(char sequence ), 本质是 char 字符组成的数组
Unicode码
Unicode 具有从 0〜65535(216 -1) 之间的编码,它们通常用从 u0000 到 uFFFF 之间的十六进制值来表示(前缀为 u 表示 Unicode)
Unicode编码字符, 在线查询: Unicode编码转换 - 站长工具 (chinaz.com)
字符编码表
ASCII(ASCII 编码表一个字节表标,一个128个字符,实际上一个字节可以表示256个字符,只用128个, 缺点: 不能表示所有字符)Unicode(Unicode 编码表固定大小的编码使用两个字节来表示字符,Unicode 兼容 ASCII, 缺点: 字母和汉字统一都是占用两个字节,这样浪费空间)utf-8(Unicode改进后的产物,大小可变的编码字母使用1个字节,汉字使用3个字节)gbk(可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节)gb2312(可以表示汉字,gb2312 < gbk)big5(繁体中文,台湾,香港)
转义字符 ("")
Java 语言中还允许使用转义字符 "" 来将其后的字符转变为其他的含义
布尔型 (boolean)
布尔型数据有两个常量值,true 和 false,在内存中占一位 (不是一个字节)不可以使用 0 或非 0 的整数替代 true 和 false , 这点和 C语言不同boolean 类型用来判断逻辑条件,一般用于程序流程控制
注意
boolean 型, 只有 true 和 false 两种取值, 不存在 null
建议
少就是多!请不要写成这样:if (flag == true)。很容易错写成 if ( flag= true )。老手的写法是 if ( flag ) 或者 if ( !flag )



