JavaLeaning3: Sử dụng biến và hằng trong Java

JavaLeaning3: Sử dụng biến và hằng trong Java

Biến là một thứ rất quan trọng và bạn sẽ phải làm việc với nó rất nhiều khi lập trình, vậy nên hãy cùng mình tìm hiểu về biến nhé :slight_smile:


I) Biến là cái gì vậy?

Như trong toán học thôi, biến sử dụng để biểu thị cho một cái gì đó, cụ thể ở trong lập trình là các đối tượng. Biến thì có 3 thuộc tính là:

  • Loại biến.
  • Tên biến.
  • Giá trị của biến.

1. Các loại biến:


Trong lập trình thì có rất nhiều loại biến khác nhau, bây giờ hãy cùng mình tìm hiểu về chúng nhé.

a) Kiểu biến nguyên thuỷ (Primitive Data Type)
Tên tiếng anh của kiểu biến này là .Trong Java thì mọi thứ đều là hướng đối tượng và nó được tạo ra từ các Class, cấu trúc khác nhau. Nhưng vẫn có những loại biến không được tạo ra từ các cấu trúc, đó chính là các kiểu biến nguyên thuỷ.

Nhìn thì có vẻ lằng nhằng nhỉ @@ Bây giờ chúng ta sẽ đi tìm hiểu về từng cái một nhé.

  • Kiểu số nguyên (int, long, short, byte):

Đây là các loại biến dùng để biểu thị cho một số nguyên, tùy vào loại biến mà nó có giới hạn biểu thị khác nhau.

Kiểu biến Giá trị giới hạn Bộ nhớ lưu trữ
int Từ –2,147,483,648 Đến 2,147,483,647 4 bytes
long Từ –9,223,372,036,854,775,808 Đến 9,223,372,036,854,775,807 8 bytes
short Từ –32,768 Đến 32,767 2 bytes
byte Từ –128 Đến 127 1 byte

Các bạn có thể thấy, có những loại biến có giới hạn rất nhỏ nhưng cũng có các loại biến có giới hạn rất lớn. Vậy nên việc chọn lựa sử dụng dạng biến nào cũng rất quan trọng trong lập trình. Mà thực ra thì mình thấy hầu hết mọi người dùng kiểu intlong là chính chứ hai cái còn lại hầu như bị quên lãng rồi :frowning:

  • Kiểu số thực (float, double):

Loại biến này cũng giống như kiểu số nguyên thôi, khác mỗi là nó dùng để biểu thị các số thực :slight_smile:

Kiểu biến Giá trị bé nhất Giá trị lớn nhất Bộ nhớ lưu trữ
float 1.4E-45 3.4028235E38 4 bytes
double 4.9E-324 1.7976931348623157E308 8 bytes
  • Kiểu ký tự (char)

Đây là kiểu biến sử dụng để thể hiện cho một ký tự duy nhất và giá trị của nó luôn được đặt trong dấu nháy đơn ''.
Ví dụ: ‘a’, ‘b’; ‘c’;…

  • Kiểu luận lý boolean:

Đây là kiểu biến rất đặc biệt vì nó chỉ có đúng 2 giá trị là true hoặc false. Kiểu biến này thường được sử dụng để khi kiểm tra điều kiện nào đó.
Ví dụ: kiểm tra xem 3 > 1 hay không? Ta sẽ sử dụng kiểu biến boolean và sẽ cho ra kết quả là true.

b) Kiểu biến tham chiếu (Reference Data Type)
Kiểu biến này thì lại khác hoàn toàn với kiểu nguyên thủy. Nó là sự kết hợp của các kiểu biến nguyên thủy với nhau và được khởi tạo bởi các Class hay cấu trúc để định hình các thuộc tính cho nó. Loại biến tham chiếu hay được sử dụng nhất là String hay còn gọi là chuỗi. Trong thực tế, 1 chuỗi là sự kết hợp từ các ký tự với nhau, ví dụ như chuỗi “DAN” là sự kết hợp của 3 ký tự ‘D’; ‘A’; ‘N’ và trong lập trình Java cũng vậy. String cũng là sự kết hợp giữa các char với nhau.

Ngoài ra, các kiểu biến nguyên thủy cũng có dạng tham chiếu. Bạn có thể thấy thì tên của các kiểu biến nguyên thủy đều viết thường chữ cái đầu tiên (int; boolean;…), còn dạng tham chiếu của chúng sẽ được viết hoa chữ đầu tiên, chỉ ngoại trừ kiểu int thì sẽ có dạng tham chiếu là Integer. Ví dụ như: Boolean, Float, Long, ....

Vậy thì tại sao lại có dạng tham chiếu này? Như mình đã từng viết ở trên, các kiểu tham chiếu được khởi tạo từ các Class, cấu trúc, vì vậy chính bản thân của các biến tham chiếu sẽ có các thuộc tình hay hàm bên trong nó @@ Và ta sẽ sử dụng đến các thuộc tính, hàm đó rất nhiều trong lập trình đó :slight_smile: Nghe ban đầu có vẻ hàn lâm, nhưng khi bạn học thêm tiếp đến Class thì sẽ hiểu rõ hơn thôi, chờ bài viết đó của mình nhé

c) Quy tắc đặt tên cho biến:
Sau đây là một số quy tắc mà bạn nhất định phải chú ý nhé:

  • Tên của biến luôn phải viết thường chữ cái đầu tiên.
  • Tên biến nên được bắt đầu bắt các chữ cái chứ không nên bắt đầu bằng số hay các ký tự đặc biệt.
  • Tên của biến luôn phải viết liền chứ không có khoảng cách.
  • Tên của biến sẽ không được trùng với các Keyword sau:

2. Cách khai báo biến:

Chúng ta có 2 cách khai báo biến khác nhau trong Java. Việc chọn cách khai báo cũng rất quan trọng nên bắt đầu tìm hiểu thôi :slight_smile:

a) Khai báo biến cục bộ:

  • Đây là loại biến được đặt bên trong hàm hoặc cấu trúc và nó chỉ có tác dụng ở bên trong nội hàm và cấu trúc đó thôi. Giống như chỉ có nhà bạn sử dụng được cửa nhà bạn chứ nhà hàng xóm đâu thể sử dụng được.

  • Cách khai báo: Ta có cấu trúc sau

[Kiểu biến] [tên biến]; // Tạo ra 1 biến với giá trị mặc định của nó.
[Kiểu biến] [tên biến] = [Giá trị biến]; // Khai báo 1 mới và gán giá trị cho nó.

*) Các bạn chú ý là chúng ta phải khai báo biến cục bộ ở bên trong hàm nhé :))

  • Ví dụ:
public class Bien 
{
    public static void main(String[] args) {
        int i; // khai báo biến i với giá trị mặc định
        int a = 0; // khai báo biến a với giá trị = 0
   }    
}

b) Khai báo biến toàn cục:

  • Đây là loại biến được đặt bên ngoài các hàm hoặc cấu trúc và nó có tác dụng với mọi hàm, cấu trúc ở cùng 1 Class. Nếu nhà bạn phải đi qua 1 cái cổng chính thì mới vào được khu dân cư thì cái cổng đó chính là biến toàn cục (cả bạn hay hàng xóm trong cùng khu dân cư đều có thể sử dụng).

  • Cách khai báo: Tương tự như biến cục bộ nhưng khác một chút ở cấu trúc

[Access modifier] [static] [kiểu biến] [Tên biến];
[Access modifier] [static] [kiểu biến] [Tên biến] = [Giá trị];

Access modifier là gì:
Access Modifer trong Java dùng xác định phạm vi có thể truy cập của thành viên dữ liệu, phương thức, cấu trúc hoặc Class. Có 4 loại Access modifier, nhưng chúng ta sẽ chỉ tìm hiểu trước 2 khái niệm, 2 cái còn lại thì mình sẽ giải thích từ từ nhé :slight_smile:

  • public: Biến có phạm vi rộng nhất, có thể được truy cập từ mọi nơi. Giống như việc mọi người có thể tự do ra vào nhà bạn vậy :))
  • private: Biến có phạm vi sử dụng ở nội bộ của Class, cấu trúc của nó chứ không thể được sử dụng bởi các Class khác.

static là gì:
Đây là một từ khóa giúp cho hệ thống quản lý bộ nhớ tốt hơn. Biến static có thể được sử dụng để tham chiếu thuộc tính chung của tất cả các đối tượng (không phải là duy nhất cho mỗi đối tượng). Việc sử dụng static cho những biến nào thì còn tùy thuộc vào trường hợp mà bạn sử dụng :slight_smile: Nhưng hầu hết bây giờ chúng ta chưa cần dùng đến nó vội đâu.

  • Ví dụ:
public class Bien 
{
	public int i; // Khai báo biến cục bộ i với thuộc tính public
	private int a = 34; // Khai báo biến cục bộ a với thuộc tính private và giá trị = 34

	public static void main(String[] args) 
	{

	}    
}

3. Giá trị mặc định của biến:

Khi ta khai báo biến mà chưa gán giá trị cho nó, hệ thông sẽ sử dụng dùng các giá trị mặc định để gán vào biến đó.

Loại biến Giá trị mặc định
Kiểu số nguyên 0
float 0.0f
double 0.0d
boolean false
char ‘\u0000’ = null
Kiểu tham chiếu null

4. Gán giá trị cho biến

Để gán giá trị mới cho biến thì rất đơn giản, ta sẽ sử dụng dấu =, hãy nhìn ví dụ bên dưới nhé :slight_smile:

public class Bien 
{
	public static void main(String[] args) 
	{
		int i = 2; // tạo biến
		System.out.println(i); // in biến
		i = 3; // gán giá trị mới
		System.out.println(i); // kiểm tra
	}    
}

Và ta sẽ được đoạn Output sau:

2
3

Vậy là giá trị của biến i đã được thay đổi từ 2 --> 3 rồi :))


II) Hằng số

  • Hằng số cũng giống như biến, nhưng nó không thể nào thay đổi giá trị.
  • Để khai báo hằng số, ta sẽ thêm từ khóa final vào trước [Kiểu biến].

Ví dụ:

public class Bien 
{
	public final int i = 0; // khai báo hằng toàn cục
	public static void main(String[] args) 
	{
		final String str = "D.A.N_3002"; // khai báo hằng cục bộ
	}    
}

III) Cách in biến ra Console

Ta có thể in trực tiếp biến ra bằng cách 2 cách sau:

public class Bien 
{
	public static int i = 15;
	public static void main(String[] args)
	{
		String str = "D.A.N_3002";
		// in trực tiếp
		System.out.println(str);

		// in nhiều biến cùng lúc
		System.out.println("My Name is " + str);
		System.out.println("Im " + i);
	}   
}

Ta sẽ được Output sau:

D.A.N_3002
My Name is D.A.N_3002
Im 15

IV) Tổng kết:

Vì chúng ta chắc chắn sẽ không nhớ được số kiến thức trên, nên ta có phần tổng kết :slight_smile:

  1. Biến sử dụng để biểu thị cho dữ liệu.
  2. Có rất nhiều kiểu biến khác nhau, dùng kiểu biến nào là tùy vào trường hợp thực tế.
  3. Hằng số giống biến, nhưng nó không thể thay đổi giá trị được.
  4. Để thay đổi giá trị biến, ta dùng dấu =
  5. Có 2 cách để in biến.

Bài tập

*Bài 1: Viết chương trình in ra họ và tên; tuổi và giới tính của bạn có phải Nam không?. Các thông tin trên phải được chứa ở biến.

Solution
public class Bien 
{
	public static void main(String[] args) 
	{
		String ten = "D.A.N_3002"; 
		int tuoi = 15;
		boolean isMale = true;

		System.out.println("Tên tôi là " + ten);
		System.out.println("Tôi " + tuoi + " tuổi");
		System.out.println("Tôi có phải Nam không?: " + isMale);         
	}    
}

Bài 2: Viết chương trình in ra số PI, số PI không đổi nên bạn hãy tạo hằng số.

Solution
public class Bien 
{
	public static void main(String[] args) 
	{
		final float PI = 3.14;
		System.out.println("Số PI: " + PI);      
	}    
}

Cảm ơn các bạn rất nhiều khi đã đọc đến đây, nếu các bạn thấy bài viết này hay và ủng hộ mình thì có thể Star Repo này trên GitHub: https://github.com/DAN3002/Java-Vietnamese.

4 Likes

series dài bao nhiêu bài vậy bạn :smiley:

1 Like

Mình dự định sẽ tầm 40 --> 50 bài:

  • 15 bài Core
  • 20 bài Swing
  • 10 bài OOP
  • 5 Project để code :))
1 Like

@anon12276517

Có gì đó không đúng ở đây

Miền giá trị có vấn đề

Chỗ này không đúng, biến trong method scope không được gán giá trị mặc định

Đây là biến, không phải hằng

2 Likes

Mình sửa lại rồi, cảm ơn bạn rất nhiều :blush:

mấy cái code ví dụ chỗ thì 4 spaces chỗ thì tab sửa lại space hết đê

1 Like

Mình update thêm 1 số lỗi, bạn sửa lại cho hoàn thiện nhé

Cảm ơn bạn đã chỉ cho mình, mình đã sửa và sẽ không mắc lại các lỗi đó vào bài viết tiếp theo :blush:

Mình đã sửa lại, cảm ơn bạn :blush:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?