Java数据类型
一.数据类型
(1)基本数据类型
整数型
byte 占一个字节(占8位) -128 到 127(-2^7-2^7-1)(记)
short占两个字节(占16位) -32768 到 32767(-2^15-2^15-1)(记)
int 占四个字节(占32位) -2147483648 到 2147483647(-2^31-2^31-1)
long 占八个字节(占64位) -9223372036854775808 到 9223372036854775807

浮点型
float 占四个字节 单精度 -3.403E38 到 3.403E38
double 占八个字节 双精度 -1.798E308 到 1.798E30832位第一位是符号位,后23位是有效数值位,剩余8位是指数位

3个特殊的浮点数值
正无穷大:一个正数除以0将得到正无穷大,正无穷大通过Double或Float 的INFINITY表示.
负无穷大:一个负数除以0将得到负无穷大,通过Double或FLOAT的-INFINITY表示。
非数:0.0除以0.0或对一个负数开方将得到一个非数(NaN)
1
2
3
4
5
6//特殊浮点数
System.out.println(1/0);//ArithmeticException算数异常
System.out.println(1.0/0);//结果为Infinity正无穷大
System.out.println(-1.0/0);//-Infinity负无穷大
System.out.println(Math.sqrt(-1));//NaN非数
System.out.println(0.0/0.0);//运行结果NaN
字符型
char 占两个字节 0-65535
直接通过单个字符来指定字符型常量,例如’A’
通过转义字符表示特殊字符型常量,例如‘\n’
直接使用Unicode值来表示字符型常量,格式量’\uXXXX’(XXXX指的是16进制数)
1
2
3
4
5
6
7
8
9 //字符类型
System.out.println('A');
System.out.println('a');
System.out.println('6');
System.out.println('#');
System.out.println('\\');
System.out.println('\"');
System.out.println('\u0022');
System.out.println('粤');
ASCII: 48:0, 65:A, 97:a
布尔类型
boolean 只有true和false两个值,java中没有明确指定占用字节数,因此无法与其他类型进行运算
注意:C语言中0代表true,1代表false
(2)引用数据类型
类、接口、数组、枚举、标注
一.类型转换
(1)自动类型转换
byte—>short—>int—>long—>float—>double
↑
char——↑
表达式类型的自动提升规则:
(1) 当一个算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升规则
(2) 所有的byte类型、short类型和char类型将被提升到int类型,整个算术表达式的数据类型自动控制提升到与表达式中最高等级操作数同样的类型(int前提升到int,int后的提升到出现最高的)
(2) 强制类型转换
强制类型转换:语法(目标类型)变量名


1 | int b1 = 40000; |
byte a6 = 3 + 4;//java编译器有常量优化机制
//常量不作类型提升,变量才会出现转换类型异常问题
System.out.println(a6);

