Java数据类型分为基本数据类型和引用数据类型 (引用数据类型会在面向对象的时候学到)
基本数据类型分为赋值型
字符型
布尔型
整形就是用来存放整数的数据类型:byte , short , int , long
它们的取值范围分别是:
| 整形 | 内存空间(8位等于1字节) | 取值范围 |
|---|---|---|
| byte | 8位 | -128 ~ 127 |
| short | 16位 | -32768 ~ 32767 |
| int | 32位 | -2147483648 ~ 2142147483647 |
| long | 64位 | -9223372036854775808 ~ 9223372036854775807 |
(Java默认的整形是int型,声明long形常量后面必须加“ l ” ,“ L ”)
浮点型就是用来存放小数的数据类型:float , double
它们的取值范围分别是:
| 浮点型 | 内存空间 | 取值范围 |
|---|---|---|
| float | 32位 | 1.4E-45 ~ 3.4028235E38 |
| double | 64位 | 4.9E-324 ~ 1.7976931348623157E308 |
(Java默认的浮点形是double型,声明float形常量后面必须加“ f ” ,“ F ”)
//浮点数使用陷阱 double num1 = 2.7; double num2 = 8.1/3; System.out.println(num1);//2.7 System.out.println(num2);//无限接近2.7 //重点:对运算结果是小数的进行相等判断时要小心 //细节:不是计算得到而是直接赋予,可以判断相等
字符型char用于存储单个字符,占用16位(两个字节)的内存空间。在定义字符型变量时要以单引号表示:
//例子 char a1 = 65; System.out.println(a1);//输出65代表的那一个字符,结果为A(这里涉及到了ASC||码值,可以上网去查)
字符型的本质:字符型存储到计算机中需要将字符对应的码值找出来
a ==> 码值97 ==> 二进制 ==> 存储
二进制 ==> 97 ==> a ==> 显示
布尔类型又称逻辑类型,通过boolean来定义布尔型变量,只有true和false两个值,分别代表布尔型中的 “真” 和 “假”。
boolean类型不参与转换
//例子
boolean a1 = true;//定义一个布尔型变量a1=真
if(ai==ture){//if判断a1是否为真
System.out.println("真");//为真输出这句话
}else{
System.out.println("假");//否则为假输出这句话
}
自动类型转换
精度小的数据类型转换为精度大的数据类型
(最好背下来)
(char > int > long > float > double)
(byte > short > int > long > float > double)
//例子 int a = 'a';//char类型转换int double b = 100; System.out.println(a);//结果为a对应的整数97 System.out.println(b);//整数转小数输出会加小数点,结果100.0 //byte,short,char之间不会相互自动转换
byte,short,char三者可以运算,在计算时首先转为int类型
//例子 byte a1 = 10; byte a5 = 10; short a2 = 10; //byte a6 = a1 + a2; 错误,因为是int类型 //short a3 = a1 + a2; 错误:a1+a2等于int类型 int a4 = a1+ a2; System.out.println(a4);
自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
//例子 byte q1 = 1; short q2 = 10; int q3 = 20; double q4 = 50.5; double q5 = q1 + q2 + q3 +q4; //int q6 = q1 + q2 + q3 +q4; System.out.println(q5);//输出为最大的数据类型double,否者报错强制类型转换
将容量大的转换为容量小的,但可能造成精度降低或者溢出,要注意
//例子 int a = (int)1.9;//把double类型数据强制转换为int类型 System.out.println(a);//结果为1 int a1 = 1000; byte b = (byte)a1; System.out.println(b);//造成数据溢出 //例子2 char c1 = 97; int z = 97; //char c2 = z; char类型可以保存int的常量,不能保存int变量,需要强转 char c3 = (char)z; System.out.println(c3);//结果为a //byte,short,char在计算时首先转为int类型,需要强转 //例子3 //强转符号只针对最近的操作数有效,往往会使用小括号提升优先级 int x = (int)(10*3.5+6*2.5); //先算的结果=50,然后 转换(int)50 结果=50 System.out.println(x);



