java static变量 this隐式参数

本文探讨了Java中静态方法和变量的特点与限制,包括静态方法无法调用非静态方法,以及非静态变量不可直接使用静态变量进行初始化等问题。同时介绍了this隐式参数的概念及其在构造器中的应用。

java中的静态方法不能调用普通方法

静态变量不能被普通变量初始化

因为非静态的方法依赖于对象而存在。普通方法(非静态)可以调用静态方法和使用静态变量,也就是可以使用公共存储区域。

this隐式参数

每个非静态方法,在编译时,编译器都会传一个隐式参数this给当前的方法,通常会传递两个隐式参数,this super 。构造器中传入的this也就等于正在初始化的对象。可以通过this()调用其他的构造器,构造器的调用必须在第一句。

### Java中为`enum`类型定义带参数变量Java中,可以通过为枚举类型的实例提供构造函数来实现带有参数的枚举变量。以下是详细的说明: #### 定义带参数的枚举变量 当需要为枚举值附加额外的信息时,可以在枚举类中定义私有的成员变量,并通过构造函数初始化这些变量。每个枚举值都可以传递不同的参数给其构造函数[^1]。 ```java public enum Color { RED("红色"), GREEN("绿色"), BLUE("蓝色"); private final String description; // 私有构造函数用于初始化成员变量 Color(String description) { this.description = description; } // 提供getter方法访问成员变量 public String getDescription() { return description; } } ``` 在此示例中: - `Color` 是一个枚举类。 - 枚举值 `RED`, `GREEN`, 和 `BLUE` 各自携带了一个字符串参数 `"红色"`, `"绿色"`, 和 `"蓝色"`。 - 这些参数被传递到枚举类的私有构造函数中,从而赋值给成员变量 `description`。 - 成员变量 `description` 被声明为 `final`,表示一旦初始化就不能更改。 #### 使用带参数的枚举变量 可以通过调用枚举类中的方法获取附加信息。例如,在上面的例子中,可以使用 `getDescription()` 方法获取每种颜色的文字描述。 ```java public class Main { public static void main(String[] args) { for (Color color : Color.values()) { System.out.println(color.name() + ": " + color.getDescription()); } } } ``` 输出结果将是: ``` RED: 红色 GREEN: 绿色 BLUE: 蓝色 ``` #### 枚举的常见操作 除了定义带参数的枚举外,还可以利用一些内置的方法来增强功能。例如: - **`toString()`**: 返回枚举常量的名字,默认情况下与 `name()` 方法相同[^1]。 - **`values()`**: 返回当前枚举类的所有实例数组。 - **`valueOf(String name)`**: 根据名称查找对应的枚举实例。 #### 注意事项 1. 如果枚举值不需要任何参数,则无需定义构造函数和成员变量[^4]。 2. 所有枚举实例都地具有 `public static final` 的修饰符,因此无法修改它们的状态。 3. 枚举支持重载构造函数,这意味着可以根据实际需求设计多种参数的构造逻辑[^1]。 --- ### 示例代码总结 以下是一个完整的例子,展示了如何定义和使用带参数的枚举变量: ```java // 定义带参数的枚举 public enum Planet { MERCURY(3.30E23), VENUS(4.87E24), EARTH(5.98E24), MARS(6.42E23); private final double mass; // 千克单位的质量 // 构造函数接收质量参数 Planet(double mass) { this.mass = mass; } // 获取星球质量的方法 public double getMass() { return mass; } } // 测试程序 public class TestPlanet { public static void main(String[] args) { for (Planet planet : Planet.values()) { System.out.printf("%s has a mass of %.2e kg%n", planet.name(), planet.getMass()); } } } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值