本篇博客主要讲解基本数据类型。JAVA当中的基本数据类型有四类八种:
- 四类分别是:整型、浮点型、字符型、布尔型
- 八种:
数据类型 | 关键字 | 内存咱用 | |
整型 | int | 4个字节 | |
长整型 | long | 8个字节 | |
短整型 | short | 2个字节 | |
单精度浮点型 | float | 4个字节 | |
双精度浮点型 | double | 8个字节 | |
字符型 | char | 2个字节 | |
字节型 | byte | 1个字节 | |
布尔型 | boolean | 没有明文规定 |
为了便于描述类型,我这里将变量与类型结合起来,变量也就是在使用过程中内容可以改变的量
1.整型变量
1.1整型(int)变量
int a = 10; //定义一个整型变量a
System.out.println(a); //打印输出整型变量a的值
在这里,我们在定义变量的时候不要忘了赋值,不然在后面打印的时候为报错。
//探究整型变量的数据范围
System.out.println(Integer.MAX_VALUE); //最大值范围
System.out.println(Integer.MIN_VALUE); //最大值范围
//结果展示:
//2147483647
//-2147483648
在上面我们可以看到整型的数据范围,因此我们在给整型变量赋值的时候尽量不要超过该范围,超过以后编译器会报错。
总结:
- int不论在何种系统下都是4个字节
- 在定义变量时,一定要给变量赋初值,赋的值不能超过该类型数据的范围
- int的包装类为Integer
1.2长整型(long)变量
long a = 10; //定义长整型变量a,并给a赋值10
long b = 10L; //为了区分int和long类型,建议在long类型变量的初始值后面加L
System.out.println(a);
System.out.println(b);
//结果:
10
10
同样对long数据类型的范围进行研究
System.out.println(Long.MAX_VAULE);
System.out.println(Long.MIN_VAULE);
//结果:
9223372036854775807
-9223372036854775808
总结:
- 长整型变量的初始化值后加L
- 长整型不论在那个系统都占用8个字节
- long的包装类型为Long
1.3短整型(short)变量
short a = 10; //定义短整型变量,并赋初值10
System.out.println(a);
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
//结果:
10
32767
-32768
总结:
- short在任何系统下都占2个字节
- short的包装类型为Short
1.4字节型(byte)变量
byte a = 10;
System.out.println(a);
System.out.println(Byte.MAX_VALUE);
System.out.println(Byte.MIN_VALUE);
//结果:
10
127
-128
这里需要强调的是字节型数据的范围是-128~127,当输入的数据超过该范围时就会报错:不兼容的类型: 从int转换到byte可能会有损失
还有一种情况也会报错
byte a = 10;
byte b = 20;
byte c = a+b;
System.out.println(c);
System.out.println(Byte.MAX_VALUE+1);
//错误: 不兼容的类型: 从int转换到byte可能会有损失byte c = a+b;
原因是因为a+b在参与运算时都是字节型,他们会发生整型提升,计算结果为整型,将整型的值赋给字节型就会发生精度的损失,JAVA的编译环境是不允许出现这样的情况,所以就会报错
总结:
- byte在任何系统下都占1个字节
- byte的范围是:-128~127
- 字节的包装类型为Byte
2.浮点型(float)变量
2.1单精度浮点型float
float num = 2.1F; //为了区分双精度浮点型,这里建议在值后面加上后缀F
System.out.println(num);
//结果:2.1
2.2双精度浮点数double
double a = 3.14; //定义双精度变量a,并赋初值3,14
int b = 1;
int c = 2;
double d = 3.0;
System.out.println(a);
System.out.println(b/c);
System.out.println(b/d);
//结果:
3.14
0
0.3333333333333333
注意只要是小数,如果没有声明是什么类型,默认都是双精度类型。如果要得到小数,则运式中必须有一个为double型。
总结:
- double在任何系统下都占8个字节
- double的包装类型为Double
- double类型的内存布局准寻IEEE754标准,尝试使用有限的内存空间表示无限的小数,势必会存在一定精度的误差,因此浮点数是个近似值,并不是精确值。
3.字符型(char)变量
char C1 = 'A'; //定义大写字母
char C2 = '1'; //定义数字字符
char C3 = '帅'; //定义汉字
System.out.println(C1);
System.out.println(C2);
System.out.println(C3);
//结果:
A
1
帅
总结:
- JAVA中使用单引号+单个字母的形式表示字符字面值
- char在JAVA中占2个字节
- 计算机的字符本质是一个整数,在C语言中使用ASCII表示字符,而JAVA中使用Unicoad表示字符,因此一个字符占用两个字节,表示的字符种类更多,包括中文
4.布尔型(boolean)变量
布尔类型常用来表示真假,在C语言中我们用0表示假,非0表示真,但在JAVA中用true表示真,false表示假
boolean a = true;
boolean b = false;
System.out.println(a);
System.out.println(b);
//结果:
true
false
布尔类型与整型
boolean value = true;
System.out.println(value+1);
//结果
错误: 二元运算符 '+' 的操作数类型错误,System.out.println(value+1);
第一个类型: boolean
第二个类型: int
总结:
- boolean类型的变量只有两种取值,true表示真,false表示假
- Java的boolean类型和int不能相互转换,不存在1表示true,0表示false
- 现在没有明确的规定boolean占几个字节
- boolean的包装类型为Boolean