Bài viết này mình sẽ giúp bạn hiểu rõ về kiểu dữ liệu byte trong Java và biết cách tận dụng sức mạnh của biến có kiểu dữ liệu byte.
Kiểu dữ liệu byte trong Java
Biến trên thực tế là bộ nhớ để lưu một giá trị nào đó.
Khi khai báo biến tức là bạn đang khai báo với hệ thống rằng bạn cần một không gian trong bộ nhớ để lưu giá trị của biến.
Dựa trên kiểu dữ liệu của một biến, hệ điều hành cấp phát bộ nhớ và quyết định cái gì có thể được lưu giữ trong bộ nhớ dành riêng đó.
Do đó, sử dụng đúng kiểu dữ liệu trong Java, cấp phát đúng nhu cầu sẽ mang lại một chương trình có hiệu năng cực kỳ tốt.
Trong Java có 2 kiểu dữ liệu có sẵn:
-
Kiểu dữ kiệu nguyên thuỷ (Primitive)
Để tìm hiểu hết đống kiểu dữ liệu này thật là mất khá nhiều thời gian, nên trong bài viết này, mình chỉ tóm gọn cho các bạn hiểu về byte – một kiểu dữ liệu primitive trong Java.
> Nếu muốn tìm hiểu đầy đủ các kiểu dữ liệu trong Java thì bạn có thể xem hướng dẫn Tự học Java (toàn tập).
> Hoặc tham gia khóa học Java (Phun sờ tắc) để nắm giữ ngôn ngữ Java nhanh hơn, học kinh nghiệm lập trình Java tốt hơn từ giảng viên doanh nghiệp.
1. Kiểu dữ liệu byte là gì? Chúng được sử dụng trong trường hợp nào
Nếu bạn đã từng xem qua các tài liệu về máy tính chắc hẳn đã nghe qua hai khái niệm byte và bit.
Trong Java cũng thế, Java dựa trên máy tính mà lập trình và hoạt động được nên cũng có một kiểu dữ liệu byte nhằm giúp các lập trình viên lưu trữ một số giá trị biến phù hợp.
Vậy byte trong Java là gì?
Byte là một trong những kiểu dữ liệu nguyên thủy trong Java, là kiểu dữ liệu số nguyên nhỏ nhất.
Điều này có nghĩa byte là kiểu dữ liệu được đóng gói sẵn trong ngôn ngữ lập trình và việc của bạn là sử dụng nó khi nào cho hợp lý.
Một byte Java có cùng kích thước với một byte trong bộ nhớ máy tính
1 Byte
là 8 bit
và có thể giữ các giá trị từ -128
đến 127
.
Hãy cẩn thận khi sử dụng byte, đặc biệt nếu số có khả năng lớn hơn 127
(hoặc nhỏ hơn -128
).
Không có cách nào để lưu trữ giá trị lớn hơn phạm vi trên vào một byte, lúc đó chương trình chắc chắn sẽ bị tràn bộ nhớ.
Bạn hãy nhớ kỹ một điều rằng là:
-
BYTE chỉ dùng để lưu các số nguyên có kích thước 8 bit
Kiểu dữ liệu byte được sử dụng để lưu giữ khoảng trống trong các mảng lớn, chủ yếu là các số nguyên.
Biến có kiểu dữ liệu byte đặc biệt hữu ích khi bạn đang làm việc với luồng dữ liệu từ mảng hoặc tệp.
Chúng cũng hữu ích khi bạn đang làm việc với dữ liệu nhị phân thô có thể không tương thích trực tiếp với các kiểu Java tích hợp khác.
2. Một số thao các cơ bản với kiểu dữ liệu byte trong Java
Byte trong Java
Là một kiểu dữ liệu nguyên thủy, việc khai báo một biến byte cũng đơn giản như các kiểu dữ liệu khác trong Java.
Cú pháp đơn giản nhất để khai báo một byte là:
byte <tên biến> = [giá trị biến];
Ví dụ:
byte niit = 100;
Để hiểu hơn về byte và cách sử dụng, chúng ta cùng lướt qua một vài ví dụ nhé.
Ví dụ 1: Biến byte sử dụng lớp Byte trong Java
Bạn hãy tạo một class Demo
public class Demo {
public static void main(String[] args) {
byte b = 10; // khai báo một biến byte và gán giá trị = 10
Byte n1 = new Byte(b);
Byte n2 = new Byte("4");
System.out.println(n1); // 10
System.out.println(n2);// 4
}
}
Bạn có thể thấy trong chương trình, mình có thể sử dụng trực tiếp từ khóa byte
để khai báo dữ liệu.
Tuy nhiên, mình cũng có thể sử dụng lớp Byte
để tạo một đối tượng có kiểu dữ liệu như vậy. Bởi vì byte
nằm trong Byte
. (lớp bao bọc chính nó)
Ví dụ 2: Sử dụng biến byte trong phép cộng
Trong ví dụ dưới đây, mình sử dụng kiểu byte
trong lớp CongByte
để thêm hai số kiểu byte
và lưu giá trị nó lại, bạn đoán xem kết quả như thế nào?
public class CongByte {
public static void main(String[] args) {
byte a = 30;
byte b = 40;
byte c = (byte) (a + b);
System.out.println("Ket qua = " + c);
}
}
3. Chuyển đổi qua lại giữa byte array và String
3.1. Cách chuyển đổi String thành một byte array
Chúng ta có thể sử dụng phương thức getBytes()
của lớp String
để thực hiện chuyển chuỗi thành một chuỗi các byte bằng cách sử dụng bộ ký tự mặc định.
Đây là một chương trình đơn giản chỉ ra cách chuyển đổi Chuỗi thành mảng byte trong java.
import java.util.Arrays;
public class StringToArrayByte {
public static void main(String[] args) {
String str = "NIIT";
byte[] byteArr = str.getBytes();
// in các phần tử byte[]
System.out.println("Ket qua la: " + Arrays.toString(byteArr));
// Ket qua la: [78, 73, 73, 84]
}
}
3.2. Cách chuyển đổi byte arry thành String
Hãy cùng xem một chương trình đơn giản chỉ ra cách chuyển đổi mảng byte thành Chuỗi trong Java.
public class ByteArrayToString {
public static void main(String[] args) {
byte[] byteArray = { 'N', 'I', 'I', 'T'};
byte[] byteArray1 = { 78, 73, 73, 84 };
String str = new String(byteArray);
String str1 = new String(byteArray1);
System.out.println(str); // NIIT
System.out.println(str1); // NIIT
}
}
Bạn có nhận thấy rằng mình đang cung cấp các kí tự trong khi tạo mảng byte không?
Nó hoạt động nhờ tính năng tự động chuyển đổi từ “N
” sang 78
trong byte, tương tự với các giá trị khác.
Đó là lý do tại sao kết quả trả về là như nhau cho cả chuyển đổi mảng byte sang chuỗi.
4. Một số phương thức khi làm việc với lớp Byte trong Java
Ngoài ra khi làm việc với lớp bao bọc của chính kiểu byte là lớp Byte (chú ý là trong Java byte khác với Byte nhé) các bạn có thể tham khảo một số phương thức nâng cao được hỗ trợ như:
-
valueOf(): Trả về đối tượng Byte được khởi tạo với giá trị được cung cấp
-
parseByte(): trả về giá trị byte bằng cách phân tích chuỗi trong cơ số được cung cấp. Khác với valueOf () vì nó trả về một giá trị byte nguyên thủy và valueOf () trả về đối tượng Byte
-
byteValue(): Trả về một giá trị byte tương ứng với đối tượng Byte
-
intValue(): Trả về một giá trị int tương ứng với đối tượng Byte (tương tự với long, double, float)
-
compareTo(): Được sử dụng để so sánh hai đối tượng Byte cho đẳng thức số.
-
Và nhiều phương thức khác nữa, …
Làm việc với byte trong Java không phức tạp như bạn nghĩ, nó vốn là kiểu dữ liệu cơ bản và đơn giản.
Nhưng nhất định bạn phải biết rõ lợi ích của nó, nên dùng byte trong trường hợp nào thì bạn mới thực sự tận dụng được sức mạnh của ngôn ngữ Java.
Bản thân mình tiếp xúc với Java cũng đã khá lâu, nhưng vẫn chưa sử dụng hết các phương thức mà Byte hỗ trợ, nên bạn cũng cứ yên tâm, chỉ cần ghi nhớ tác dụng của nó, khi cần thì Google là được.
Tham khảo: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python