• 前言
  • 如何在Java中声明变量
  • java中变量命名约定
  • Java中的变量类型
  • 静态(或类)变量
  • 实例变量
  • 局部变量



前言

变量,顾名思义,是个可以更改的值的统一称谓。
例如,当使用int i=10;在这里写入时,变量名称为i,它是与值10相关联,int是表示此变量可以包含整数值的数据类型。
我们将在下一个教程中介绍数据类型,在本教程中,我们将讨论变量。


如何在Java中声明变量

要声明变量,请遵循以下语法:

data_type variable_name = value ;

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

例如:

int num;

这里num是变量,int是数据类型。我们将在下一个教程中讨论数据类型,所以不要过于担心它,只要了解int数据类型允许这个num变量保存整数值。

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

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

或者,可以这么搞:

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)实例变量 (类对象)

静态(或类)变量

静态变量也称为类变量,因为它们与类相关联,并且对于所有类实例都是通用的。
例如,如果我创建一个类的三个对象并访问此静态变量,那么对所有对象来说都是通用的,使用其中一个对象对变量所做的更改,将同时影响通过其他对象的调用结果。

静态变量示例:

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();

      //三个对象都将打印 "class or static variable"
      System.out.println(obj.myClassVar);
      System.out.println(obj2.myClassVar);
      System.out.println(obj3.myClassVar);

      //用obj2对象改变静态变量的值
      obj2.myClassVar = "Changed Text";

      //三个对象都将打印 "Changed Text"
      System.out.println(obj.myClassVar);
      System.out.println(obj2.myClassVar);
      System.out.println(obj3.myClassVar);
   }
}

输出:

class or static variable
class or static variable
class or static variable
Changed Text
Changed Text
Changed Text

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

System.out.println(myClassVar);

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


实例变量

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

实例变量示例:

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);
   }
}

输出:

instance variable
instance variable
instance variable
instance variable
Changed Text
instance variable

局部变量

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

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

局部变量示例:

public class VariableExample {
   // 实例变量
   public String myVar="instance variable";

   public void myMethod(){
        // 局部变量
        String myVar = "Inside Method";
        System.out.println(myVar);
   }
   public static void main(String args[]){
      // 创建对象
      VariableExample obj = new VariableExample();

      /* 我们调用方法,改变myVar的值
       * 调用完成后,再打印myVarWe的值
       * 证明了局部变量作用域仅在方法本身范围内
       */
      System.out.println("Calling Method");
      obj.myMethod();
      System.out.println(obj.myVar);
   }
}

输出:

Calling Method
Inside Method
instance variable

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