Java 中的实例变量
原文: https://javabeginnerstutorial.com/core-java-tutorial/instance-variable-java/
对象使用 Java 中的实例变量存储其状态。 没有使用STATIC关键字定义的变量,并且在任何方法声明之外的都是特定于对象的,称为实例变量。 之所以这样称呼它们,是因为它们的值特定于实例,而不是在实例之间共享。
实例变量示例
class Page {public String pageName;// instance variable with public accessprivate int pageNumber;// instance variable with private access}
Java 中实例变量的规则
- 实例变量可以使用四个访问级别中的任何一个
- 他们可以标记为最终
- 可以将它们标记为瞬态
- 它们不能标记为抽象
- 无法将它们标记为已同步
- 它们不能标记为
strictfp - 它们不能被标记为本地
- 它们不能标记为静态
备忘单
public, private, protected所有这三种访问修饰符都可以应用于实例变量(默认)。- 实例变量可以标记为
final。 - 实例变量可以标记为
transient。 - 实例变量不能是
abstract。 - 实例变量无法具有
syncronized修饰符。 - 实例变量无法具有
strictfp修饰符。 - 实例变量无法具有
native修饰符。 - 实例变量不能具有
static修饰符,因为它会变为类级别的变量。 - 实例变量将获得默认值,这意味着无需初始化即可使用实例变量。 对于局部变量,情况并非如此。
| 实例变量类型 | 默认值 |
|---|---|
boolean | false |
byte | (char)0 |
short | (short)0 |
int | 0 |
long | 0l |
char | \u0000 |
float | 0.0f |
double | 0.0d |
Object | null |
package com.jbt;/** Here we will discuss about different type of Variables available in Java*/public class VariablesInJava {/** Below variable is INSTANCE VARIABLE as it is outside any method and it is* not using STATIC modifier with it. It is using default access modifier.* To know more about ACCESS MODIFIER visit appropriate section*/int instanceField;/** Below variable is STATIC variable as it is outside any method and it is* using STATIC modifier with it. It is using default access modifier. To* know more about ACCESS MODIFIER visit appropriate section*/static String staticField;public void method() {/** Below variable is LOCAL VARIABLE as it is defined inside method in* class. Only modifier that can be applied on local variable is FINAL.* To know more about access and non access modifier visit appropriate* section.** Note* : Local variable needs to initialize before they can be used.* Which is not true for Static or Instance variable.*/final String localVariable = "Initial Value";System.out.println(localVariable);}public static void main(String args[]) {VariablesInJava obj = new VariablesInJava();/** Instance variable can only be accessed by Object of the class only as below.*/System.out.println(obj.instanceField);/** Static field can be accessed in two way.* 1- Via Object of the class* 2- Via CLASS name*/System.out.println(obj.staticField);System.out.println(VariablesInJava.staticField);System.out.println(new VariablesInJava().instanceField);}}
掌握 Java 中的静态变量,以了解它与实例变量的不同之处。
参考文献
- 官方文档
- 静态变量与实例变量
