Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 与框架

Java 类参考

Java 有用资源

Java - 变量类型



什么是 Java 变量?

变量为我们提供了程序可以操作的命名存储。Java 中的每个变量都具有特定的类型,该类型决定变量内存的大小和布局;存储在该内存中的值的范围;以及可以应用于变量的操作集。

变量声明和初始化

在使用变量之前,必须先声明所有变量。Java 变量通过指定数据类型后跟变量名来声明。要分配值,请使用赋值 (=) 运算符后跟值。每个声明或初始化语句都必须以分号 (;) 结尾。

语法

以下是变量声明的基本形式:

data type variable [ = value][, variable [ = value] ...] ;

这里 数据类型Java 的数据类型 之一,而 变量 是变量的名称。要声明指定类型的一个以上变量,可以使用逗号分隔的列表。

有效变量声明和初始化示例

以下是 Java 中变量声明和初始化的有效示例:

int a, b, c;         // Declares three ints, a, b, and c.
int a = 10, b = 10;  // Example of initialization
byte B = 22;         // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a';        // the char variable a iis initialized with value 'a'

Java 变量类型

以下是三种类型的 Java 变量

  1. 局部变量
  2. 实例变量
  3. 类/静态变量

1. Java 局部变量

  • 局部变量在 方法构造方法 或代码块中声明。

  • 当进入方法、构造方法或代码块时创建局部变量,并且一旦退出方法、构造方法或代码块,该变量将被销毁。

  • 访问修饰符 不能用于局部变量。

  • 局部变量仅在其声明的方法、构造方法或代码块内可见。

  • 局部变量在内部以栈级别实现。

  • 局部变量没有默认值,因此应在第一次使用之前声明局部变量并为其分配初始值。

示例 1:变量的局部作用域以及初始化

这里,age 是一个局部变量。它在 pupAge() 方法内定义,其作用域仅限于此方法。

public class Test {
   public void pupAge() {
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

输出

Puppy age is: 7

示例 2:变量的局部作用域,未初始化

以下示例在未初始化的情况下使用 age,因此在编译时会报错。

public class Test {
   public void pupAge() {
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

输出

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

2. Java 实例变量

  • 实例变量在 中声明,但在方法、构造方法或任何代码块之外。

  • 当在堆中为对象分配空间时,会为每个实例变量值创建一个插槽。

  • 使用关键字“new”创建对象时创建实例变量,并在销毁对象时销毁实例变量。

  • 实例变量保存必须由多个方法、构造方法或代码块引用的值,或者对象状态的基本部分,这些部分必须存在于整个类中。

  • 实例变量可以在类级别在使用之前或之后声明。

  • 可以为实例变量提供访问修饰符。

  • 类中的所有方法、构造方法和代码块都可以看到实例变量。通常,建议将这些变量设为私有(访问级别)。但是,可以使用访问修饰符为子类提供这些变量的可见性。

  • 实例变量具有默认值。对于数字,默认值为 0,对于布尔值,默认值为 false,对于对象引用,默认值为 null。可以在声明期间或在构造方法内分配值。

  • 可以通过在类内部调用变量名来直接访问实例变量。但是,在静态方法中(当实例变量被赋予可访问性时),应使用完全限定名来调用它们。ObjectReference.VariableName

Java 实例变量示例

import java.io.*;

public class Employee {

   // this instance variable is visible for any child class.
   public String name;

   // salary  variable is visible in Employee class only.
   private double salary;

   // The name variable is assigned in the constructor.
   public Employee (String empName) {
      name = empName;
   }

   // The salary variable is assigned a value.
   public void setSalary(double empSal) {
      salary = empSal;
   }

   // This method prints the employee details.
   public void printEmp() {
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]) {
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

输出

name  : Ransika
salary :1000.0

3. Java 类/静态变量

  • 类变量也称为静态变量,在类中使用 static 关键字声明,但在方法、构造方法或代码块之外。

  • 无论从该类创建多少个对象,每个类变量在每个类中都只有一份副本。

  • 静态变量很少使用,除非声明为常量。常量是指声明为 public/private、final 和 static 的变量。常量变量的值在其初始值后永远不会改变。

  • 静态变量存储在静态内存中。除了声明为 final 并用作 public 或 private 常量之外,很少使用静态变量。

  • 静态变量在程序启动时创建,在程序停止时销毁。

  • 可见性与实例变量类似。但是,大多数静态变量都声明为 public,因为它们必须可供类的用户使用。

  • 默认值与实例变量相同。对于数字,默认值为 0;对于布尔值,为 false;对于对象引用,为 null。可以在声明期间或在构造函数中分配值。此外,可以在特殊的静态初始化块中分配值。

  • 可以通过使用类名 `ClassName.VariableName` 调用来访问静态变量。

  • 当将类变量声明为 public static final 时,变量名(常量)全部大写。如果静态变量不是 public 和 final,则命名语法与实例变量和局部变量相同。

Java 类/静态变量示例

import java.io.*;

public class Employee {

   // salary  variable is a private static variable
   private static double salary;

   // DEPARTMENT is a constant
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]) {
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }
}

输出

Development average salary:1000

注意 - 如果从外部类访问变量,则应将常量访问为 Employee.DEPARTMENT

下一步是什么?

您已在本节中使用了访问修饰符(public 和 private)。下一节将详细解释访问修饰符和非访问修饰符。

广告