# Java 中的变量

> 原文： [https://beginnersbook.com/2017/08/variables-in-java/](https://beginnersbook.com/2017/08/variables-in-java/)

变量是与可以更改的值相关联的名称。例如，当我写`int i=10;`时，变量名是 **`i`** ，它与值 10 相关联，`int`是表示该变量可以保存整数值的数据类型。我们将在下一个教程中介绍数据类型。在本教程中，我们将讨论变量。

## 如何在 Java 中声明变量

要声明变量，请遵循以下语法：

```java
data_type variable_name = value;
```

这里的值是可选的，因为在 java 中，您可以先声明变量，然后再将值赋给它。

例如：这里`num`是一个变量，`int`是一个数据类型。我们将在下一个教程中讨论数据类型，所以不要过于担心它，只要理解`int`数据类型允许这个`num`变量保存整数值。您可以在此处阅读[数据类型](https://beginnersbook.com/2017/08/data-types-in-java/)，但我建议您在继续阅读本指南之前先阅读本指南。

```java
int num;

```

类似地，我们可以在声明它们的同时将值分配给变量，如下所示：

```java
char ch = 'A';
int number = 100;

```

或者我们可以这样做：

```java
char ch;
int number;
...
ch = 'A';
number  = 100;

```

## java 中的变量命名约定

1）变量命名不能包含空格，例如：`int num ber = 100;`无效，因为变量名称中包含空格。

2）变量名可以以特殊字符开头，例如`$`和`_`

3）根据 java 编码标准，变量名称应以小写字母开头，例如`int number;`对于具有多个单词的冗长变量名称，请执行以下操作：`int smallNumber; int bigNumber;`（以大写字母开头第二个字）。

4）变量名在 Java 中区分大小写。

## Java 中的变量类型

Java 中有**三种类型的变量**。

1）局部变量 2）静态（或类）变量 3）实例变量

## 静态（或类）变量

静态变量也称为类变量，因为它们与类相关联，并且对于所有类实例都是通用的。例如，如果我创建一个类的三个对象并访问此静态变量，那么对所有人来说都是常见的，使用其中一个对象对变量所做的更改将反映在您通过其他对象访问它时。

### 静态变量的示例

```java
public class StaticVarExample {
   public static String myClassVar="class or static variable";

   public static void main(String args[]){
      StaticVarExample obj = new StaticVarExample();
      StaticVarExample obj2 = new StaticVarExample();
      StaticVarExample obj3 = new StaticVarExample();

      //All three will display "class or static variable"
      System.out.println(obj.myClassVar);
      System.out.println(obj2.myClassVar);
      System.out.println(obj3.myClassVar);

      //changing the value of static variable using obj2
      obj2.myClassVar = "Changed Text";

      //All three will display "Changed Text"
      System.out.println(obj.myClassVar);
      System.out.println(obj2.myClassVar);
      System.out.println(obj3.myClassVar);
   }
}
```

**输出：**

```java
class or static variable
class or static variable
class or static variable
Changed Text
Changed Text
Changed Text

```

正如您所看到的，无论访问它的实例如何，所有三个语句都显示相同的输出。这就是为什么我们可以在不使用这样的对象的情况下访问静态变量：

```java
System.out.println(myClassVar);
```

> 请注意，只能像这样访问静态变量。这不适用于实例和局部变量。

## 实例变量

类的每个实例（对象）都有自己的实例变量副本。与静态变量不同，实例变量有自己独立的实例变量副本。我们在下面的程序中使用对象`obj2`更改了实例变量值，当我们使用所有三个对象显示变量时，只有`obj2`值被更改，其他值保持不变。这表明它们有自己的实例变量副本。

### 实例变量的示例

```java
public class InstanceVarExample {
   String myInstanceVar="instance variable";

   public static void main(String args[]){
	InstanceVarExample obj = new InstanceVarExample();
	InstanceVarExample obj2 = new InstanceVarExample();
	InstanceVarExample obj3 = new InstanceVarExample();

	System.out.println(obj.myInstanceVar);
	System.out.println(obj2.myInstanceVar);
	System.out.println(obj3.myInstanceVar);

	obj2.myInstanceVar = "Changed Text";

	System.out.println(obj.myInstanceVar);
	System.out.println(obj2.myInstanceVar);
	System.out.println(obj3.myInstanceVar);
   }
}

```

**输出：**

```java
instance variable
instance variable
instance variable
instance variable
Changed Text
instance variable

```

## 局部变量

这些变量在类的方法内声明。它们的范围仅限于方法，这意味着您无法更改其值并在方法之外访问它们。

在这个例子中，我已经声明了与局部变量同名的实例变量，这是为了演示局部变量的范围。

### 局部变量的示例

```java
public class VariableExample {
   // instance variable
   public String myVar="instance variable";

   public void myMethod(){
    	// local variable
    	String myVar = "Inside Method";
    	System.out.println(myVar);
   }
   public static void main(String args[]){
      // Creating object
      VariableExample obj = new VariableExample();

      /* We are calling the method, that changes the 
       * value of myVar. We are displaying myVar again after 
       * the method call, to demonstrate that the local 
       * variable scope is limited to the method itself.
       */
      System.out.println("Calling Method");
      obj.myMethod();
      System.out.println(obj.myVar);
   }
}

```

**输出：**

```java
Calling Method
Inside Method
instance variable

```

> 如果我没有声明实例变量并且只在方法内部声明了局部变量，那么语句`System.out.println(obj.myVar);`会抛出编译错误。因为您无法更改和访问方法之外的局部变量。

在继续下一个主题之前，请查看这些相关的 [java 示例](https://beginnersbook.com/2017/09/java-examples/)：

1.  [Java 程序：查找字符的 ASCII 值](https://beginnersbook.com/2017/09/java-program-to-find-ascii-value-of-a-character/)
2.  [Java 程序：乘以两个数字](https://beginnersbook.com/2017/09/java-program-to-multiply-two-numbers/)
3.  [Java 程序：计算三角区域](https://beginnersbook.com/2014/01/java-program-to-calculate-area-of-triangle/)