# Java 中的实例变量

> 原文： [https://javabeginnerstutorial.com/core-java-tutorial/instance-variable-java/](https://javabeginnerstutorial.com/core-java-tutorial/instance-variable-java/)

对象使用 Java 中的实例变量存储其状态。 没有使用`STATIC`关键字定义的变量，并且在任何方法声明之外的都是特定于对象的，称为实例变量。 之所以这样称呼它们，是因为它们的值特定于实例，**而不是**在实例之间共享。

## 实例变量示例

```java
class Page {
public String pageName;
// instance variable with public access
private int pageNumber;
// instance variable with private access
}
```

## Java 中实例变量的规则

*   实例变量可以使用四个[访问级别](https://javabeginnerstutorial.com/core-java-tutorial/access-modifier-in-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` |

```java
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 中的[静态变量，以了解它与实例变量的不同之处。](https://javabeginnerstutorial.com/core-java-tutorial/java-static-keyword/)

### 参考文献

*   [官方文档](https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html)
*   静态变量与实例变量

