5s quảng cáo
Mình có 1 shopee nho nhỏ bán ốp iPhone kunn.oops, mọi người ủng hộ nhé :D
Mở đầu
Hế luuuuu everyone, lại là mình Loda
đây, chào mừng các bạn quay trở lại với series Thành thạo Java Basic trong 2 tuần.. Trong bài ngày hôm nay, chúng ta sẽ học về Biến, Kiểu dữ liệu và một số các Toán tử trong Java
nhé các bạn. Bài này sẽ khá nhiều ví dụ và kiến thức nên chúng ta vào bài luôn hah.
Biến & Kiểu dữ liệu
Chúng ta sẽ chạy một ví dụ trước rồi đi vào chi tiết nhé. Các bạn tạo một project mới, đặt tên là Bài 2
hay gì cũng được, tuỳ bạn chọn nhé. Và tạo cho mình một file là Calculation.java
như hình.
Sau đó các bạn viết code như này và chạy thử:
public class Calculation{ public static void main(String[] args){ // khai bao so nguyen int a = 5; int b = 10; int x = 10 + 5; System.out.println(x); } }
Các bạn chạy chương trình này (click chuột phải vào file Calculation > Run Main()
). sẽ thấy hiện kết quả là c = 15
;
Nhìn code thì rất dễ hiểu phải không, tuy nhiên chúng ta cùng lí giải chi tiết để hiểu hơn về Biến
và Kiểu dữ liệu
trong Java
.
Thứ nhất là cái // khai bao so nguyen
, cái này gọi là Comment
, tức các bạn viết gì sau 2 cái dấu //
thì nó sẽ không ảnh hưởng tới code
của chương trình, nó chỉ mang ý nghĩa chú thích thôi.
Thứ hai là cái này:
int a = 5;
Nói về Biến
(Variable
) các bạn có liên tưởng tới liên tưởng tới biến x
trong đồ thị hàm số ax + b = 0
không 😂 Thì chính là nó đấy.
Biến
sẽ giúp chúng ta lưu trữ và quản lý các giá trị trong chương trình.
Trong Java
, Biến
cũng là đại diện cho một đối tượng và đối tượng này phải được xác định là thuộc Kiểu dữ liệu
nào. Sẽ giống với phương trình x
kia, nhưng đề bài phải ghi rõ x
là số nguyên, số thực hay số phức để người làm bài người ta còn biết.
Có các kiểu dữ liệu nguyên thuỷ
(primitive
) như sau:
boolean
: là kiểu logic, chỉ có 2 giá trịtrue
hoặcfalse
char
: kiểu ký tự, chỉ chứa đc được một ký tự, được định nghĩa trong dấu ngoặc đơn'
int
: số nguyên (1,2,3, ..
)long
: số nguyên, lớn hơnint
. (sẽ giải thích ở dưới)float
: số thực (1.5, 2.5, ..
).double
: số thực, lớn hơnfloat
.
Ngoài ra còn 2 kiểu dữ liệu nhỏ hơn int
là byte
và short
. Thì mình sẽ nói sau hah. Còn trước mắt tập trung vào các nhóm chính kia đã.
Tiếp đến là kiểu dữ liệu cao cấp hơn gọi là Object
mà đặc trưng nhất là String
.
String
: Một chuỗi các ký tự, được định nghĩa trong dấu ngoặc kép""
. vdString a = "Hellooo world~~~"
(Nhớ tới ví dụ ởBài #1
hem các bạn)
Mọi loại dữ liệu đều có một cái gọi là Giá trị mặc định
, khi các bạn không cung cấp cho nó giá trị, nó sẽ tự có 1 giá trị mặc định.
Kiểu dữ liệu | Giá trị mặc định | Kích thước |
---|---|---|
boolean | false | 1 bit |
char | '\u0000' | 2 byte |
byte | 0 | 1 byte |
short | 0 | 2 byte |
int | 0 | 4 byte |
long | 0L | 8 byte |
float | 0.0f | 4 byte |
double | 0.0d | 8 byte |
String | null |
Ở đây bạn sẽ thấy có chữ L
f
d
sau số 0
. Đó là những ký tự đánh dấu cho Java phân biệt là số 0L
là số 0 nhưng dạng long
, f
là dạng float
, d
là double
.
Cách khai báo
Để khai báo biến, bắt buộc trước đó bạn phải chỉ cho nó kiểu dữ liệu
mà nó sẽ nhận, ngoài ra có thể có giá trị hoặc không.
- Cách 1:
[kiểu_dữ_liệu][tên_biến];
- Cách 2:
[kiểu_dữ_liệu][tên_biến] = [giá_trị];
int a, b, c; // Khai báo 3 biến có kiểu dữ liệu int float b = 4.5f, c = 4f; // Khai báo 2 biến có kiểu dữ liệu float với giá trị ban đầu. ở đây biến `c` sẽ được hiểu là c = 4.0 double c = 4444.3; char t = 'c'; String e = "Hello";
Cách đặt tên
Trong Java
, tuy không bắt buộc, nhưng chúng ta luôn thống nhất với nhau cách đặt tên biến theo một nguyên tắc, để đảm bảo khi đọc code
sẽ có tính nhất quán và chuẩn chỉnh.
- Tên biến phải tuân theo
quy tắc lạc đà (Camel Case)
: đó là chữ cái đầu tiên của từ đầu tiên phải viết thường và chữ cái đầu tiên của các từ tiếp theo phải viết hoa, ví dụ:listStudent
,minScore
.
Chi tiết các bạn xem ở đây nhé, nói ra khá dài, nhưng nắm được cái ý ở trên của mình là cũng khá ổn r.
Phạm vi sử dụng
Một khi bạn đã khai báo biến, thì bạn có thể sử dụng nó trong những Phạm vi
mà nó khả dụng. ?? 😀?? Cùng nhìn ví dụ ở dưới nhé.
Ví dụ:
public static void main(String[] args){ // khai bao so nguyen `a` int a; // Gán giá trị cho a, bạn sử dụng toán tử `=` // Sử dụng biến a bình thường a = 124214; // lấy a và cộng thêm 1,, rồi gán ngược lại giá trị đó vào a :D // Sử dụng biến a bình thường a = a + 1; } // Gán lại giá trị cho a = 100 - 10; // Chương trình lỗi a = 100 - 10;
Phạm vi
(Scope
) là đây các bạn ạ, chính là 2 cái dấu {}
, khi bạn khai báo một biến a
trong 2 cái dấu {
}
thì bạn chỉ có thể sử dụng ở trong nó thôi, ra ngoài nó sẽ không hiểu a
là thằng nào và từ đâu chui ra.
Biến
không thể sử dụng ngoài, nhưng nó có thể được sử dụng ở bên trong nhữngscope
mà nó chứa hoặc cùng cấp với nó.
public class Calculation{ // Khai báo a ở ngoài main, cái `public static` là cần thiết nhé, còn chi tiết thì chúng ta sẽ học ở các bài sau. public static int a = 5; public static void main(String[] args){ // thay đổi a, ở trong, vẫn okie. a = 10; // Biến a có thể sử dụng trong các `scope` con của nó // Làm gì biến a ở đây cũng được, biến đổi nó. // gán giá trị biến a vào b; int b = a; System.out.println(b); } }
Toán tử
Khi đã xác định các Biến
trong chương trình, bạn có thể sử dụng toán tử
để thay đổi các giá trị. Các toán tử
thì khá đơn giản, giống môn toán bình thường thôi. Với các kiểu nguyên thuỷ (primitive)
ta có:
public class Calculation{ public static void main(String[] args){ int a; int b = 5; int c = a + b; // c = 0 + 5 cộng int d = a - b; // d = 0 - 5 trừ int f = a * 5; // f = 0 x 5 nhân int g = a / 5; // g = 0 : 5; chia } }
Còn với String
thì bạn có thể sử dụng +
để ghép 2 chuỗi mà thôi. Còn các toàn tử còn lại không được sử dụng với String
public class Calculation{ public static void main(String[] args){ String a = "Hello" String b = "World" // Mình đã nối 3 xâu là "Hello" + " " (Khoảng trắng) + "World" lại với nhau System.out.println(a + " " + b); String c = a + 5; // String cộng với một số nguyên? System.out.println(c); // Kết quả sẽ là: "Hello 5" :V // Bạn sẽ hiểu là khi cộng String với một số, số đó sẽ bị chuyển thành String và nối vào sau. } }
Ở trên có một ví dụ về việc cộng một String
với int
. Rất kì lạ phải không, 2 kiểu dữ liệu
khác nhau khi tính toán với nhau thì sẽ được Java
xử lý bằng cách Ép kiểu
.
Ép kiểu dữ liệu
Nhìn vào ví dụ sau, bạn sẽ rõ.
public class Calculation{ public static void main(String[] args){ int a = 2; float b = 3.5f; // dùng chữ f để nó hiểu đây là 3,5 float chứ k phải 3,5 double float c = a + b; // c = 5.5 int d = a + b; // báo lỗi. Vì sao? // vì java đang hiểu 2 + 3.5 nó sẽ ép thành 5.5 là float. Bây giờ gán nó vào số nguyên thì sẽ như này int = float? // Để gán được bạn cần sử dụng ép kiểu int d = (int) a + b; // d = 5 // a + b = 5.5 => ép thành (int) => 5 (lấy phần nguyên thôi) char character = '5'; int number = (int) character; // number = 53. Why? // Vì ép `char` thành `int` thì nó sẽ không chuyển chữ thành số, mà nó sẽ kiếm tra '5' là ký tự ASCII thứ bao nhiêu trong máy tính, và trả lại số thứ tự đó. float = (float) 5; // => 5.0 } }
Tới đây là các bạn đã có thể sử dụng được Biến
trong Java
rồi đó, có thể sử dụng làm bài tập được rồi kakakakaka :D, còn phần dưới đây mình sẽ nói thêm về bản chất của Biến
và giới hạn giá trị của nó.
Bản chất của biến (Nói thêm)
Khi các bạn khai báo một biến int
trong chương trình của mình và sử dụng lung tung khắp mọi nơi, thì bạn có biết cái biến int
ý ở đâu lòi ra không :))
Về bản chất, Biến
sẽ là một vùng nhớ trong thiết bị vật lý mà dễ nhất là để trong ram
. và khi bạn cho nó một giá trị, nó sẽ lưu trữ số đó vào ram
, và cần thì lấy lên.
Vậy để ram
biết bạn muốn lưu cái gì thì bạn phải khai báo cho nó. Ví dụ bạn bảo tôi cần một số nguyên int
. Thì máy tính hiểu là mình cần lưu trữ một số nguyên bình thường, không quá lớn, nó sẽ cho bạn 4 byte
trong Ram
thích lưu gì thì lưu. nhưng không được vượt quá 4 byte
.
4 byte = 32 bit
, bỏ đi 1 bit đầu tiên để đánh dấu là số âm hay dương, thì còn31 bit
=> số lớn nhất mà biến int lưu trữ được là2^31 - 1
=2147483647
Từ đây, bạn sẽ hiểu vì sao có số long
, vì nhu cầu lưu số lớn hơn thì long
được cấp tận 8 byte
.
Còn trường hợp đặc biệt như String
thì tuỳ giá trị của nó có bao nhiêu ký tự, mà Ram
sẽ cấp tương ứng bấy nhiêu byte
Lời kết
hết rồi kaka 😄Ở các bài sau mình sẽ vừa đi vừa nói lại những phần còn thiếu trong Biến
này nên các bạn chớ lo nhé. Chúc các bạn học tập tốt.
Nhớ like và chia sẻ cho bạn bè nhé ahehe/