在 Java 中,**Field(字段 / 成员变量)**的初始化有多种方式,具体取决于你希望何时、如何给字段赋值。下面系统地说明常见方式,并给出示例。
在定义字段的同时赋值,程序在创建对象时自动完成。
public class Person {
private String name = "张三";
private int age = 18;
}
✅ 特点:
适合依赖参数或不同对象不同值的情况。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
✅ 特点:
在构造方法之前执行,适合多个构造方法共享的初始化逻辑。
public class Person {
private int age;
{
age = 18;
}
public Person() {}
public Person(String name) {}
}
✅ 特点:
public class Config {
public static int MAX = 100;
}
public class Config {
public static Map<String, String> map;
static {
map = new HashMap<>();
map.put("key", "value");
}
}
✅ 特点:
如果不显式赋值,Java 会赋予默认值:
| 类型 | 默认值 |
|---|---|
| int / long / short / byte | 0 |
| double / float | 0.0 |
| boolean | false |
| 引用类型 | null |
int x; // 默认 0
String s; // 默认 null
public class Person {
private String name;
public void setName(String name) {
this.name = name;
}
}
✅ 常用于:
Field field = obj.getClass().getDeclaredField("name");
field.setAccessible(true);
field.set(obj, "李四");
✅ 常用于:
如果你有具体场景(比如 Spring、静态常量、不可变对象),我可以进一步细化说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。