• Tags
  •         
  • www.breakyizhan.com
  •    

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

    • 存储在变量中的值可以在程序执行期间更改。
    • 一个变量只是一个给内存位置的名字,所有对变量进行的操作都会影响内存的位置。
    • 在Java中,所有变量必须先声明才能使用。

    如何声明变量?

    我们可以在java中声明变量,如下所示:
    Java中的变量

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

    例子:

    float simpleInterest; //声明浮点变量
    int time = 10,speed = 20; //声明并初始化整型变量
    char var ='h'; //声明和初始化字符变量
    

    变量的类型

    Java中有三种类型的变量:

    • 局部变量
    • 实例变量
    • 静态变量

    现在让我们详细了解这些变量中的每一个。

    1. 局部变量:在块或方法或构造函数中定义的变量称为局部变量。
      • 这些变量是在输入块或函数被调用时创建的,并且在退出块或从函数返回时被销毁。
      • 这些变量的范围只存在于声明变量的块内。即我们只能在该块内访问这些变量。

      示例程序1:

      public class StudentDetails
      {
          public void StudentAge() 
          {   //local variable age
              int age = 0;
              age = age + 5;
              System.out.println("Student age is : " + age);
          }
       
          public static void main(String args[])
          {
              StudentDetails obj = new StudentDetails();
              obj.StudentAge();
          }
      }
      

      输出:

      Student age is : 5

      在上面的程序中,变量年龄是函数StudentAge()的局部变量。如果我们在StudentAge()函数外使用变量年龄,编译器将产生一个错误,如下面的程序所示。

      示例程序2:

      public class StudentDetails
      {
          public void StudentAge() 
          {   //local variable age
              int age = 0;
              age = age + 5;
          }
       
          public static void main(String args[]) 
          {   
              //using local variable age outside it's scope
              System.out.println("Student age is : " + age);
          }
      }
      
      

      输出:

      error: cannot find symbol
       " + age);
    2. 实例变量:实例变量是非静态变量,在任何方法,构造函数或块之外的类中声明。
      • 由于实例变量是在一个类中声明的,所以当这个类的一个对象被创建并且当这个对象被销毁时被销毁时,这些变量被创建。
      • 与局部变量不同,我们可以使用实例变量的访问说明符。如果我们没有指定任何访问说明符,那么将使用默认访问说明符。

      示例程序:

      import java.io.*;
      class Marks
      {   
          //These variables are instance variables.
          //These variables are in a class and are not inside any function
          int engMarks;
          int mathsMarks;
          int phyMarks;
      }
       
      class MarksDemo
      {
          public static void main(String args[])
          {   //first object
              Marks obj1 = new Marks();
              obj1.engMarks = 50;
              obj1.mathsMarks = 80;
              obj1.phyMarks = 90;
       
              //second object
              Marks obj2 = new Marks();
              obj2.engMarks = 80;
              obj2.mathsMarks = 60;
              obj2.phyMarks = 85;
       
              //displaying marks for first object
              System.out.println("Marks for first object:");
              System.out.println(obj1.engMarks);
              System.out.println(obj1.mathsMarks);
              System.out.println(obj1.phyMarks);
           
              //displaying marks for second object
              System.out.println("Marks for second object:");
              System.out.println(obj2.engMarks);
              System.out.println(obj2.mathsMarks);
              System.out.println(obj2.phyMarks);
          }
      }
      

      输出:

      Marks for first object:
      50
      80
      90
      Marks for second object:
      80
      60
      85

      正如你在上面的程序中看到的那样,变量engMarks,mathsMarks,phyMarks是实例变量。如果我们有上述程序中的多个对象,则每个对象都有自己的实例变量副本。从上面的输出可以清楚地看到,每个对象都有自己的实例变量副本。

    3. 静态变量:静态变量也称为类变量。
      • 这些变量的声明类似于实例变量,区别在于静态变量是在任何方法构造函数或块之外的类中使用static关键字声明的。
      • 与实例变量不同,每个类只能有一个静态变量的副本,而不管我们创建多少个对象。
      • 静态变量在程序执行开始时创建,并在执行结束时自动销毁。

      为了访问静态变量,我们不需要创建该类的任何对象,我们可以简单地访问变量:

      class_name.variable_name;

      示例程序:

      import java.io.*;
      class Emp {
       
         // static variable salary
         public static double salary;
         public static String name = "Harsh";
      }
       
      public class EmpDemo
      {
           public static void main(String args[]) {
             
            //accessing static variable without object         
            Emp.salary = 1000;
            System.out.println(Emp.name + "'s average salary:" + Emp.salary);
         }
           
      }
      

      输出:

      Harsh's average salary:1000.0

    实例变量Vs静态变量

    • 每个对象都有它自己的实例变量副本,而每个类只能有一个静态变量的副本,而不管我们创建了多少个对象。
    • 使用一个对象在实例变量中所做的更改不会反映在其他对象中,因为每个对象都有自己的实例变量副本。在静态的情况下,更改将反映在其他对象中,因为静态变量对于类的所有对象都是通用的。
    • 我们可以通过对象引用来访问实例变量,并且可以使用类名直接访问静态变量。
    • 静态和实例变量的语法:
      class Example
          {
              static int a; //静态变量
              int b; //实例变量
          }

     
    转载请保留页面地址:https://www.breakyizhan.com/java/3778.html