【目录】
【本节重点】
- 字面常量
- 数据类型
- 变量
1. 字面常量
1.1 概念
100、3.14、‘A’、true/false都是字面常量
1.2 分类
- 字符串常量:如“hello”
- 整型常量:1,22
- 浮点数常量:1.24
- 布尔常量:ture/false
- 字符常量:‘a’
- 空常量:null
2. 数据类型
【注】:
- java中没有无符号数,所有数均为有符号数
- 与C语言不同,无论是32位还是64位系统,数据类型所占字节不变(这源于Jdk中包含了Jvm)
- 整型默认是int,浮点型默认是double
- String是引用类型
- Java用Unicode表示字符,C语言则用ASCII
2.1 分类
Java的数据类型分为基本数据类型和引用数据类型,基本数据类型有8种,不包括String
2.2 基本数据类型
1.字节类型
【演示】占1字节
byte i = -128;
System.out.println(Byte.MAX_VALUE);//byte所能存的最大值 127
System.out.println(Byte.MIN_VALUE);//打印byte所能存的最小值 -128
【包装类】Byte
2. 短整型
【演示】占2字节
short s = 254;
System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);
【包装类】Short
3. 整型
【演示】占4字节
int a = 2;
System.out.println(Integer.MAX_VALUE); //int所能存的最大值 2^31-1
System.out.println(Integer.MIN_VALUE); //int所能存的最小值 -2^31
【包装类】Integer
4. 长整型
【演示】占8字节
long L = 1234;
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
【包装类】Long
5. 单精度浮点型
【演示】占4字节
float f = 1.2f;
System.out.println(Float.MIN_VALUE);
System.out.println(Float.MAX_VALUE);
【包装类】Float
6. 双精度浮点型
【演示】占8字节
double d = 1.23d;
System.out.println(Double.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
【包装类】Double
7. 字符类型
【演示】占2字节
char c = '1';
System.out.println(Character.MIN_VALUE);
System.out.println(Character.MAX_VALUE);
【包装类】Character
8.布尔类型
【演示】没有具体表明占几个字节
boolean b = true;
System.out.println(Boolean.MIN_VALUE); //报错
【包装类】Boolean
【注】:布尔类型只有true和false,没有明确的大小,不可用1代替true
2.3 引用数据类型
字符串类型
- int——>String
int i = 17;
String str1 = i+" ";
- String——>int
String s = "12";
int h = Integer.parseInt(s);
3. 变量
3.1 基本数据变量
上面已经演示过基本数据变量的用法
3.2 引用数据变量
String类型
4. 类型转换
【发生条件】不同类型的变量之间相互赋值时
4.1 自动类型转换(隐式)
【演示】
int a = 10;
long L = a; //通过编译
byte b = a; //编译报错
【适用于】数据类型由小转大 / 数据没有超过该数据类型的取值范围
4.2 强制类型转换(显式)
【演示】
int a = 10;
long L = a; //编译通过
byte b = (byte) L; //编译通过
【适用于】数据类型由大转小/数据超过该数据类型的取值范围
【注】:
- 强转会导致精度丢失
- 强转不一定会成功,不相干的类型不能强转
5. 类型提升
【发生条件】不同类型的变量之间相互运算时
5.1 4字节以下
【原理】计算机中CPU每次取指令都是以4字节为单位从内存中读写数据,所以为了方便硬件实现,4个字节以下的类型在进行运算时会提升为int类型
【演示】byte/char/short——>int
byte b1 = 10;
byte b2 = 23;
byte sum = b1+b2;// 编译报错
//改
byte sum1 = (byte)(b1+b2);
5.2 4字节以上
【演示】范围小的会提升为范围大的
int i = 17;
long e = 23;
int sum = i+e; //编译错误
long inter = i+e; //i提升为long类型,i+e结果也是long类型
总结
- 认识字面常量
- 熟练8种基本数据类型所占字节,对应的包装类,取值范围
- 浮点数变量的书写规则:为了方便记忆,数据都加后缀(f/d)
- 不同类型之间的变量相互赋值时——>类型转换
- 不同类型之间的变量相互运算时——>类型提升
- 类型转换:数据类型范围由大转小,需强转
- 类型提升:数据类型范围低于4字节,运算时无论什么类型都会被当成int;数据类型范围高于4字节,运算时无论什么类型都会被当成范围大的类型