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 的不可变性,频繁的字符串操作会产生大量临时对象。这时可以使用 StringBuilderStringBuffer

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. 小类型转大类型:自动转换

    • byteshortintlongfloatdouble
    • charintlongfloatdouble
  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. 某些关键字(如 constgoto)虽然保留但未使用

八、注意事项

  1. 选择合适的数据类型

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

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

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