首页 > 代码库 > 《Java开发手册》学习进程之第2章基本数据类型
《Java开发手册》学习进程之第2章基本数据类型
2.1 数据类型
Java表示整数常量时,默认情况下为int型;若整数常量前面有个0,则表示八进制数;若整数常量前面有个‘0x’或’0X’,则表示十六进制。
long型常量需在后面加个’l’或’L’。用System.out.println()方法输出时,其后缀名并不会输出。
如果某个浮点值没有使用float关键字(’f‘或’L‘)作为后缀名,则系统默认为double型。同long型常量一样,其后缀名也并不会输出。
注意:别把double型的常量赋值给float型的变量,把长度为8字节的double型常量赋值给一个长度为4字节的常量显然是错误的。
Java字符采用Unicode编码,每个字符占两个字节,而ASCII码(0~127)也包含在Unicode码中。
将一个整数赋值给一个字符型变量,则用System.out.println()输出时其会自动转换成字符而不是整数。字符型变量可以进行算术运算。
布尔型在Java里用来表示逻辑值,用System.out.println()输出时该类型的变量会被输出为true或false。
2.2 常量(与C语言不同,Java中并没有无符号数)
Java的常量有整型、浮点型、字符型、布尔型和字符串常量五种。
标识符就是用来标识变量名、函数名、数组名、文件名、类名等等的有效字符序列。注意不能以数字来开头。
注意转义字符的使用。特别是在字符串中加入单引号或双引号时,必须在要加入的引号前加个\,这与转义字符的用法相同。即转义字符不仅可以作为字符型常量单独使用,也可放到字符串常量中。
2.3 变量
变量的作用域只对该变量所在的大括号范围有效。
在有变量参与运算的表达式中,因为其中间值可能会超过任何一个操作数类型的表示范围,为了一防万一,Java就自动对参与运算的数值类型进行了提升。例如:
public class Sample2_14{ public static void main(String[] args) { short a = 200; short b = 10; short c = a * b; // 无法将一个4字节的整数赋值给一个2字节的常量 System.out.println(c); }}
a和b 的数据类型被提升为int,故该表达式会输出一个int型而不是short型。
Java定义了表达式的类型提升规则:
- 若表达式中有一个操作数为byte或short,该表达式的结果为int;
- 若表达式中有一个操作数为long,该表达式的结果为long;
- 若表达式中有一个操作数为float,该表达式的结果为float;
- 若表达式中有一个操作数为double,该表达式的结果为double;
将一个整数赋值给一个float型变量或double型变量后,再将浮点类型的变量以System.out.println()方法输出时,其值将会在整数值之后再加个.0。
2.4 数据类型之间的转换
自动类型转换又称隐性类型转换,即不需要用户指定目标数据类型,系统自己进行转换。这种转换须满足以下条件:
- 两种类型互相兼容
- 目标数据类型值的范围大于被转换数据类型值的范围
若无法满足上述两条件时,这就需要强制类型转换了。例如,将一个int类型变量的值300赋给byte类型变量时,需将int类型的变量强制转换为byte类型变量,此时int类型变量的值与byte类型值的变化范围取模,即300 Mod 256 = 44,转换完成。浮点数转换为整数时,小数部分将被舍弃,整数部分的转换与上述相同。
《Java开发手册》学习进程之第2章基本数据类型