📜  Java中的变量

📅  最后修改于: 2022-05-13 01:55:35.452000             🧑  作者: Mango

Java中的变量

Java中的Java是一个数据容器,在Java程序执行期间保存数据值。每个变量都被分配了一个数据类型,该数据类型指定了它可以保存的值的类型和数量。变量是数据的内存位置名称。

变量是赋予内存位置的名称。它是程序中存储的基本单位。

  • 存储在变量中的值可以在程序执行期间更改。
  • 变量只是内存位置的名称,对变量执行的所有操作都会影响该内存位置。
  • 在Java中,所有变量都必须在使用前声明。

如何声明变量?

我们可以在Java中声明变量,如下图所示作为视觉辅助。

从图中可以很容易地看出,在声明一个变量时,我们需要注意两件事:

1. 数据类型:可以存储在此变量中的数据类型。

2. Dataname:给变量命名。

这样,只能给内存位置起一个名字。可以通过两种方式为其赋值:

  • 变量初始化
  • 通过输入赋值

如何初始化变量?

可以借助以下 3 个组件来感知它:

  • datatype :可以存储在此变量中的数据类型。
  • variable_name :赋予变量的名称。
  • value :它是存储在变量中的初始值。

插图:

float simpleInterest; 
// Declaring float variable
int time = 10, speed = 20; 
// Declaring and Initializing integer variable
char var = 'h'; 
// Declaring and Initializing character variable

Java中的变量类型

现在让我们讨论不同类型的变量,它们被列为 如下:

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

让我们详细讨论一下这里提到的每个变量的特征。

1. 局部变量

在块、方法或构造函数中定义的变量称为局部变量。

  • 这些变量在进入块时创建,或者函数在退出块后或调用从函数返回时被调用和销毁。
  • 这些变量的作用域只存在于声明变量的块中。即,我们只能在该块内访问这些变量。
  • 在定义的范围内使用局部变量之前,必须对其进行初始化。
Java
/*package whatever //do not write package name here */
// Contributed by Shubham Jain
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        int var = 10; // Declared a Local Variable
        // This variable is local to this main method only
        System.out.println("Local Variable: " + var);
    }
}


Java
/*package whatever //do not write package name here */
 
import java.io.*;
 
class GFG {
 
    public String geek; // Declared Instance Variable
 
    public GFG()
    { // Default Constructor
 
        this.geek = "Shubham Jain"; // initializing Instance Variable
    }
//Main Method
    public static void main(String[] args)
    {
 
        // Object Creation
        GFG name = new GFG();
        // Displaying O/P
        System.out.println("Geek name is: " + name.geek);
    }
}


Java
/*package whatever //do not write package name here */
 
import java.io.*;
 
class GFG {
   
  public static String geek = "Shubham Jain";         //Declared static variable
   
    public static void main (String[] args) {
        
      //geek variable can be accessed withod object creation
      //Displaying O/P
      //GFG.geek --> using the static variable
        System.out.println("Geek Name is : "+GFG.geek);
    }
}


输出
Local Variable: 10

2. 实例变量

实例变量是非静态变量,在任何方法、构造函数或块之外的类中声明。

  • 由于实例变量是在类中声明的,因此这些变量在创建类的对象时创建,并在对象被销毁时销毁。
  • 与局部变量不同,我们可以对实例变量使用访问说明符。如果我们不指定任何访问说明符,则将使用默认访问说明符。
  • 实例变量的初始化不是强制性的。它的默认值为 0
  • 实例变量只能通过创建对象来访问。

Java

/*package whatever //do not write package name here */
 
import java.io.*;
 
class GFG {
 
    public String geek; // Declared Instance Variable
 
    public GFG()
    { // Default Constructor
 
        this.geek = "Shubham Jain"; // initializing Instance Variable
    }
//Main Method
    public static void main(String[] args)
    {
 
        // Object Creation
        GFG name = new GFG();
        // Displaying O/P
        System.out.println("Geek name is: " + name.geek);
    }
}
输出
Geek name is: Shubham Jain

3. 静态变量

静态变量也称为类变量。

  • 这些变量被声明为实例变量。不同之处在于静态变量是在任何方法构造函数或块之外的类中使用 static 关键字声明的。
  • 与实例变量不同,无论我们创建了多少对象,每个类只能拥有一个静态变量的副本。
  • 静态变量在程序执行开始时创建,并在执行结束时自动销毁。
  • 静态变量的初始化不是强制性的。它的默认值为 0
  • 如果我们像实例变量一样访问静态变量(通过对象),编译器将显示警告消息,这不会停止程序。编译器会自动将对象名替换为类名。
  • 如果我们在没有类名的情况下访问静态变量,编译器会自动附加类名。

Java

/*package whatever //do not write package name here */
 
import java.io.*;
 
class GFG {
   
  public static String geek = "Shubham Jain";         //Declared static variable
   
    public static void main (String[] args) {
        
      //geek variable can be accessed withod object creation
      //Displaying O/P
      //GFG.geek --> using the static variable
        System.out.println("Geek Name is : "+GFG.geek);
    }
}
输出
Geek Name is : Shubham Jain

实例变量 Vs 之间的差异。静态变量

现在让我们讨论一下 Instance 变量 Vs 之间的区别。静态变量

  • 每个对象都将拥有其实例变量的副本,而无论我们创建多少个对象,每个类只能拥有一个静态变量的副本。
  • 使用一个对象对实例变量所做的更改不会反映在其他对象中,因为每个对象都有自己的实例变量副本。在静态的情况下,更改将反映在其他对象中,因为静态变量对类的所有对象都是通用的。
  • 我们可以通过对象引用来访问实例变量,而静态变量可以通过类名直接访问

语法:静态和实例变量

class GFG
{
    // Static variable
    static int a; 
    
    // Instance variable
    int b;        
} 

必读:

  • Java中的变量声明规则
  • Java中的变量范围
  • C++和Java中static关键字的比较
  • Java中是否允许使用静态局部变量?
  • Java中的实例变量隐藏