字段
Java字段是类中的变量。例如,在代表员工的类中,Employee类可能包含以下字段:
- name(名字)
- position(岗位)
- salary(薪水)
- hireDate(入职日期)
示例代码如下:
public class Employee {
String name ;
String position ;
int salary ;
Date hiredDate;
}
字段声明语法
字段声明遵循下面的语法格式:
[访问修饰符] [static] [final] 类型 变量名 [= 初始值] ;
方括号[]中的内容表示该选项是可选的。只有类型和变量名是必需的。
首先可以为Java字段声明一个访问修饰符。访问修饰符确定哪些对象类可以访问该字段。在上面的Employee例子中没有访问修饰符。
其次,必须分配Java字段的数据类型。在上面的Employee例子中,使用了数据类型String,int和Date。
第三,Java字段可以声明为static(静态的)。在Java中,静态字段归属于类,而不属于类的实例。因此,任何类的所有实例都将访问相同的静态字段变量。对于类的每个对象(实例),非静态字段值可能不同。
第四,Java字段可以被声明为final。final字段的值不能改变且必须分配一个初始值给它,一旦设置,该值不能再被改变。final字段通常也被声明为静态的。声明static和final的字段也被称为“常量”。
第五,Java字段被赋予了一个名字。你可以自由选择这个名字,但是这个名字可以包含什么字符有一些限制。
第六,你可以选择为该字段设置一个初始值。
以下部分将详细介绍上述某些选项。
访问修饰符
Java字段访问修饰符确定该字段是否可以由拥有该字段的类以外的类访问。Java字段有四种可能的访问修饰符:
- private
- package
- protected
- public
private修饰符意味着只有该类本身代码可以访问该字段。
package访问修饰符意味着只有类本身或同一包中的其他类可以访问该字段。实际上并不需要写封装修饰符。默认情况就是这种访问修饰符。
protected访问修饰符与包修饰符类似,只是该类的子类也可以访问该字段,即使该子类不在相同的包中。
public访问修饰符意味着该字段可以被应用程序中的所有类访问。
所有示例如下:
public class Customer {
private String email;
String position; //没有修饰符 = package 修饰符
protected String name;
public String city;
}
上面的例子仅仅是一个展示所有修饰符的示例。实际上,你可能并不需要在一个类中使用所有的修饰符。通常而言,使用private和protected较多。而对于用来传输数据的类,你可能会将所有字段声明为public。
静态和非静态字段
Java字段可以是静态的,也可以是非静态的。
一个静态字段属于这个类。因此,不管该类有多少个对象,都只有该静态字段,而且无论通过哪个对象去访问该字段,值都是相同的。下面是一个说明静态字段的图表:
静态字段位于类中,而不是位于对象中。
你可以通过关键字static来定义静态字段。示例如下:
public class Customer {
static String staticField1;
}
静态字段位于类中,因此不需要该类的实例来访问静态字段。你只要在前面写下类名就可以了:
Customer.staticField1 = "value";
System.out.println(Customer.staticField1);
另一方面,非静态Java字段位于类的实例中。这个类的每个实例都可以有自己的值。以下是一个说明非静态字段的图表:
非静态字段位于类的对象中
你可以通过不写static关键字来定义一个非静态字段。示例如下:
public class Customer {
String field1;
}
要访问非静态字段,你需要创建一个类的对象,然后通过对象来访问该字段。示例如下:
Customer customer = new Customer();
customer.field1 = "value";
System.out.println(customer.field1);
final字段
字段声明时加上关键字final后,该字段一旦被赋值后,其值就不能再更改了。示例如下:
public class Customer {
final String field1 = "Fixed Value";
}
现在变量 field1的值就不能更改了。这意味着,即使字段属于对象(类实例),也不能将字段的值从一个对象改变成另一个对象。
如果无法改变最终字段的值,在很多情况下,也可以声明它是静态的。下面是一个例子:
public class Customer {
static final String field1 = "Fixed Value";
}
由于静态final字段通常用作常量,因此命名约定是将字段名全部大写,并用下划线_分隔单词。以下是一个Java静态final字段示例:
public class Customer {
static final String CONSTANT_1 = "Fixed Value";
}
字段命名
Java字段的名字用来从代码中引用该字段。示例如下:
Customer customer = new Customer();
customer.city = "New York";
System.out.println(customer.city);
第一行创建一个新的Customer对象(Customer类的一个实例),并将其存储在一个名为customer的变量中。第二行将字符串值"New York"分配给Customer对象city字段。第三行将city字段的值输出到控制台输出。
字段的命名限制和命名约定与变量相同。
初始化字段的值
Java字段可以被赋予初始值。在JVM中创建该字段时,将此值分配给该字段。静态字段是在加载类时创建的。在你的程序中第一次引用类时就会加载该类。非静态字段是在创建对象时创建的。
下面是一个以初始值声明的Java字段的示例:
public class Customer {
String customerType = "OnlineCustomer";
}
下一篇: Java方法