1.数据类型的分类
基本数据类型(4类8种)
- 整数类型:byte、short、int、long(字节分别为:1 , 2 , 4 , 8)
- 浮点型:float、double(字节分别为:4 , 8)
- 布尔型:boolean
- 字符型:char
引用数据类型
- String
- 类(class)
- 接口(interface)
- 数组
2.基本数据类型的范围
它们的值都已经以常量的形式定义在对应的包装类中,下面我们用代码看看
public class Type {
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
运行效果
由基本数据类型的字节,位,不难发现它们取值范围的规律:
取值范围的规律
类型 | 字节 | 位 | 最小范围,最大范围 |
---|---|---|---|
byte | 1 | 8 | -2^7, 2^7-1 |
short | 2 | 16 | -2^15, 2^15-1 |
int | 4 | 32 | -2^31, 2^31-1 |
long | 8 | 64 | -2^63, 2^63-1 |
float | 4 | 32 | 1.4E-45,3.4028235E38 |
double | 8 | 64 | 4.9E-324,1.7976931348623157E308 |
char | 1 | 16 | 0,65535 |
需要注意的是:
1.float和double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.4E38即为3.4x10^38,1.4E-45即为1.4x10-45.
2.boolean类型的值只有false和true
3.各类型的默认值
类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | ‘u0000’ |
boolean | false |
String | null |
代码
public class TestType {
static byte by;
static short sh;
static int i;
static long l;
static float f;
static double d;
static char ch;
static boolean bool;
static String str;
public static void main(String[] args) {
System.out.println("Byte :" + by);
System.out.println("Short :" + sh);
System.out.println("Integer :" + i);
System.out.println("Long :" + l);
System.out.println("Float :" + f);
System.out.println("Double :" + d);
System.out.println("Character:" + ch);
System.out.println("Bool :" + bool);
System.out.println("String :" + str);
}
}
运行效果
4.类型转换
转换规律
1.数值类型之间转换;
小到大,正常转换
大到小,强制转换
2.整数 和char之间的转换;
代码
public class Type_01 {
//类型转换
public static void main(String[] args) {
/**
* 1.同类型 :大到小 强制转换
* 小到大 直接转换
*/
short s=12;
int i=13;
//s=i;大到小转换,即将i的值赋给s这样写会报错,这时候需要强制转换,快捷键alt+回车,再回车
s= (short) i;//快捷键后强制转换
i=s;//小到大转换,即将s的值赋给i,直接转换
byte b=1;
long l=2;
l=b;//小到大直接转换
/**
* 2.1不同类型 :正常型
*/
//1. int(4个字节) float(4个字节)
int i1=12;
float f1=12.3f;
//i1=f1; 大到小转换,即将f1的值赋给i1这样写会报错,这时候需要强制转换,快捷键alt+回车,再回车
i1= (int) f1;//快捷键后强制转换
f1=i1;//小到大转换,即将i1的值赋给f1,直接转换
/**
*2.2 不同类型 :非正常型
*/
//int(4) double (8) byte float
//int char
int a=97;
char c='a';
a=c;
//c=a;
c= (char) a;
System.out.println((char)33);
}
}