Skip to content

一、数据类型概述 ​

在 Java 中,数据类型分为两大类:

  1. 基本数据类型(Primitive Types)
  2. 引用数据类型(Reference Types)
mermaid
graph TD
    A[Java数据类型] --> B[基本数据类型]
    A --> C[引用数据类型]
    B --> D[数值型]
    B --> E[字符型]
    B --> F[布尔型]
    D --> G[整数类型]
    D --> H[浮点类型]
    G --> I[byte,short,int,long]
    H --> J[float,double]
    C --> K[类]
    C --> L[接口]
    C --> M[数组]

二、基本数据类型 ​

1. 整数类型 ​

类型大小范围默认值示例
byte8位-128 ~ 1270byte b = 100;
short16位-32768 ~ 327670short s = 1000;
int32位-2^31 ~ 2^31-10int i = 100000;
long64位-2^63 ~ 2^63-10Llong l = 10000000000L;

2. 浮点类型 ​

类型大小范围默认值示例
float32位约 ±3.4E+380.0ffloat f = 3.14f;
double64位约 ±1.7E+3080.0ddouble d = 3.1415926;

3. 字符类型 ​

类型大小范围默认值示例
char16位0 ~ 65535'\u0000'char c = 'A';

4. 布尔类型 ​

类型大小范围默认值示例
boolean1位true/falsefalseboolean flag = true;

三、引用数据类型 ​

1. 类(Class) ​

java
// 示例:自定义类
public class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // getter和setter方法
}

2. 字符串(String) ​

String 是 Java 中最常用的引用类型之一,用于表示文本字符串。虽然它看起来像基本类型,但实际上是一个类。

2.1 String 的特点 ​

  1. 不可变性

    • String 对象一旦创建就不能被修改
    • 所有看似修改字符串的操作都会创建新的 String 对象
  2. 字符串池(String Pool)

    • Java 使用字符串池来优化字符串存储
    • 相同的字符串字面量会共享同一个对象
java
// 示例:String 创建方式
String str1 = "Hello";  // 使用字符串字面量
String str2 = new String("Hello");  // 使用构造函数
String str3 = str1 + " World";  // 字符串拼接

2.2 String 常用方法 ​

java
// 示例:String 常用方法
String str = "Hello World";

// 获取长度
int length = str.length();  // 11

// 获取子字符串
String sub = str.substring(0, 5);  // "Hello"

// 查找字符
int index = str.indexOf('o');  // 4

// 字符串比较
boolean equals = str.equals("Hello World");  // true
boolean ignoreCase = str.equalsIgnoreCase("hello world");  // true

// 字符串转换
String upper = str.toUpperCase();  // "HELLO WORLD"
String lower = str.toLowerCase();  // "hello world"

// 去除空格
String trim = "  Hello  ".trim();  // "Hello"

2.3 StringBuilder 和 StringBuffer ​

由于 String 的不可变性,频繁的字符串操作会产生大量临时对象。这时可以使用 StringBuilder 或 StringBuffer:

java
// 示例:StringBuilder 使用
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString();  // "Hello World"

// StringBuffer 使用方式相同,但线程安全
StringBuffer sbf = new StringBuffer();
sbf.append("Hello");
sbf.append(" ");
sbf.append("World");
String result2 = sbf.toString();  // "Hello World"

2.4 String 与 char[] 的转换 ​

java
// String 转 char[]
String str = "Hello";
char[] chars = str.toCharArray();

// char[] 转 String
char[] chars2 = {'H', 'e', 'l', 'l', 'o'};
String str2 = new String(chars2);

3. 接口(Interface) ​

java
// 示例:接口定义
public interface Animal {
    void eat();
    void sleep();
}

4. 数组(Array) ​

java
// 示例:数组声明和初始化
int[] numbers = new int[5];  // 声明长度为5的整型数组
String[] names = {"Alice", "Bob", "Charlie"};  // 声明并初始化字符串数组

四、类型转换 ​

1. 自动类型转换(隐式转换) ​

java
// 示例:自动类型转换
int i = 100;
long l = i;  // 自动将int转换为long
float f = l; // 自动将long转换为float

2. 强制类型转换(显式转换) ​

java
// 示例:强制类型转换
double d = 3.14;
int i = (int)d;  // 强制将double转换为int,结果为3

3. 类型转换规则 ​

  1. 小类型转大类型:自动转换

    • byte → short → int → long → float → double
    • char → int → long → float → double
  2. 大类型转小类型:需要强制转换

    • 可能造成精度损失
    • 可能造成数据溢出

五、包装类(Wrapper Classes) ​

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

自动装箱和拆箱 ​

java
// 自动装箱: Java自动将基本数据类型 int 的值 100 转换为对应的包装类 Integer 对象。
Integer i = 100;

// 自动拆箱: Java自动将 Integer 对象 i 转换为基本数据类型 int。
int j = i;

TIP

  • 自动装箱:像把一件商品(基本类型)自动放进盒子(包装类对象)里。

  • 自动拆箱:自动拆箱:像从盒子里直接取出商品,丢掉盒子。

六、特殊值 ​

1. 空值(null) ​

  • 只能赋值给引用类型
  • 不能赋值给基本类型

2. 默认值 ​

  • 基本类型:0或false
  • 引用类型:null

七、关键字 ​

Java 关键字是 Java 语言中具有特殊含义的保留字,不能用作标识符(如变量名、类名等)。

Java 关键字可以分为以下几类:

1. 访问控制关键字 ​

关键字说明
public公共访问权限,所有类都可以访问
protected受保护的访问权限,同一包内或子类可以访问
private私有访问权限,只有本类可以访问
default默认访问权限,同一包内可以访问

2. 类、方法和变量修饰符 ​

关键字说明
class声明类
interface声明接口
enum声明枚举类型
abstract声明抽象类或方法
final声明不可继承的类、不可重写的方法或常量
static声明静态成员
synchronized声明同步方法或代码块
volatile声明易变变量
transient声明不需要序列化的字段
native声明本地方法

3. 程序控制关键字 ​

关键字说明
if条件语句
else条件语句的否定分支
switch多分支选择语句
caseswitch语句的分支
defaultswitch语句的默认分支
while循环语句
do循环语句
for循环语句
break跳出循环或switch
continue继续下一次循环
return从方法返回

4. 异常处理关键字 ​

关键字说明
try捕获异常
catch处理异常
finally无论是否发生异常都会执行的代码块
throw抛出异常
throws声明方法可能抛出的异常

5. 包相关关键字 ​

关键字说明
package声明包
import导入包

6. 基本类型关键字 ​

关键字说明
boolean布尔类型
byte字节类型
char字符类型
double双精度浮点类型
float单精度浮点类型
int整型
long长整型
short短整型

7. 变量引用关键字 ​

关键字说明
super引用父类
this引用当前对象
void表示方法不返回值
null空引用

8. 保留关键字 ​

关键字说明
const保留关键字,未使用
goto保留关键字,未使用

关键字使用注意事项

  1. 关键字不能用作标识符(如变量名、类名等)
  2. 关键字都是小写的
  3. 关键字不能修改其含义
  4. 某些关键字(如 const 和 goto)虽然保留但未使用

八、注意事项 ​

  1. 选择合适的数据类型

    • 考虑数据范围
    • 考虑内存占用
    • 考虑性能影响
  2. 类型转换注意事项

    • 避免不必要的类型转换
    • 注意精度损失
    • 注意数据溢出
  3. 包装类使用建议

    • 优先使用基本类型
    • 需要对象特性时使用包装类
    • 注意自动装箱拆箱的性能影响