掌握
- 了解位(bit)和字节(byte)概念
- 掌握基本数据类型
- 掌握引用数据类型
- 掌握数据类型的自动转换
- 掌握数据类型的强制转换
- 了解ASCII编码表
- 掌握int类型和char类型的运算原理
位(bit)和字节(byte)
- 位:计算机表示数据大小的最小单位,也叫比特位,英文bit
- 字节:也是计算机表示数据大小的单位,英文byte,在Java中是一种数据类型
- 1字节 = 8位(1byte = 8bit)
基本数据类型
数据类型 | 种类 | 字节 | 位 | 取值范围 | 初始值 | 包装类 | 说明 | 示例 |
---|---|---|---|---|---|---|---|---|
byte | 整数型 | 1 | 8 | -2^7 2^7-1 | 0 | Byte | byte 类型主要用于在大型数组中代替 int 类型 byte 变量占用的空间只有 int 类型的四分之一 | byte a = 10 byte b = -10 |
short | 整数型 | 2 | 16 | -2^15 2^15-1 | 0 | Short | short 类型主要用于在大型数组中代替 int 类型 short 变量占用的空间只有 int 类型的二分之一 | short a = 10 short b = -10 |
int | 整数型 | 4 | 32 | -2^31 2^31-1 | 0 | Integer | 通常整数型变量默认为 int 类型 | int a = 10 int b = -10 |
long | 整数型 | 8 | 64 | -2^63 2^63-1 | 0L | Long | 主要用在需要比较大的整数时 | long a = 10L long b = -10L |
float | 单精度浮点型 | 4 | 32 | 0.0f | Float | float 类型主要用于在大型数组中代替 double 类型 float 变量占用的空间只有 double 类型的二分之一 浮点数不能用来表示精确的值,如货币 计算精确的值应该使用Bigdecimal | float a = 10.1f float b = -10.1f | |
double | 双精度浮点型 | 8 | 64 | 0.0d | Double | 通常浮点型变量默认为 double 类型 | double a = 10.1d double b = -10.1d | |
char | 字符型 | 2 | 16 | 0 65535 | Character | char 类型是一个单一的16位Unicode字符 char 类型可以储存任何字符 | char a = ‘a’ | |
boolean | 布尔型 | false | Boolean | boolean 类型表示一位的信息 只有两个值:true 和 false | boolean a = true boolean b = false |
引用数据类型
数据类型 | 初始值 | 说明 | 示例 |
---|---|---|---|
类 | null | 通常通过new关键字创建 | String a = new String(“x”) |
接口 | null | 通常通过实现类创建 | List list = new ArrayList() |
数组 | null | 通常通过new 关键字创建 | String[] arr = new String[1] |
引用数据类型的默认值都是null
数据类型转换
Java程序中要求参与计算的数据,必须保证数据类型的一致性,如果数据类型不一致将发生类型的转换,分为系统的自动转换和人为的强制转换
自动转换
- 原因:由于数据类型一致性原则,不同的数据类型在进行运算时,系统会自动转换为同一种数据类型
- 说明:自动转换发生在用于运算的数值类型和字符类型
- 规则:取值范围小的数值类型向取值范围大的数值类型转换,即向上自动转换
byte-->short-->char-->int-->long-->float-->double
- 示例:
public static void main(String[] args) {
int a = 1;
byte b = 2;
//byte c = a + b; //报错
//int类型和byte类型运算,结果是int类型
int c = a + b;//结果3
}
强制转换
- 原因:人为需要
- 说明:数值类型和字符类型向下强制转换时,存在精度丢失的问题
- 规则:数据类型 变量名 = (数据类型)被转数据值
- 示例:
public static void main(String[] args) {
Object obj = new Object();
//引用类型强制转换
String a = (String)obj;
}
public static void main(String[] args) {
short a = 10;
//a = a + 10;//报错:a + 10会发生自动向上转型为int
a = (short)(a + 10);//先向上自动转型为int,再强制向下转型为short,可能精度丢失
}
ASCII编码表
- 说明:将所有的英文字母,数字,符号都和十进制进行了对应,产生的编码表ASCII(American Standard Code for Information Interchange 美国标准信息交换码)
- 规则(常用):
字符 | 数值 |
---|---|
0 | 48 |
9 | 57 |
A | 65 |
Z | 90 |
a | 97 |
z | 122 |
int和char运算
- 规则:char类型先根据编码表转换为int,再跟int进行运算
- 示例:
public static void main(String[] args) {
char c = 'a';
int i = 1;
//字符'a'对应的数值时97,c + i 相当于97 + 1
System.out.println(c+i);//输出结果是98
}