Java - Các kiểu biến

Một biến cung cấp cho chúng tôi bộ nhớ được đặt tên mà chương trình của chúng tôi có thể thao tác. Mỗi biến trong Java có một kiểu cụ thể, xác định kích thước và cách bố trí bộ nhớ của biến; phạm vi giá trị có thể được lưu trữ trong bộ nhớ đó; và tập hợp các thao tác có thể áp dụng cho biến.

Bạn phải khai báo tất cả các biến trước khi chúng có thể được sử dụng. Sau đây là dạng cơ bản của một khai báo biến:

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

Ở đây kiểu dữ liệu là một trong những kiểu dữ liệu của Java và biến là tên của biến. Để khai báo nhiều biến thuộc kiểu được chỉ định, bạn có thể sử dụng danh sách được phân tách bằng dấu phẩy.

Sau đây là các ví dụ hợp lệ về khai báo và khởi tạo biến trong Java:

Thí dụ

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'

Chương này sẽ giải thích các kiểu biến khác nhau có sẵn trong Ngôn ngữ Java. Có ba loại biến trong Java:

  • Biến cục bộ
  • Biến thể hiện
  • Biến lớp / tĩnh

Biến cục bộ

  • Các biến cục bộ được khai báo trong các phương thức, hàm tạo hoặc khối.

  • Biến cục bộ được tạo khi phương thức, hàm tạo hoặc khối được nhập và biến sẽ bị hủy khi nó thoát khỏi phương thức, hàm tạo hoặc khối.

  • Không thể sử dụng công cụ sửa đổi quyền truy cập cho các biến cục bộ.

  • Các biến cục bộ chỉ hiển thị trong phương thức, hàm tạo hoặc khối đã khai báo.

  • Các biến cục bộ được thực hiện ở cấp ngăn xếp trong nội bộ.

  • Không có giá trị mặc định cho các biến cục bộ, vì vậy các biến cục bộ nên được khai báo và một giá trị ban đầu nên được gán trước lần sử dụng đầu tiên.

Thí dụ

Ở đây, tuổi là một biến cục bộ. Điều này được định nghĩa bên trong phương thức PorAge () và phạm vi của nó được giới hạn trong chỉ phương thức này.

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

Điều này sẽ tạo ra kết quả sau:

Đầu ra

Puppy age is: 7

Thí dụ

Ví dụ sau sử dụng age mà không khởi tạo nó, vì vậy nó sẽ gây ra lỗi tại thời điểm biên dịch.

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

Điều này sẽ tạo ra lỗi sau khi biên dịch nó:

Đầu ra

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

Biến thể hiện

  • Các biến cá thể được khai báo trong một lớp, nhưng bên ngoài một phương thức, hàm tạo hoặc bất kỳ khối nào.

  • Khi một không gian được cấp phát cho một đối tượng trong heap, một vị trí cho mỗi giá trị biến cá thể sẽ được tạo.

  • Biến cá thể được tạo khi một đối tượng được tạo bằng cách sử dụng từ khóa 'mới' và bị phá hủy khi đối tượng bị phá hủy.

  • Các biến cá thể giữ các giá trị phải được tham chiếu bởi nhiều hơn một phương thức, phương thức khởi tạo hoặc khối hoặc các phần thiết yếu của trạng thái đối tượng phải có trong toàn bộ lớp.

  • Các biến cá thể có thể được khai báo ở mức lớp trước hoặc sau khi sử dụng.

  • Các công cụ sửa đổi quyền truy cập có thể được cung cấp cho các biến cá thể.

  • Các biến cá thể hiển thị cho tất cả các phương thức, hàm tạo và khối trong lớp. Thông thường, nên đặt các biến này ở chế độ riêng tư (mức truy cập). Tuy nhiên, khả năng hiển thị cho các lớp con có thể được cung cấp cho các biến này với việc sử dụng các công cụ sửa đổi truy cập.

  • Biến cá thể có giá trị mặc định. Đối với số, giá trị mặc định là 0, đối với Booleans là false và đối với tham chiếu đối tượng, giá trị này là null. Giá trị có thể được gán trong khi khai báo hoặc trong hàm tạo.

  • Các biến cá thể có thể được truy cập trực tiếp bằng cách gọi tên biến bên trong lớp. Tuy nhiên, bên trong các phương thức tĩnh (khi các biến thể hiện được cung cấp khả năng truy cập), chúng nên được gọi bằng tên đủ điều kiện. ObjectReference.VariableName .

Thí dụ

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

Điều này sẽ tạo ra kết quả sau:

Đầu ra

name  : Ransika
salary :1000.0

Biến lớp / tĩnh

  • Biến lớp còn được gọi là biến tĩnh được khai báo với từ khóa static trong một lớp, nhưng bên ngoài một phương thức, hàm tạo hoặc một khối.

  • Sẽ chỉ có một bản sao của mỗi biến lớp cho mỗi lớp, bất kể có bao nhiêu đối tượng được tạo từ nó.

  • Các biến static hiếm khi được sử dụng ngoài việc được khai báo dưới dạng hằng số. Hằng là các biến được khai báo là công khai / riêng tư, cuối cùng và tĩnh. Các biến không đổi không bao giờ thay đổi so với giá trị ban đầu của chúng.

  • Các biến tĩnh được lưu trữ trong bộ nhớ tĩnh. Hiếm khi sử dụng các biến tĩnh không phải là biến cuối cùng được khai báo và được sử dụng như là hằng số công khai hoặc riêng tư.

  • Biến static được tạo ra khi chương trình khởi động và bị hủy khi chương trình dừng.

  • Khả năng hiển thị tương tự như các biến cá thể. Tuy nhiên, hầu hết các biến tĩnh được khai báo công khai vì chúng phải có sẵn cho người dùng của lớp.

  • Giá trị mặc định giống như các biến cá thể. Đối với số, giá trị mặc định là 0; đối với Booleans, nó là sai; và đối với các tham chiếu đối tượng, nó là null. Giá trị có thể được gán trong khi khai báo hoặc trong hàm tạo. Ngoài ra, các giá trị có thể được gán trong các khối khởi tạo tĩnh đặc biệt.

  • Các biến tĩnh có thể được truy cập bằng cách gọi với tên lớp ClassName.VariableName .

  • Khi khai báo các biến lớp là public static final, thì tên biến (hằng số) đều ở dạng chữ hoa. Nếu các biến tĩnh không phải là công khai và cuối cùng, thì cú pháp đặt tên giống như các biến thể hiện và biến cục bộ.

Thí dụ

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

Điều này sẽ tạo ra kết quả sau:

Đầu ra

Development average salary:1000

Note - Nếu các biến được truy cập từ một lớp bên ngoài, hằng số phải được truy cập dưới dạng Employee.

Tiếp theo là gì?

Bạn đã sử dụng công cụ sửa đổi quyền truy cập (công khai và riêng tư) trong chương này. Chương tiếp theo sẽ giải thích chi tiết về Công cụ sửa đổi truy cập và Công cụ sửa đổi không truy cập.