Biến Java

Xuất bản trong nhóm
Trong bài viết này, chúng tôi sẽ giải thích cho tất cả những người học Java các biến Java là gì và cách làm việc với chúng.

Biến Java là gì

Một biến trong Java có thể được coi là một hộp. "Hộp" này có một kích thước nhất định: bộ nhớ được phân bổ cho nó. Bao nhiêu bộ nhớ sẽ được phân bổ tùy thuộc vào loại biến, nhưng chúng ta sẽ nói về điều này sau một chút. Đồng thời, kích thước của hộp không thể thay đổi sau khi tạo, nhưng nội dung thì có thể. Hộp có thể trống. Bạn có thể "chèn" một số giá trị vào đó, sau đó trích xuất và đặt một số giá trị khác. Như vậy, biến là một trường lưu trữ các giá trị dữ liệu trong quá trình thực thi chương trình Java. Hộp này có các tính năng quan trọng:
  • nó luôn chỉ có thể chứa một giá trị (hoặc có thể để trống, trong trường hợp đó nó sẽ chứa giá trị mặc định),
  • Nó có một kiểu dữ liệu. Kích thước của nó phụ thuộc vào loại dữ liệu, cũng như vùng bộ nhớ cụ thể mà vị trí được phân bổ cho nó (nó nằm ở đâu).
Biến trong Java - 1

Cách khai báo biến

Để khai báo các biến trong Java, bạn cần chỉ định loại và tên của nó. Dưới đây là một ví dụ khai báo ba biến:
int myInt;
String s;
Object variableName;
Ở đây int , StringObject là kiểu dữ liệu và myInt , s , variableName là tên biến. Loại dữ liệu phải được chọn dựa trên nhu cầu của chương trình và tốt hơn là chọn một tên sao cho rõ ràng nó nói về cái gì. Tất nhiên, đối với người mới bắt đầu, điều đó không quá nghiêm ngặt, nhưng trong các dự án lớn, các tên biến như 's' có thể làm giảm khả năng đọc mã. Vì vậy, tốt hơn là nên làm quen với việc đặt tên biến theo cách làm rõ chúng dùng để làm gì ngay từ đầu. Trong lý do, tất nhiên.

Cách khởi tạo biến

Khi bạn khai báo một biến, bạn cấp phát bộ nhớ cho nó. Khởi tạo có nghĩa là bạn "đặt" một giá trị nhất định vào "hộp". Việc này có thể thực hiện ngay trong quá trình khai báo biến hoặc sau đó. Ngoài ra, giá trị của một biến có thể thay đổi trong quá trình thực hiện chương trình. Ví dụ:
public class VariableTest {
    public static void main(String[] args) {
        int myInt = 5;
        String s;
        s = "init";
        System.out.println(s);
        s = s+5;
        System.out.println(s);
    }
}
Ở đây, chúng tôi đã khai báo và khởi tạo biến myInt trong một dòng, ngay lập tức cấp phát bộ nhớ cho nó (32 bit cho mỗi số int), đặt tên cho nó, sau đó đặt giá trị 5 vào bộ nhớ đã cấp phát. Sau đó, chúng tôi tuyên bố rằng chúng tôi đang phân bổ không gian bộ nhớ cho chuỗi s và đã có một lệnh riêng đặt giá trị “init” vào đó. Sau đó, chúng tôi in ra chuỗi và thay đổi giá trị của biến s . Trong chương trình này, chúng tôi đã in ra các dòng và nếu bạn chạy nó, bạn sẽ thấy kết quả sau:
khởi tạo init5

Kiểu dữ liệu của biến trong Java: nguyên thủy và không nguyên thủy

Các kiểu dữ liệu của biến trong Java được chia thành hai nhóm:
  • Các kiểu dữ liệu nguyên thủy bao gồm byte , short , int , long , float , double , booleanchar
  • Các kiểu dữ liệu không nguyên thủy như String , ArraysClasses
Đây là một ví dụ về cách làm việc với các biến:
public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point number
       char myLetter = 'a';         // character
       boolean myBool = true;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);

   }
}
int , char , booleanfloat là nguyên thủy. Chuỗi không nguyên thủy. Còn biến myStudent thì sao ? Đây là một đối tượng của lớp Student do người dùng tạo . Nó được tạo ra đơn giản để minh họa công việc với các biến không nguyên thủy. Chúng chiếm đa số trong Java, vì hầu hết mọi thứ trong ngôn ngữ lập trình này đều là đối tượng. Để dễ hiểu, đây là mã của lớp Sinh viên :
import java.util.Date;

public class Student {
   String surname;
   String name;
   String secondName;
   Long birthday; // Long instead of long is used by Gson/Jackson json parsers and various orm databases

   public Student(String surname, String name, String secondName, Date birthday ){
       this.surname = surname;
       this.name = name;
       this.secondName = secondName;
       this.birthday = birthday == null ? 0 : birthday.getTime();
   }

   @Override
   public int hashCode(){
       //TODO: check for nulls
       //return surname.hashCode() ^ name.hashCode() ^ secondName.hashCode() ^ (birthday.hashCode());
       return (surname + name + secondName + birthday).hashCode();
   }
   @Override
   public boolean equals(Object other_) {
       Student other = (Student)other_;
       return (surname == null || surname.equals(other.surname) )
               && (name == null || name.equals(other.name))
               && (secondName == null || secondName.equals(other.secondName))
               && (birthday == null || birthday.equals(other.birthday));
   }
}

Các loại biến trong Java: local, instance và static

Có ba loại biến khác nhau trong Java, chúng tôi đã liệt kê chúng như sau:
  1. Biến cục bộ
  2. Biến thể hiện
  3. Biến tĩnh

Biến cục bộ

Một biến được khai báo bên trong phần thân của phương thức được gọi là biến cục bộ. Ngoài ra, các biến cục bộ được khai báo bên trong các hàm tạo và khối. Bạn chỉ có thể sử dụng các biến cục bộ bên trong phương thức, hàm tạo hoặc khối đó tại nơi chúng được tạo và các phương thức khác trong lớp thậm chí không biết rằng biến đó tồn tại. Vì vậy, các 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 bị hủy khi phương thức, hàm tạo hoặc khối không hoạt động. Không thể xác định biến cục bộ bằng từ khóa tĩnh . Hơn nữa: bạn 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ộ. Đây là một ví dụ:
public class VariableTest {
   public static void main(String[] args) {
       System.out.println(myMethod("C plus "));
   }
           private static String myMethod(String myString) {
       String myOtherString = "plus";
       return myString + myOtherString;
   }
}
Ở đây myOtherString là một biến cục bộ. Bạn không thể sử dụng nó từ phương pháp khác, nhưng myMethod . Biến cục bộ không thể có giá trị mặc định. Nếu ít nhất một biến cục bộ không được khởi tạo trong chương trình, chương trình sẽ không hoạt động chính xác. Hãy thực hiện một thay đổi nhỏ trong một trong các ví dụ trước và "quên" khởi tạo biến myBool :
public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point
       char myLetter = 'a';         // character
       boolean myBool;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);

   }
}
Nếu chúng ta cố chạy chương trình, nó sẽ báo lỗi:
Lỗi:(10, 50) java: biến myBool có thể chưa được khởi tạo

Biến thể hiện

Một biến được khai báo bên trong lớp nhưng bên ngoài phần thân của bất kỳ phương thức, hàm tạo hoặc khối nào được gọi là biến thể hiện. Các biến thể hiện được tạo khi một đối tượng được tạo bằng từ khóa mới . Nó bị hủy khi đối tượng bị hủy. Nó không thể được khai báo là tĩnh, nhưng bạn có thể sử dụng công cụ sửa đổi truy cập cho các biến thể hiện. Các biến thể hiện được 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 các biến thể hiện là riêng tư, nhưng bạn có thể thay đổi chế độ hiển thị cho các lớp con. Biến sơ thẩm trái ngược với biến cục bộ có giá trị mặc định. Đối với tất cả các kiểu nguyên thủy số, giá trị mặc định là 0, đối với booleans là sai và đối với tham chiếu đối tượng là null. Các giá trị có thể được gán trong khi khai báo hoặc trong hàm tạo. Đây là một ví dụ:
//instance variable example
public class Employee {

   // here we have a public instance variable. It is visible for this class and child classes
   public String name;

   //this instance variable is private so it’s visible for the Employee class only. You can use setters and getters to get it
   private double salary;

   public Employee (String empName) {
       name = empName;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public double getSalary() {
       return salary;
   }

   public void setSalary(double employeeSalary) {
       salary = employeeSalary;
   }

   public static void main(String args[]) {
       Employee employee = new Employee("Johnny");
       employee.setSalary(1500);
       System.out.println("name = " + employee.getName());
       System.out.println("salary = " + employee.getSalary());
   }
}

biến tĩnh

Một biến được khai báo là tĩnh được gọi là biến tĩnh. Java cho phép bạn khai báo các biến như vậy bên ngoài một phương thức, hàm tạo hoặc khối. Nó không thể là cục bộ, chúng thuộc về lớp chứ không phải trường hợp. Điều đó có nghĩa là một bản sao duy nhất của một biến tĩnh sau khi được tạo và chia sẻ giữa tất cả các thể hiện của lớp. Cấp phát bộ nhớ cho các biến tĩnh chỉ xảy ra một lần khi lớp được tải vào bộ nhớ. Chúng có thể có bất kỳ khả năng hiển thị nào, nhưng thông thường chúng được khai báo là công khai. Chúng cũng có các giá trị mặc định như biến thể hiện.
public class Box
{
   public void add(int data)
   {
       Storage.sum = Storage.sum + data;
       Storage.count++;
   }

   public void remove(int data)
   {
       Storage.sum = Storage.sum - data;
       Storage.count--;
   }
}

public class Storage
{
   public static int count = 0;
   public static int sum = 0;
}
Trong ví dụ trên, chúng tôi đã tạo một lớp Lưu trữ riêng biệt , chuyển các biến đếm và tổng vào đó và khai báo chúng là tĩnh. Các biến tĩnh công khai có thể được truy cập từ bất kỳ phương thức chương trình nào (và không chỉ từ một phương thức). Để củng cố những gì bạn đã học, chúng tôi khuyên bạn nên xem một video bài học từ Khóa học Java của chúng tôi
Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào