Java 字段简介

1. 什么是字段?

在 Java 中,字段是类或接口中声明的变量。它们用于存储对象的数据,并且可以在整个类或接口中访问。字段也被称为成员变量或属性。每个字段都有一个名称和一个类型,并可以具有可选的修饰符(如 publicprivatestatic 等)来控制其可访问性和行为。

2. 字段的声明和初始化

在 Java 中,字段的声明遵循以下语法:

[可见性修饰符] [静态修饰符] [最终修饰符] 类型 字段名 [= 初始值];
  • 可见性修饰符:指定字段的可见性,可以是 publicprotectedprivate 或默认(包级私有)。
  • 静态修饰符:用于声明静态字段,被类的所有实例共享。
  • 最终修饰符:用于声明最终字段,其值在初始化后不能再被修改。
  • 类型:字段的数据类型,可以是基本类型(如 intdouble)或引用类型(如 String、自定义类)。
  • 字段名:字段的标识符,遵循标识符命名规则。
  • 初始值:可选项,指定字段的初始值。

以下是一个示例,展示了字段的声明和初始化:

public class Person {
    private String name; // 字符串类型字段,默认值为 null
    private int age = 0; // 整数类型字段,初始值为 0
    public static final int MAX_AGE = 100; // 静态常量字段,不可修改的最大年龄

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age >= 0 && age <= MAX_AGE) {
            this.age = age;
        } else {
            System.out.println("Invalid age!");
        }
    }
}

3. 字段的访问和修改

类中的字段可以通过对象实例进行访问和修改。字段的访问权限取决于其可见性修饰符。如果字段被声明为 public,则可以从任何地方直接访问。如果字段被声明为 private,则只能在类内部访问。如果字段没有可见性修饰符,则只能在同一包中访问。

以下是一个示例,展示了如何访问和修改字段:

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("John");
        person.setAge(25);
        
        System.out.println("Name: " + person.getName());
        System.out.println("Age: " + person.getAge());
    }
}

输出结果:

Name: John
Age: 25

4. 静态字段

静态字段属于类,而不是类的实例。它们在所有类的实例之间共享相同的值。可以通过类名直接访问静态字段,无需创建类的实例。

以下是一个示例,展示了如何声明和访问静态字段:

public class Counter {
    public static int count = 0;

    public Counter() {
        count++;
    }
}

public class Main {
    public static void main(String[] args) {
        Counter counter1 = new Counter();
        System.out.println("Count: " + Counter.count); // 输出:Count: 1
        
        Counter counter2 = new Counter();
        System.out.println("Count: " + Counter.count); // 输出:Count: 2
    }
}

5. 字段的最终性

字段可以使用 final 修饰符来声明为最终字段。最终字段的值在初始化后不能再被修改。最终字段必须在声明时或构造函数中进行初始化。

以下是一个示例,展示了如何声明和使用最终字段:

public class Circle {
    private final double PI = 3.14159;
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public double getArea() {