2.2 基本数据类型
展开:JAVA数据类型思维导图
2.2.1 基本数据类型
Java 中的基本数据类型包括以下几种:
- 整型:byte、short、int、long
- 浮点型:float、double
- 布尔型:boolean
- 字符型:char
2.2.2 基本数据类型的默认值
Java 中基本数据类型的默认值如下:
- 整型:0
- 浮点型:0.0
- 布尔型:false
- 字符型:'\u0000'
- 引用类型:null
2.2.3 基本数据类型的转换
Java 中基本数据类型的转换包括以下几种:
- 自动类型转换:将较小的数据类型转换为较大的数据类型,例如将 byte 转换为 int。
- 强制类型转换:将较大的数据类型转换为较小的数据类型,例如将 int 转换为 byte。
- 隐式类型转换:将基本数据类型转换为对应的包装类,例如将 int 转换为 Integer。
- 显式类型转换:将包装类转换为基本数据类型,例如将 Integer 转换为 int。
- 类型提升:将较小的数据类型提升为较大的数据类型,例如将 byte 和 int 相加时,byte 会被提升为 int。
2.2.4 基本数据类型的范围
Java 中基本数据类型的范围如下:
- byte:-128 到 127
- short:-32,768 到 32,767
- int:-2^31 到 2^31-1
- long:-2^63 到 2^63-1
- float:大约 ±3.40282347E+38F(有效位数为 6-7 位)
- double:大约 ±1.79769313486231570E+308(有效位数为 15 位)
- char:0 到 65535
- boolean:true 或 false
2.2.5 基本数据类型的常量
Java 中基本数据类型的常量包括以下几种:
- 整型常量:例如 10、-20、0x1A 等。
- 浮点型常量:例如 3.14、-0.5、1.23E-4 等。
- 布尔型常量:true 和 false。
- 字符型常量:例如'a'、'b'、'\u0000'等。
- **说明**:
- 字符型常量可以使用转义字符表示特殊字符,例如'\n'表示换行符,'\t'表示制表符。
- '\u0000'表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示是因为,Java 采用的是 Unicode 字符集,Unicode 字符以\u 开头,空白字符在 Unicode 码表中对应的值为'\u0000'。
2.3 变量与常量
2.3.1 标识符和关键字
1.标识符和关键字
Java 中的标识符是指用来标识变量、类、方法等的名称,关键字是 Java 语言中具有特殊含义的保留字。Java 中的标识符必须以字母、下划线或美元符号开头,后面可以跟字母、数字、下划线或美元符号。Java 中的关键字不能用作标识符。
(1)标识符的命名规则
Java 中的标识符必须以字母、下划线或美元符号开头,后面可以跟字母、数字、下划线或美元符号。Java 中的标识符不能包含空格,不能包含特殊字符,不能包含 Java 关键字。
(2)关键字
Java 中的关键字包括以下几种:
-
基本数据类型关键字:int、float、double、boolean、char、byte、short、long。
-
控制流程关键字:if、else、switch、case、default、for、while、do、break、continue、return、try、catch、finally。
-
类与对象关键字:class、interface、extends、implements、new、this、super、instanceof。
-
访问控制关键字:public、protected、private。
-
其他关键字:void、null、true、false、import、package、abstract、final、native、static、strictfp、synchronized、transient、volatile。
表 Java 常用关键字及含义关键字 含义 abstract 声明抽象类或抽象方法 boolean 布尔类型 break 跳出循环或 switch 语句 byte 字节类型 case switch 语句中的分支 catch 捕获异常 char 字符类型 class 声明类 continue 跳过本次循环 default switch 语句中的默认分支 do do-while 循环 double 双精度浮点类型 else if 语句中的 else 分支 extends 继承 final 声明常量或不可变类 finally try-catch 语句中的 finally 块 float 单精度浮点类型 for for 循环 if if 语句 implements 实现接口 import 导入类或包 instanceof 判断对象是否为某个类的实例 int 整型 interface 声明接口 long 长整型 native 声明本地方法 new 创建对象 null 空值 package 声明包 private 私有访问控制 protected 受保护访问控制 public 公共访问控制 return 返回值 short 短整型 static 静态方法或变量 strictfp 严格浮点运算 super 调用父类方法或变量 switch switch 语句 synchronized 同步方法或代码块 this 调用当前对象的方法或变量 throw 抛出异常 throws 声明方法可能抛出的异常 transient 不会被序列化的变量 try try-catch 语句中的 try 块 void 无返回值 volatile 变量在多个线程中可见 while while 循环
Java 中的关键字具有以下特点:
- 关键字都是小写的。
- 关键字不能用作标识符。
- 关键字具有特殊的含义,不能随意使用。
2.3.2 变量和常量
变量:变量是程序中用于存储数据的容器,每个变量都有一个名称(也称为标识符)和一个数据类型。变量可以在程序中多次使用,以存储和操作数据。
常量:常量是程序中用于存储固定值的容器,一旦被赋值,就不能再改变。常量通常用于表示程序中的固定值,如数学常数 π、物理常数等。
Java 中的变量类型有:
- 基本数据类型:包括整数类型(byte、short、int、long)、浮点类型(float、double)、字符类型(char)和布尔类型(boolean)。
- 引用数据类型:包括类、接口、数组等。
Java 中的常量类型有:
-
字面量常量:包括整数常量、浮点常量、字符常量和字符串常量。
-
枚举常量:使用 enum 关键字定义的常量集合。
-
常量变量:使用 final 关键字声明的变量,其值在初始化后不能被改变。
1.变量
(1)变量的定义
变量的定义格式如下:
数据类型 变量名;
例如:
int num; String name;
变量的命名规则
变量的命名规则如下:
- 变量名必须由字母、数字和下划线组成,不能以数字开头。
- 变量名不能包含空格和特殊字符(如@、#、$等)。
- 变量名区分大小写。
- 变量名不能与 Java 关键字冲突。
- 变量名应具有一定的意义,以便于理解和维护代码。
(2)变量的赋值和初始化
变量的初始化是指在定义变量的同时为其赋值。变量的初始化格式如下:
数据类型 变量名 = 值;
例如:
int num = 10; String name = "John"; int intint = 0; //默认值为0 int max=Integer.MAX_VALUE; //最大值
(3)变量的使用
变量在使用之前必须先进行初始化,否则会出现编译错误。变量的使用格式如下:
变量名 = 值;
例如:
num = 20; name = "Tom";
(4)变量的作用域
变量的作用域是指变量在程序中的可见范围。根据变量的作用域,可以将变量分为局部变量和成员变量。
- 局部变量:在方法或代码块中定义的变量,只能在定义它的方法或代码块中使用。
- 成员变量:在类中定义的变量,可以在类的任何方法中使用。
例如:
public class MyClass {
int num; //成员变量
public void myMethod() {
int localNum; //局部变量
}
}
在上述代码中,num 是成员变量,可以在 myMethod 方法中使用。localNum 是局部变量,只能在 myMethod 方法中使用。
2.常量
常量的定义格式如下:
final 数据类型 常量名 = 值;
例如:
final double PI = 3.1415926;
final String NAME = "John";
常量的值在程序运行期间不能被修改。常量的命名规则与变量类似,但常量名通常使用大写字母,以示其不可变性。
2.4 数据类型间的相互转换
Java 中的数据类型可以分为两大类:基本数据类型和引用数据类型。这里主要讲基本数据类型之间的转换。
-
基本数据类型之间的转换可以分为自动类型转换和强制类型转换。
2.4.1 自动(隐式)类型转换
自动类型转换是指当两个不同类型的数据进行运算时,系统会自动将它们转换为相同类型。自动类型转换的规则如下:
- 如果两个操作数都是整数类型,则将它们转换为范围更大的整数类型。
- 如果两个操作数都是浮点类型,则将它们转换为范围更大的浮点类型。
- 如果一个操作数是整数类型,另一个操作数是浮点类型,则将整数类型转换为浮点类型。
例如:
int a = 10; double b = 3.14; double c = a + b; //a被转换为double类型,然后与b相加
在上述代码中,a 是整数类型,b 是浮点类型,a 被自动转换为 double 类型,然后与 b 相加,得到的结果是 double 类型。
2.4.2 强制(显式)类型转换
强制类型转换是指将一个数据类型转换为另一个数据类型。强制类型转换的格式如下:
(目标类型) 值
例如:
int a = 10; double b = 3.14; int c = (int) b; //将b转换为int类型
在上述代码中,b 是 double 类型,需要将其转换为 int 类型,因此使用强制类型转换,将 b 转换为 int 类型,得到的结果是 int 类型。
强制类型转换可能会导致数据丢失或溢出,因此在使用强制类型转换时需要谨慎。
例如,将一个 double 类型的值转换为 int 类型时,小数部分将被截断,可能导致数据丢失。因此,在使用强制类型转换时,需要确保转换后的数据不会丢失或溢出。double d = 3.14; int e = (int) d; //e的值为3,小数部分被截断
在上述代码中,d 是 double 类型,需要将其转换为 int 类型,因此使用强制类型转换,将 d 转换为 int 类型,得到的结果是 int 类型,但小数部分被截断,因此 e 的值为 3。
2.4.3 基本数据类型与字符串之间的转换
基本数据类型与字符串之间的转换可以通过以下两种方式实现:
- 使用字符串的静态方法 valueOf()将基本数据类型转换为字符串。
- 使用字符串的构造方法将基本数据类型转换为字符串。
例如:
int a = 10; String str1 = String.valueOf(a); //将int类型转换为字符串 String str2 = Integer.toString(a); //将int类型转换为字符串 String str3 = "" + a; //将int类型转换为字符串
在上述代码中,a 是 int 类型,需要将其转换为字符串,因此使用 valueOf()方法或 toString()方法或字符串连接运算符将 a 转换为字符串。
double b = 3.14; String str4 = String.valueOf(b); //将double类型转换为字符串 String str5 = Double.toString(b); //将double类型转换为字符串 String str6 = "" + b; //将double类型转换为字符串
在上述代码中,b 是 double 类型,需要将其转换为字符串,因此使用 valueOf()方法或 toString()方法或字符串连接运算符将 b 转换为字符串。
将字符串转换为基本数据类型可以通过以下两种方式实现: -
使用包装类的静态方法 parseXXX()将字符串转换为基本数据类型。
-
使用包装类的构造方法将字符串转换为基本数据类型。
例如:
String str7 = "123";
int c = Integer.parseInt(str7); //将字符串转换为int类型
double d = Double.parseDouble(str7); //将字符串转换为double类型
在上述代码中,str7 是字符串,需要将其转换为 int 类型或 double 类型,因此使用 parseInt()方法或 parseDouble()方法将 str7 转换为 int 类型或 double 类型。
String str8 = "3.14";
double e = Double.parseDouble(str8); //将字符串转换为double类型
int f = Integer.parseInt(str8); //将字符串转换为int类型
在上述代码中,str8 是字符串,需要将其转换为 double 类型或 int 类型,因此使用 parseDouble()方法或 parseInt()方法将 str8 转换为 double 类型或 int 类型。