Java中的数据类型
基本数据类型
整型
JAVA各整型数据都有固定的表示范围和字段长度,其不受具体的操作系统的影响,以保证java程序的可移植性。
JAVA的整型常量默认为int类型,在声明long型数据时,要在数据后面加 “ l ” 或 “ L ” 来标识
如:int i = 100; //正确
long a = 45687212348L //必须加 “ L ” 否则出错
在计算机内部,所有信息都采用二进制表示,每个二进制有0和1两种状态,一个字节有8位,也就是由8个0或1组成,如果是short类型的6,在计算机中是如何存储的?由上图可知,short是两个字节,也就是16位,那么short类型的6就是00000000 00000110。如果是int类型的6是如何存储的?同理,int占4字节,也就是32位,00000000 00000000 00000000 00000110
Java语言中整型常量有三种表现方式,十进制、十六进制和八进制,其中十进制的形式最为常用。
八进制:0 1 2 3 4 5 6 7 注意:八进制必须以0开头,如:0123 045 046
十进制:0 1 2 3 4 5 6 7 8 9 注意:以十进制表示时,第一位不能为0(数字0除外)
十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F 注意:以十六进制表示时,需以0x或0X开头,如:0x8a 0X9A
浮点型
Java浮点数据类型与整形数据类似,有固定的表示范围和字段长度,不受平台影响。
Java中浮点类型数据默认为double类型,如果要声明一个常量为float类型,则需要在数字后面加上“f”或“F”
如:double d = 1234.56; //正确 float f = 12.3F //必须加 “ F ”,否则出错
浮点数不适用于禁止出现舍入误差的金融计算中。
例如,命令System.println(2.0-1.1); 将打印出0.9999999999999,而不是人们希望的0.9。出现这种问题的主要原因在于浮点数值是采用二进制系统表示的。而在二进制系统中无法精确的表示分数1/10,这就好像十进制无法精确表示1/3一样。
字符型
字符常量为用单引号引起来的单个字符,如:char c1 = ‘a’; char c2 = ‘中’
转义字符
布尔型
Boolean类型适用于逻辑运算,一般用于程序流程控制。
Boolean类型数据只允许取值true或flase,不可以0或非0的整数替代true或flase。
数据类型之间的相互转换
在java中基本数据类型可以相互转换,boolean类型比较特殊不可以转换成其它类型
转换分为默认转换和强制转换:
默认转换:容量小的类型会默认转换为容大的类型
byte -->short-->int -->long-->float-->double
char-->
byte、short、char之间计算时不会相互转换,首先转换成int
强制转换:将容量大的类型转换成容量小的类型,需要进行强制转换。
注意:只要不超出范围可以将整型值直接赋值给byte、short、char;在多种类型混合运算过程中,首先将所有数据类型转换成容量最大的那种,再运算
表达式的数据类型自动提升,关于类型的自动提升,注意下面的规则:
1、所有的byte、short、char型的值将被提升为int型
2、如果有一个操作数是long型,计算结果是long型
3、如果有一个操作数是float型,计算结果是float型
4、如果有一个操作数是double型,计算结果是double型