含义:用于存放整数值的
(1)整数类型详述
| 类型 | 存储空间 | 范围 |
|---|---|---|
| byte[1] | 1字节 | -128~127 |
| short[2] | 2字节 | -32768~32767 |
| int[4] | 4字节 | -2147483648~2147483647 |
| long[8] | 8字节 |
(2)整数类型的使用细节
Ⅰ、Java各整数类型有固定的范围和字段长度,不受系统影响;
Ⅱ、Java的整形常量默认是int型、声明long整形常量必须加‘l’或者‘L’;
Ⅲ、Java程序中变量通常声明为int型,除非不足以表示大数,才使用long。
范例
package com.lizhi;
public class hello{
public static void main(String[] args){
byte n1 = 10;
short n2 = 10;
int n3 = 10;
long n4 = 10L;
System.out.println("n1: "+n1);
System.out.println("n2: "+n2);
System.out.println("n3: "+n3);
System.out.println("n4: "+n4);
}
}
运行结果
(3)整数内存存储空间详述
bit:计算机中最小的存储单位byte:计算机中基本存储单元
1byte = 8bit
范例:整数类型3的存储空间
2、浮点数含义:浮点类型用来表示一个小数
(1)浮点数类型详述
| 类型 | 存储空间 | 描述 |
|---|---|---|
| float[4] | 4字节 | |
| double[8] | 8字节 |
(2)浮点数使用细节
Ⅰ、浮点数有固定的范围和长度,不受系统影响;
Ⅱ、浮点型常量默认为double型,声明float型常量,须加‘f’或‘F’;
Ⅲ、通常下使用double类型,因为比float更精确。
范例
package com.lizhi;
public class hello{
public static void main(String[] args){
float n1 = 3.45f;
double n2 = 3.45;
System.out.println("n1: "+n1);
System.out.println("n2: "+n2);
}
}
运行结果
(3)浮点数存储空间解析
浮点数存储:符号位+指数位+尾数位
符号位(Sign):0代表正,1代表为负;指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储;尾数部分(Mantissa):尾数部分。
| 精度 | 存储空间 | 符号位 | 指数位 | 小数位 | 偏移量 |
|---|---|---|---|---|---|
| float | 32 | 1【31】 | 8【30-23】 | 23【20-00】 | 127 |
| double | 64 | 1【63】 | 11【62-52】 | 52【51-00】 | 1023 |
范例:8.25在存储空间的表示
按照上面的存储方式,符号位为0,表示为正;指数位为3+127=130,位数部分为 1.00001,故8.25的存储方式如下: 0xbffff380: 01000001000001000000000000000000 分解如下: 0--10000010--00001000000000000000000 具体表示: 符号位为0,指数部分为10000010,位数部分为 00001000000000000000000
(4)8.1/3的计算
范例
package com.lizhi;
public class hello{
public static void main(String[] args){
double n1 = 2.7;
double n2 = 8.1/3;
System.out.println("n1: "+n1);
System.out.println("n2: "+n2);
// 错误比较
if( n1 == n2 ){
System.out.println("=");
} else {
System.out.println("!=");
}
// 正确比较
if( Math.abs( n1-n2 ) < 0.00001 ){
System.out.println("=");
} else {
System.out.println("!=");
}
}
}
运行结果
3、字符型(1)字符概述
| 类型 | 存储空间 | 描述 |
|---|---|---|
| char[2] | 2个字节 |
(2)字符使用细节
Ⅰ、字符常量使用单引号(‘’)括起来的单个字符;
Ⅱ、在java中,char的本质是一个整数,对应unicode字符输出;
可以给char赋一个整数,然后输出时,会按照对应的unicode字符输出;
char类型是可以运算的,相当于一个整数,因为它对应Unicode码。
范例
package com.lizhi;
public class hello{
public static void main(String[] args){
char c1 = 'a';
char c2 = 't';
char c3 = 97;
char c4 = (char) (c1 + c3);
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
System.out.println(c1+c3);
System.out.println(c4);
}
}
运行结果
(3)字符类型存储空间
字符类型存储
'a' ==> 码值97 ==> 二进制(1100001) ==> 存储
字符类型读取
二进制(1100001) ==> 码值97 ==> 'a' ==>显示4、布尔型
| 类型 | 存储空间 | 描述 |
|---|---|---|
| char[2] | 2个字节 | ture/false |
范例
package com.lizhi;
public class hello{
public static void main(String[] args){
boolean isPass = true;
if( isPass == true ){
System.out.println("1");
} else {
System.out.println("0");
}
}
}
运行结果
5、类型自动转换自动转换场景:当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。
自动类型转换:多种类型混合运算时间,系统首先自动将所有数据转换成容量最大的那种数据类型,之后才进行计算自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。 6、类型强制转换
强制转换:将容量大的数据类型转换为容量小的数据类型。
范例
package com.lizhi;
public class hello{
public static void main(String[] args){
double n1 = 10;
float n2 = (float) n1;
long n3 = (long) n2;
int n4 = (int) n3;
System.out.println(n1);
System.out.println(n2);
System.out.println(n3);
System.out.println(n4);
}
}
运行结果



