Bài 4: Biến Và Hằng Trong Java




baner green 4.png
Bài này chúng ta sẽ làm quen với khái niệm biến và hằng trong Java, và thực hành khai báo một số biến và hằng cơ bản, chúng ta cũng sẽ làm quen với các khai báo ĐÚNG và SAI đối với hai khái niệm mới này.

Biến – Variable

Việc đầu tiên tiếp cận với một ngôn ngữ lập trình, không riêng gì Java, bạn phải làm quen với khái niệmbiến, khái niệm này trong tiếng Anh gọi là variable.

Khái Niệm Biến

Biến là các định nghĩa giúp hệ thống tạo ra các vùng nhớ dùng để lưu giữ các giá trị của ứng dụng. Mỗi biến đều có một kiểu dữ liệu riêng, kiểu dữ liệu này sẽ báo cho hệ thống biết biến đó có “độ lớn” bao nhiêu, độ lớn này là dung lượng lưu trữ của máy tính, thường được tính theo byte. Mỗi biến còn có một cái tên giúp hệ thống có thể quản lý, truy xuất dữ liệu trong vùng nhớ của biến.

Khai Báo Biến

Việc khai báo một biến là việc bạn sẽ đặt tên cho biến, rồi đặt một kiểu dữ liệu cho biến, và có thể lưu trữ giá trị ban đầu vào cùng nhớ của biến.
Bạn có thể khai báo một biến theo một trong hai cấu trúc sau:
<kiểu_dữ_liệu> <tên_biến>;
hoặc
<kiểu_dữ_liệu> <tên_biến> = <giá_trị>;
<kiểu_dữ_liệu> và <tên_biến> sẽ được nói rõ hơn ở phần sau của bài học này. Khi khai báo biến, bạn có thể “gán” cho biến một <giá_trị> ban đầu, việc gán giá trị này sẽ làm cho biến có được dữ liệu ban đầu ngay khi được tạo ra. Nếu một biến được tạo ra mà không có giá trị gì được gán, nó sẽ được gán giá trị mặc định, giá trị mặc định này sẽ tùy theo kiểu dữ liệu của biến mà chúng ta sẽ nói đến bên dưới. Sau mỗi khai báo biến bạn nhớ có dấu “;” để báo cho hệ thống biết là kết thúc việc khai báo, nếu không có “;” hệ thống sẽ báo lỗi ngay.

Thực Hành Khai Báo Biến

Bạn hãy mở Eclipse ra, với project HelloWorld vừa tạo ra ở bài trước, bạn thử gõ các dòng khai báo biến như sau nhé. Chỉ là gõ cho quen thôi, bạn cũng sẽ có cơ hội được khai báo các biến ở các mục dưới đây của bài học này nên cứ mở project này sẵn nhé bạn.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class MyFirstClass {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Hello World!");
        double salary;
        int count = 0;
        boolean done = false;
        long earthPopulation;
    }
}

Đặt Tên Cho Biến

Như ví dụ ở trên, các tên biến được đặt tên là salarycountdone hay earthPopulation. Việc đặt tên cho biến đơn giản đúng không nào, đặt như thế nào cũng được, miễn sao bạn đọc lên được (ngôn ngữ của con người), và bạn thấy nó dễ hiểu và đúng với công năng của biến đó là được rồi.
Tuy nhiên cũng không tự do như bạn nghĩ đâu, có một số “luật” và “lệ” đặt tên sau đây, nếu bạn mắc phải một trong các quy tắc đặt tên này thì hệ thống sẽ báo lỗi ngay đấy.

Quy Tắc 1

Ký tự bắt đầu của tên biến phải là chữ cái, hoặc dấu gạch dưới (_), hoặc ký tự $. Ví dụ cho việc đặt tên biến đúng như sau.
Đúng
int count;
int Count;
int _count;
int $count;
Đặt tên biến như sau sẽ bị lỗi. Vì các ký tự đầu tiên của chúng hoặc là một số, hoặc là một ký tự đặc biệt không được phép. Nếu không tin bạn cứ thử gõ vào Eclipse xem sao nhé.
Sai
int 5count;
int 5Count;
int #count;
int /count;

Quy Tắc 2

Không có khoảng trắng giữa các ký tự của tên biến. Ví dụ đặt tên biến như sau là sai.
Sai
int this is count;
Nếu bạn muốn tên biến trên được tách biệt rõ ràng từng chữ cho rõ nghĩa thì có thể đặt như sau.
Đúng
int thisIsCount;
int this_is_count;
int This_Is_Count;
Ngoài lề xíu: trong trường hợp biến có nhiều từ như ví dụ trên, việc bạn chọn muốn đặt theo kiểu nào trong 3 cách trên đều được, nhưng tôi khuyên nên chọn cách đầu tiên thisIsCount. Với cách này thì chữ đầu tiên this được viết thường, các chữ cái ở mỗi từ tiếp theo sẽ viết hoa IsCount. Cách này không phải bắt buộc nhưng nó thành “lệ” chung cho lập trình Java, nếu bạn thực hiện cách đặt tên này thì việc bạn đọc code Java của người khác sẽ dễ dàng hơn nhiều do họ cũng sẽ viết giống như bạn. Lưu ý là đừng có chữ nào cũng viết hoa hết như ThisIsCount vì nó rất dễ nhầm lẫn với đặt tên cho class mà bạn sẽ học sau đây, hay THIS_IS_COUNT vì nó lại nhầm với hằng số mà bạn cũng sắp được làm quen.

Quy Tắc 3

Không chứa ký tự đặc biệt bên trong tên biến như !@#%^&*. Ví dụ đặt tên biến như sau là sai.
Sai
int c@unt;
int count#;
int count*count;

Quy Tắc 4

Không được đặt tên biến trùng với keywordKeyword là các từ khóa mà ngôn ngữ Java dành riêng cho một số mục đích mà bạn không thể nào có thể khai báo một biến trùng với keywordđược. Các keyword của Java được liệt kê trong bảng sau.
abstractcontinuefornewswitch
assertdefaultgotopackagesynchronized
booleandoifprivatethis
breakdoubleimplementsprotectedthrow
byteelseimportpublicthrows
caseenuminstanceofreturntransient
catchextendsintshorttry
charfinalinterfacestaticvoid
classfinallylongstrictfpvolatile
constfloatnativesuperwhile
Ví dụ đặt tên biến như sau là sai.
Sai
boolean continue = true;
long class;
int final;
Tuy nhiên bạn có thể đặt tên biến có chứa keyword bên trong đó mà không bị bắt lỗi, như ví dụ sau.
Đúng
boolean continue1 = true;
long classMySchool;
int finalTarget;

Kiểu Dữ Liệu Của Biến

Như đã nói ở trên, mỗi biến đều phải có một kiểu dữ liệu kèm theo nó. Kiểu dữ liệu sẽ báo cho hệ thống biết biến đó có “độ lớn” bao nhiêu, độ lớn này là dung lượng được tính theo đơn vị của máy tính, thường là byte.
Việc chọn một kiểu dữ liệu cho biến sẽ dựa trên công năng của biến đó, như biến kiểu ký tự hay kiểu số. Hoặc có thể dựa trên độ lớn của biến đó, như số integer hay số long.
Chúng ta làm quen với 8 kiểu dữ liệu “nguyên thủy” sau đây. Gọi là kiểu dữ liệu nguyên thủy vì chúng là các kiểu dữ liệu cơ bản của Java. Về mặt lưu trữ thì kiểu dữ liệu nguyên thủy lưu trữ dữ liệu trong chính bản thân nó, việc sử dụng kiểu này cũng rất đơn giản, và không dính liếu gì đến hướng đối tượng cả. Ngược lại với kiểu dữ liệu nguyên thủy là kiểu dữ liệu “mở rộng” sẽ nói ở các bài sau khi bạn đã nắm được kiến thức căn bản của Java. Các kiểu dữ liệu nguyên thủy được liệt kê theo sơ đồ sau.
Blank Diagram - Page 1.png
Các kiểu dữ liệu nguyên thủy được nhắc đến trong sơ đồ trên chính là các kiểu trong ô màu xanh lá cây, bao gồm kiểu intshortlongbytefloatdoublechar, và boolean.
Wow nhiều vậy! Làm sao biết dùng kiểu nào cho trường hợp nào? Chúng ta cùng đi vào từng loại sau đây để biết rõ hơn nhé.

Kiểu Số Nguyên

Kiểu này dùng để lưu trữ và tính toán các số nguyên, bao gồm các số có giá trị âm, giá trị dương và số 0. Sở dĩ có nhiều kiểu số nguyên như trên, là vì tùy vào độ lớn của biến mà bạn sẽ khai báo kiểu dữ liệu tương ứng, chúng ta cùng xem qua bảng giá trị của các kiểu dữ liệu số nguyên như sau.
Kiểu Dữ LiệuBộ Nhớ Lưu trữĐộ Lớn Của Biến
byte1 byteTừ –128 Đến 127
short2 bytesTừ –32,768 Đến 32,767
int4 bytesTừ –2,147,483,648 Đến 2,147,483, 647
long8 bytesTừ –9,223,372,036,854,775,808 Đến 9,223,372,036,854,775,807
Theo như bảng trên thì khi bạn đã xác định được nên dùng kiểu số nguyên, thì việc chọn lựa độ lớn cho kiểu là rất quan trọng, như bạn thấy với kiểu là byte, hệ thống sẽ chỉ cấp phát cho chúng ta vùng nhớ lưu trữ đúng 1 byte dữ liệu, với vùng nhớ này bạn chỉ được phép sử dụng độ lớn của biến từ -128 đến 127 mà thôi.
Ví dụ bạn khai báo biến như sau là hợp lệ.
Đúng
byte month = 5;
short salaryUSD = 2000;
Còn khai báo như sau sẽ vượt ra ngoài khả năng lưu trữ của biến và vì vậy bạn sẽ bị báo lỗi ngay.
Sai
byte day = 365;
short salaryVND = 40000000;
Do đó khi sử dụng kiểu dữ liệu cho biến bạn phải cân nhắc đến độ lớn lưu trữ của chúng. Bạn không nên lúc nào cũng sử dụng kiểu dữ liệu long cho tất cả các trường hợp vì như vậy sẽ làm tiêu hao bộ nhớ của hệ thống khi chương trình được khởi chạy. Bạn nên biết giới hạn của biến để đưa ra kiểu dữ liệu phù hợp. Ví dụ nếu dùng biến để lưu trữ các tháng trong năm, thì kiểu byte là đủ. Hoặc dùng biến để lưu tiền lương của nhân viên theo VND, thì dùng kiểu int, nhưng nếu chương trình của bạn lưu trữ toàn người giàu thì lương có thể được sử dụng kiểu long🙂
Nếu không khai báo giá trị cho biến, thì biến kiểu số nguyên sẽ có giá trị mặc định là 0 (hoặc 0L đối với kiểu long).

Kiểu Số Thực

Kiểu này dùng để lưu trữ và tính toán các số thực, là các số có dấu chấm động. Cũng giống như kiểu số nguyên, kiểu số thực cũng được chia ra thành nhiều loại với nhiều độ lớn khác nhau tùy theo từng mục đích, như bảng sau.
Kiểu Dữ LiệuBộ Nhớ Lưu trữĐộ Lớn Của Biến
float4 bytesXấp xỉ ±3.40282347E+38F
double8 bytesXấp xỉ ±3.40282347E+38F
Với sự thoải mái trong cấp phát bộ nhớ của kiểu số thực thì bạn không quá lo lắng đến việc phân biệt khi nào nên dùng kiểu float hay double. Ví dụ sau đây cho thấy trường hợp dùng kiểu số thực.
Đúng
float rating = 3.5f;
double radius = 34.162;
Sở dĩ với kiểu float ở trên phải để chữ f vào cuối khai báo float rating = 3.5f; là vì thỉnh thoảng chúng ta phải nhấn mạnh cho hệ thống biết rằng chúng ta đang xài kiểu float chứ không phải kiểudouble, chính vì vậy chúng ta để chữ f vào cuối giá trị, nếu không hệ thống sẽ báo lỗi. Tương tự chúng ta có thể khai báo double radious = 34.162d; nhưng vì hệ thống đã hiểu đây là số double rồi nên ta không cần chữ d trong trường hợp này cũng vẫn không báo lỗi.
Nếu không khai báo giá trị cho biến, thì biến kiểu số thực sẽ có giá trị mặc định là 0.0f đối với kiểufloat và 0.0d đối với kiểu double.

Kiểu char

Kiểu char dùng để khai báo và chứa đựng một ký tự. Bạn có thể gán một ký tự cho kiểu này trong một cặp dấu nháy đơn như ‘a’ hay ‘B’ như ví dụ sau.
Đúng
char thisChar = 'a';
Bạn nên nhớ ký tự ‘a’ được khai báo ở trên nằm trong cặp nháy đơn chứ không phải nháy kép nhé, và nếu không có nháy cũng sai, ví dụ sau khai báo sai kiểu char.
Sai
char thisCharFail1 = "a";
char thisCharFail2 = b;
char thisCharFail3 = 'ab';
Ngoài việc khai báo như trên, kiểu char còn được dùng theo dạng Unicode, bắt đầu bằng ký tự‘\u0000’ và kết thúc bằng ký tự ‘\uffff’. Lưu ý là với cách dùng kiểu Unicode này, bạn vẫn phải dùng nháy đơn cho việc khai báo. Ký hiệu \u cho biết bạn đang dùng với mã Unicode chứ không phải ký tự bình thường. Với cách khai báo theo kiểu Unicode này, bạn có thể đưa vào chương trình một số ký tự đặc biệt, hãy thử thực hành code như sau và in ra log, bạn sẽ thấy hiệu quả của Unicode nhé.
1
2
3
4
5
6
7
8
9
10
11
public class MyFirstClass {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char testUnicode1 = '\u2122';
        char testUnicode2 = '\u03C0';
        System.out.println("See this character " + testUnicode1 + " and this character " + testUnicode2);
    }
}
Kết quả in ra như sau.
Screen Shot 2016-10-09 at 13.00.04.png

Kiểu boolean

Khác với C/C++, kiểu boolean trong ngôn ngữ Java chỉ được biểu diễn bởi 2 giá trị là true và false mà thôi. Do đó kiểu dữ liệu này chỉ được dùng trong việc kiểm tra các điều kiện logic, chứ không dùng trong tính toán, và bạn cũng không thể gán một kiểu số nguyên về kiểu boolean như trong C/C++ được.
Khai báo một kiểu boolean đúng như sau.
Đúng
boolean male = true;
boolean graduated = false;
Việc khai báo một biến boolean như sau là sai.
Sai
boolean male = 1;
Nếu không khai báo giá trị cho biến, thì biến kiểu boolean sẽ có giá trị mặc định là false.

Hằng Số

Hằng Số trong tài liệu tiếng Anh gọi là const, viết tắt của từ constantHằng cũng tương tự như biến, nhưng đặc biệt ở chỗ nếu một biến được khai báo là hằng thì hằng đó sẽ không được thay đổi giá trị trong suốt chương trình.
Vì các ví dụ trên đây chỉ giúp cho các bạn khai báo một biến, và không đá động gì đến việc thay đổi giá trị biến đó, thực ra một biến sẽ bị thay đổi giá trị nhiều lần trong suốt quá trình thực thi của ứng dụng, bạn sẽ làm quen với việc thay đổi giá trị của biến ở các bài sau. Còn hằng thì không có sự thay đổi nào cả, nếu bạn cố tình thay đổi hay gán lại giá trị mới của hằng sau khi nó được khai báo, bạn sẽ nhận được thông báo lỗi.
Để khai báo một hằng số, bạn cũng khai báo như biến nhưng thêm final vào trước khai báo như sau.
final float PI = 3.14f;
final char FIRST_CHARACTER = 'a';
final int VIP_TYPE = 1;
Bạn nên tập khai báo hằng bằng các ký tự viết hoa như ví dụ trên đây, điều đó giúp chúng ta dễ dàng phân biệt được đâu là biến và đâu là hằng sau này.
Bạn vừa cùng tôi học qua cách khai báo các biến và hằng. Bạn sẽ được học cách sử dụng ngôn ngữ Java sâu hơn ở các bài sau.

Bài Kế Tiếp

Bạn sẽ được học cách khai báo các phép toán trong Java, và kết hợp với việc khai báo biến và hằng của bài học hôm nay để viết một số ví dụ tính toán thú vị.
← Java Bài 3: Tạo Mới Project & Làm Quen Với Eclipse

                           
                           Nguồn : yellowcodebooks.com


Đăng nhận xét

Cảm Ơn Bạn Đã Để Lại Bình Luận

 

Quản Trị Viên

Lượt xem

Lên Trên