On this page

Java变量和数据类型

Java 变量和数据类型

Java 是一种静态类型语言,这意味着所有变量在使用前必须先声明其数据类型。Java 的数据类型可以分为两大类:基本数据类型(Primitive Types)引用数据类型(Reference Types)

一、基本数据类型

Java 有8种基本数据类型:

数据类型大小 (字节)默认值取值范围示例
byte10-128 到 127byte b = 100;
short20-32,768 到 32,767short s = 1000;
int40-2³¹ 到 2³¹-1int i = 100000;
long80L-2⁶³ 到 2⁶³-1long l = 10000000000L;
float40.0f约 ±3.4e+38 (6-7位有效数字)float f = 3.14f;
double80.0d约 ±1.7e+308 (15位有效数字)double d = 3.141592653589793;
char2'\u0000'0 到 65,535 (Unicode字符)char c = 'A';
boolean未明确定义falsetrue 或 falseboolean flag = true;

基本数据类型使用示例

public class PrimitiveTypes {
    public static void main(String[] args) {
        // 整数类型
        byte byteVar = 120;
        short shortVar = 30000;
        int intVar = 2000000000;
        long longVar = 9000000000000000000L;  // 注意long类型需要加L后缀
        
        // 浮点类型
        float floatVar = 3.14f;  // 注意float类型需要加f后缀
        double doubleVar = 3.141592653589793;
        
        // 字符类型
        char charVar = 'J';
        char unicodeChar = '\u0041';  // Unicode表示'A'
        
        // 布尔类型
        boolean boolVar = true;
        
        System.out.println("byteVar: " + byteVar);
        System.out.println("shortVar: " + shortVar);
        System.out.println("intVar: " + intVar);
        System.out.println("longVar: " + longVar);
        System.out.println("floatVar: " + floatVar);
        System.out.println("doubleVar: " + doubleVar);
        System.out.println("charVar: " + charVar);
        System.out.println("unicodeChar: " + unicodeChar);
        System.out.println("boolVar: " + boolVar);
    }
}

二、引用数据类型

引用数据类型包括:

  1. 类 (Class) - 如 String、自定义类等
  2. 接口 (Interface)
  3. 数组 (Array)

引用数据类型示例

public class ReferenceTypes {
    public static void main(String[] args) {
        // 字符串
        String str = "Hello, Java!";
        
        // 数组
        int[] intArray = new int[5];
        String[] strArray = {"Apple", "Banana", "Orange"};
        
        // 自定义类
        Person person = new Person("Alice", 25);
        
        System.out.println("String: " + str);
        System.out.println("intArray length: " + intArray.length);
        System.out.println("strArray[1]: " + strArray[1]);
        System.out.println("Person: " + person.getName() + ", " + person.getAge());
    }
}

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    
    public int getAge() {
        return age;
    }
}

三、变量声明与初始化

Java 中变量的声明和初始化有以下几种方式:

// 1. 声明后初始化
int age;
age = 25;

// 2. 声明同时初始化
double price = 19.99;

// 3. 多变量声明
int x = 5, y = 10, z = 15;

// 4. 使用var关键字(Java 10+局部变量类型推断)
var name = "Alice";  // 编译器推断为String类型
var list = new ArrayList<String>();  // 推断为ArrayList<String>

四、类型转换

Java 中的类型转换分为两种:

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

从小范围类型自动转换为大范围类型:

int i = 100;
long l = i;  // 自动从int转换为long

float f = l; // 自动从long转换为float

double d = f; // 自动从float转换为double

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

从大范围类型强制转换为小范围类型,可能丢失精度:

double d = 100.04;
long l = (long) d;  // 强制转换为long,结果为100

int i = (int) l;    // 强制转换为int,结果为100

float f = (float) d; // 强制转换为float

五、变量的作用域

Java 中变量的作用域由声明位置决定:

  1. 类变量 (静态变量) - 使用 static 修饰,属于类,所有实例共享
  2. 实例变量 - 在类中声明,不在任何方法中,属于对象实例
  3. 局部变量 - 在方法或代码块中声明,只在声明它的块中有效
public class VariableScope {
    // 类变量(静态变量)
    static int classVar = 10;
    
    // 实例变量
    String instanceVar = "Instance Variable";
    
    public void method() {
        // 局部变量
        int localVar = 20;
        System.out.println("局部变量: " + localVar);
    }
    
    public static void main(String[] args) {
        System.out.println("类变量: " + VariableScope.classVar);
        
        VariableScope vs = new VariableScope();
        System.out.println("实例变量: " + vs.instanceVar);
        
        vs.method();
    }
}

六、final 变量(常量)

使用 final 关键字可以声明不可更改的常量:

final double PI = 3.141592653589793;
final int MAX_SIZE = 100;

// PI = 3.14;  // 错误!不能修改final变量

Java 命名约定:

  • 变量名:小驼峰命名法,如 studentName
  • 常量名:全大写,下划线分隔,如 MAX_VALUE