为什么有数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间,可以合理的分配内存空间。比如你去买菜的时候需要用一个袋子来装菜,去家具城买家具需要用卡车来装家具,如果用袋子装家具,显然是不现实的,开卡车去装菜,也是资源的浪费。因此程序员在定义变量的时候,需要声明这个变量的数据类型,这样就会给这个变量开辟一块合理大小的内存区域,从而避免空间浪费。
Java中数据类型的分类
基本数据类型
引用数据类型
基本数据类型分类(4类8种)
整数型
byte 占一个字节 -128到127 (字节型)
short 占两个字节 -215~215-1 (短整型)
int 占四个字节 -231~231-1 (整型)
long 占八个字节 -263~263-1 (长整型)
浮点型
float 占四个字节 -3.403E38~3.403E38 单精度
double 占八个字节-1.798E308~1.798E308 双精度
字符型
char 占两个字节 0~65535
布尔型
boolean
boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
1gb=1024mb
1mb=1024kb
1kb=1024byte
public class DataType01{
public static void main(String[] args){
//将整数100赋值给i变量。
int i = 100;
//将整数888复制给l1变量
long l1 = 888;
//程序将2147483648看做int类型,但是这个数据本身已经超出了int的取值范围。
//long l2 = 2147483648;报错error
//正确的方法应该在后面加上L,这样就会把2147483648看做是long类型。
//如果不加L的话,会把2147483648看成int类型,即默认会将整数的字面值看成是int类型
long l3 = 2147483648L;
}
}
请注意上面代码里面的
long l1 = 888;
这行是没有报错的。
这里面存在自动类型转换,会自动将int类型转换成long类型,即自动将int类型的888转换成为了long类型。
自动类型转换可以自动将int转成long,那么是否可以将long类型转成int类型呢?请看如下代码
public class DataType02{
public static void main(String[] args){
long l1 = 1000L;
//如果想要将long类型转换成int类型,是不能自动类型转换.
//int i1 = l1;错误error
//需要强制类型转换,如下方式
//程序在运行阶段可能损失精度,所以一定要谨慎使用。一般不建议这样使用。
int i1 = (int)l1; //大容量向小容量转换,需要强制类型转换.
//给byte类型赋值时,一定要注意byte的取值范围
byte b2 = 127;
//128本身已经超出了byte的取值范围。
//byte b3 = 128;错误error
//给short类型赋值时,一定要注意short的取值范围
short s1 = 32767;
//short s2 = 32768;错误error
}
}
如果想要将long类型转成int类型的话,需要进行强制类型转换,不过这种从大容量向小容量进行转换的时候要谨慎使用,有可能损失精度。
在浮点型里面也可以进行强制类型转换
/*
关于浮点型:
float 4个字节
double 8个字节
*/
public class DataType03{
public static void main(String[] args){
//3.14默认为double类型
double d1 = 3.14;
//float f1 = 1.5;错误error
//因为1.5默认是double类型,从容量大向容量小的类型转换需要强制类型转换
float f1 = (float)1.5;
//直接声明1.5为float类型
float f2 = 1.5F;
}
}
boolean类型的数据只有两个值:true/false
/*
关于java中的布尔类型:
1.boolean类型的数据只有两个值:true/false。
2.boolean类型的数据主要用在逻辑运算和条件控制语句中。
*/
public class DataType04{
public static void main(String[] args){
boolean flag = true;
if(flag){
System.out.println("对");
}else{
System.out.println("错");
}
}
}