原文: https://beginnersbook.com/2017/08/variables-in-java/

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

如何在 Java 中声明变量

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

  1. data_type variable_name = value;

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

例如:这里num是一个变量,int是一个数据类型。我们将在下一个教程中讨论数据类型,所以不要过于担心它,只要理解int数据类型允许这个num变量保存整数值。您可以在此处阅读数据类型,但我建议您在继续阅读本指南之前先阅读本指南。

  1. int num;

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

  1. char ch = 'A';
  2. int number = 100;

或者我们可以这样做:

  1. char ch;
  2. int number;
  3. ...
  4. ch = 'A';
  5. number = 100;

java 中的变量命名约定

1)变量命名不能包含空格,例如:int num ber = 100;无效,因为变量名称中包含空格。

2)变量名可以以特殊字符开头,例如$_

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

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

Java 中的变量类型

Java 中有三种类型的变量

1)局部变量 2)静态(或类)变量 3)实例变量

静态(或类)变量

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

静态变量的示例

  1. public class StaticVarExample {
  2. public static String myClassVar="class or static variable";
  3. public static void main(String args[]){
  4. StaticVarExample obj = new StaticVarExample();
  5. StaticVarExample obj2 = new StaticVarExample();
  6. StaticVarExample obj3 = new StaticVarExample();
  7. //All three will display "class or static variable"
  8. System.out.println(obj.myClassVar);
  9. System.out.println(obj2.myClassVar);
  10. System.out.println(obj3.myClassVar);
  11. //changing the value of static variable using obj2
  12. obj2.myClassVar = "Changed Text";
  13. //All three will display "Changed Text"
  14. System.out.println(obj.myClassVar);
  15. System.out.println(obj2.myClassVar);
  16. System.out.println(obj3.myClassVar);
  17. }
  18. }

输出:

  1. class or static variable
  2. class or static variable
  3. class or static variable
  4. Changed Text
  5. Changed Text
  6. Changed Text

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

  1. System.out.println(myClassVar);

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

实例变量

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

实例变量的示例

  1. public class InstanceVarExample {
  2. String myInstanceVar="instance variable";
  3. public static void main(String args[]){
  4. InstanceVarExample obj = new InstanceVarExample();
  5. InstanceVarExample obj2 = new InstanceVarExample();
  6. InstanceVarExample obj3 = new InstanceVarExample();
  7. System.out.println(obj.myInstanceVar);
  8. System.out.println(obj2.myInstanceVar);
  9. System.out.println(obj3.myInstanceVar);
  10. obj2.myInstanceVar = "Changed Text";
  11. System.out.println(obj.myInstanceVar);
  12. System.out.println(obj2.myInstanceVar);
  13. System.out.println(obj3.myInstanceVar);
  14. }
  15. }

输出:

  1. instance variable
  2. instance variable
  3. instance variable
  4. instance variable
  5. Changed Text
  6. instance variable

局部变量

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

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

局部变量的示例

  1. public class VariableExample {
  2. // instance variable
  3. public String myVar="instance variable";
  4. public void myMethod(){
  5. // local variable
  6. String myVar = "Inside Method";
  7. System.out.println(myVar);
  8. }
  9. public static void main(String args[]){
  10. // Creating object
  11. VariableExample obj = new VariableExample();
  12. /* We are calling the method, that changes the
  13. * value of myVar. We are displaying myVar again after
  14. * the method call, to demonstrate that the local
  15. * variable scope is limited to the method itself.
  16. */
  17. System.out.println("Calling Method");
  18. obj.myMethod();
  19. System.out.println(obj.myVar);
  20. }
  21. }

输出:

  1. Calling Method
  2. Inside Method
  3. instance variable

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

在继续下一个主题之前,请查看这些相关的 java 示例

  1. Java 程序:查找字符的 ASCII 值
  2. Java 程序:乘以两个数字
  3. Java 程序:计算三角区域