2.9.1 整数类型
五种:byte(8位)、short(16位)、char(16位)、int(32位)、long(64位)。
将位数多的类型赋值给位数少的类型,需要显式转换,也叫强制类型转换(cast)。
十进制以1-9中的一个数开始。
八进制以0开头。
十六进制以0x开头。
要指明常量是long类型的,而非int类型,需要在后面添加字母L。
这里说的不太清楚,到底是程序中要这么写,还是说书中会这么写?
“14084591234L——一个long类型的十进制常量。没有L是错误的,因为32位的int类型整数无法存放这么大的数。”
这句话有句话隐含没说,就是如果程序中用到一个整数常量,这个常量就默认是int类型,因为整数常量是不用声明的(不会有人这样声明吧?int 456)。那么,如果用到的是超过int类型范围的数字,就应该在数字后面加L,这样系统就知道这是一个long类型的数字。
2.9.2 浮点类型
浮点数由3部分组成:符号、量值(magnitude)和指数(exponent)。
Java支持两种浮点数类型(float-32位、double-64位)。
除非特别说明,浮点类型常量都是double类型(就好像整型的默认是int)。
指定float类型的常量,在常量后面添加F或f。
我觉得还是写大写的比较好。
2.9.3 char类型
字符常量用单引号引起来,如'A'。
字符串常量就算只有一个字母,也是字符串常量,用双引号,"A"。
而有些难以打印的字符需要用到转义字符虽然要写成两个字符,但是还是'/t',单引号。
另一种写字符常量的方法是用十六进制转义序列,如'/u0007'。
(书中25页有错误,那个'/u007'缺一位,是不可能通过编译的)
65536个Unicode字符写成从'/u0000'到'/uFFFF'。
下面的程序能够“打印”一个系统响铃,当然了,屏幕上看不到,而是靠耳朵听的。
不过,如果改成'/u000D',编译的时候会报错
这是为什么呢?本来应该打出一个回车符的???
2.9.4 数字与字符串的比较
Java需要编程人员指出每个变量的类型,和Java一样,具有类似特性的语言成为强制类(strongly typed)语言。
五种:byte(8位)、short(16位)、char(16位)、int(32位)、long(64位)。
将位数多的类型赋值给位数少的类型,需要显式转换,也叫强制类型转换(cast)。
十进制以1-9中的一个数开始。
八进制以0开头。
十六进制以0x开头。
要指明常量是long类型的,而非int类型,需要在后面添加字母L。
这里说的不太清楚,到底是程序中要这么写,还是说书中会这么写?
“14084591234L——一个long类型的十进制常量。没有L是错误的,因为32位的int类型整数无法存放这么大的数。”
这句话有句话隐含没说,就是如果程序中用到一个整数常量,这个常量就默认是int类型,因为整数常量是不用声明的(不会有人这样声明吧?int 456)。那么,如果用到的是超过int类型范围的数字,就应该在数字后面加L,这样系统就知道这是一个long类型的数字。
2.9.2 浮点类型
浮点数由3部分组成:符号、量值(magnitude)和指数(exponent)。
Java支持两种浮点数类型(float-32位、double-64位)。
除非特别说明,浮点类型常量都是double类型(就好像整型的默认是int)。
指定float类型的常量,在常量后面添加F或f。
我觉得还是写大写的比较好。
2.9.3 char类型
字符常量用单引号引起来,如'A'。
字符串常量就算只有一个字母,也是字符串常量,用双引号,"A"。
而有些难以打印的字符需要用到转义字符虽然要写成两个字符,但是还是'/t',单引号。
另一种写字符常量的方法是用十六进制转义序列,如'/u0007'。
(书中25页有错误,那个'/u007'缺一位,是不可能通过编译的)
65536个Unicode字符写成从'/u0000'到'/uFFFF'。
下面的程序能够“打印”一个系统响铃,当然了,屏幕上看不到,而是靠耳朵听的。
// Example.java class Example |
不过,如果改成'/u000D',编译的时候会报错
E:/Program Files/j2sdk1.4.2/Application>javac Example.java Example.java:7: illegal line end in character literal System.out.print('/u000D'); ^ 1 error |
这是为什么呢?本来应该打出一个回车符的???
2.9.4 数字与字符串的比较
Java需要编程人员指出每个变量的类型,和Java一样,具有类似特性的语言成为强制类(strongly typed)语言。