java数据类型
Java是一种强类型语言。
• 常量是有数据类型的
• 变量必须声明其数据类型
数据类型分类:
引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!
8大基本数据类型:
boolean | 0 字节 | 1bit (true、false) |
char | 2 字节 | 16bit (0 ~65535) |
float | 4 字节 | 32bit (3.4e-038 ~3.4e+038 ) |
double | 8 字节 | 64bit (1.7e-308 ~1.7e+308) |
介绍:
a. 整型的范围与运行Java代码的机器无关,这正是Java程序具有很强移植能力的原因之一。
b. 所有基本类型所占的位数都是确定的,并不因操作系统的不同而不同。
与此相反,C和C++程序需要针对不同的处理器选择最有效的整型。
c. Java语言的整型常数默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ;float类型赋值时需要添加后缀F/f 也可以不加。
float f = 0x45; //十六进制可以不加F
float F = 45; //十进制整数可以不加f
float F1 = 4.5f; //十进制小数数必须加f
int i = 0220; //八进制的也能赋值
boolean flag = Boolean.TRUE;
int number = 'A';
float y = 0x123; //十六进制 也能赋值
long a = 0x123l;
|
d. float类型尾数可以精确到7位有效数字; double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型。浮点型常量默认类型也是double。
注意: 不要使用浮点数进行比较!浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。
java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
面试题:
为什么byte 类型的范围是从 -128 到 127? 概念: 1.java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数; 2.正数补码为其本身; 3.负数补码为其绝对值各位取反加1; 分析步骤: 1、byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111 十进制表示形式为127 2、最大正数是01111111,那么最小负是10000000(最大的负数是11111111,即-1) 3、10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来即可。10000000减1得01111111然后取反10000000 因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128 4、由此可以得出byte的取值范围是-128到+127 |
4大进制:
- 十进制整数,如:99, -500, 0
- 八进制整数,要求以 0 开头,如:015
- 十六进制数,要求 0x 或 0X 开头,如:0x15
- 二进制数,要求0b或0B开头,如:0b01110011
转义字符:
换行最好写\r\n
• char 类型用来表示在Unicode编码表中的字符。
• Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;ASCII码占1个字节,可允许有128个字符(最高位是0),是Unicode编码表中前128个字符。
boolean类型:
有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。