前言
Java是一个强类型的语言,会把日常见到的数据,分成好多类型
一、数据类型分类
1.基本类型
Java基本数据类型有8个
整数:byte short int long
小数:float double(也叫浮点型,float是单精度,double是双精度)
字符:char(赋值必须被一对单引号引起来,例:char c = ‘a’;)
布尔:boolean(赋值true或者false)
2.引用类型
引用类型分四种:强引用、软引用、弱引用、虚引用,String字符串类型就属于引用类型,这个之后再讲。
二、使用
1.整数
(1)byte 占1个字节 8位 取值范围-128~127 如果赋值超过范围会报错
public static void main(String[] args) {
byte a = -128;
System.out.println(a);
}
(2) short 占2个字节 16位 取值范围-32768~32767
public static void main(String[] args) {
short s = 123;
System.out.println(s);
}
(3)int 占4个字节 32位 取值范围-2147483648~2147483647
public static void main(String[] args) {
int i = 465;
int iMin = Integer.MIN_VALUE;//int最小值
int iMax = Integer.MAX_VALUE;//int最大值
System.out.println(i);
}
(4)long 占8个字节 64位
取值范围-9223372036854775808~9223372036854775807
public static void main(String[] args) {
long l = 123L;//声明long类型数字后面加L
long lMin = Long.MIN_VALUE;
long lMax = Long.MAX_VALUE;
System.out.println(lMin);//-9223372036854775808
System.out.println(lMax);//9223372036854775807
}
2.小数
(1)float 占4个字节 32位 赋值时数据后面+F
public static void main(String[] args) {
float f = 5.3F;
System.out.println(f);
}
(2)double 占8个字节 64位 赋值时数据后面+D
public static void main(String[] args) {
Double d = 5.3D;
System.out.println(d);
}
3.字符
char 占2个字节 16位
赋值为一个字符: ‘中’ 则输出为 中
赋值为一个数字:65 输出字符编码表(ascii码表)中对应的字符 A
ascii码表,只规定了0~127数字对应的字符
128~65535没规定,统一对应的字符都是?
public static void main(String[] args) {
char c = 'c';
char c1 = 65;
System.out.println(c);//c
System.out.println(c1);//A
}
4.布尔类型
boolean 占1个字节 8位 赋值只有true或false
public static void main(String[] args) {
boolean b = true;
System.out.println(b);//true
}
三、字面值
public static void main(String[] args) {
//1.整数默认是int类型
int a = 100;
//int b = 10000000000;//报错,因为超出了int范围
//2.小数默认是double类型
double b = 3.1;
//float c = 3.1 ;//报错,3.1本来就是double类型
//3.在范围内可以直接赋值
byte c = 127;
//byte d = 128;//报错,128超出了byte的范围
//4.字面值后缀l f d
//l/L是long的缩写 f/F是float的缩写 d/D是double的缩写
//把右侧的整数从默认的int类型扩大成long--加后缀L
long d = 10000000000L;
//小数默认是double类型,非得表示成float--加后缀F
float x = 3.14F;
//想把整数3从int类型表示成小数3.0的double类型--加后缀D
double y = 3d;
}
四、基本类型的类型转换
每声明一个变量,Java虚拟机会为变量分配一块内存,声明一个long/double类型变量分配的内存 要比 声明一个int类型分配的内存大。可以把int类型变量放入long类型内存中,反过来会报错,但是有办法做到。
public static void main(String[] args) {
//1.小转大/隐式转换 byte->long
byte a = 10;
long b = a;
//拿着右侧的小类型的a给左侧的大类型的b赋值--直接写
//2.大转小/显式转换 double->int
double m = 9.9;
int n = m;//这样会报错
//拿着右侧的大类型的m给左侧的小类型的n赋值--强转
int n = (int) m ;
System.out.println(n);//9
}