Sunday, August 23, 2015

[Java] Các kiểu dữ liệu và toán tử trên Java


Khai báo biến
Cú pháp khai báo biến: dataType varName;
Trong đó, dataType là kiểu dữ liệu của biến, varName là tên biến. Trong Java, việc đặt tên biến phải tuân theo các quy tắc sau:

  • Chỉ được bắt đầu bằng một kí tự (chữ), hoặc một dấu gạch dưới , hoặc một kí tự dollar ($)
  •  Không có khoảng trắng giữa tên
  •  Bắt đầu từ ký tự thứ hai, có thể dùng các kí tự (chữ), chữ số, dấu dollar, dấu gạch dưới
  •  Không trùng với các từ khóa
  •  Có phân biệt chữ hoa chữ thường.
 Phạm vi hoạt động của biến
Một biến có phạm vi hoạt động trong toàn bộ khối lệnh mà nó được khai báo. Một khối lệnh bắt đầu bằng dấu “{” và kết thúc bằng dấu “}”:
  • Nếu biến được khai báo trong một cấu trúc lệnh điều khiển, biến đó có phạm vi hoạt động trong khối lệnh tương ứng.
  •  Nếu biến được khai báo trong một phương thức (Không nằm trong khối lệnh nào), biến đó có phạm vi hoạt động trong phương thức tương ứng: có thể được sử dụng trong tất cả các khối lệnh của phương thức.
  •  Nếu biến được khai báo trong một lớp (Không nằm trong một phương thức nào), biến đó có phạm vi hoạt động trong toàn bộ lớp tương ứng: có thể được sử dụng trong tất cả các phương thức của lớp.
Kiểu dữ liệu cơ bản.
Java cung cấp các kiểu dữ liệu cơ bản như sau:
Kiểu dữ liệu
Mô tả
byte
Dùng đẻ lưu dữ liệu kiểu số nguyên có kích thước một byte (8 bít). Phạm vi biểu diễn
giá trị từ -128 đến 127. Giá trị mặc định là 0.
char
Dùng để lưu dữ liệu kiểu kí tự hoặc số nguyên không âm có kích thước 2 byte (16 bít).
Phạm vi biểu diễn giá trị từ 0 đến u\ffff. Giá trị mặc định là 0.
boolean
Dùng để lưu dữ liệu chỉ có hai trạng thái đúng hoặc sai (độ lớn chỉ có 1 bít). Phạm vi
biểu diễn giá trị là {“True”, “False”}. Giá trị mặc định là False.
short
Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ2 byte (16 bít). Phạm vi biểu diễn giá
trị từ - 32768 đến 32767. Giá trị mặc định là 0.
int
Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 4 byte (32 bít). Phạm vi biểu diễn giá trị từ -2,147,483,648 đến 2,147,483,647. Giá trị mặc định là 0.
float
Dùng để lưu dữ liệu có kiểu số thực, kích cỡ 4 byte (32 bít). Giá trị mặc định là 0.0f. Phạm vi biểu diễn giá trị từ 10-38 đến 1038
 double
Dùng để lưu dữ liệu có kiểu số thực có kích thước lên đến 8 byte. Giá trị mặc định là 0.00d. Phạm vi biểu diễn giá trị từ 10-308 đến 10308
long
Dùng để lưu dữ liệu có kiểu số nguyên có kích thước lên đến 8 byte. Giá trị mặc định là 0. Phạm vi biễu diễn giá trị  -9.223.372.036.854.775.808 đến 9.223.372.036.854.775.807

Kiểu dữ liệu đối tượng
Trong Java, có 3 kiểu dữ liệu đối tượng:
Array: Một mảng của các dữ liệu cùng kiểu
class: Dữ liệu kiểu lớp đối tượng do người dùng định nghĩa. Chứa tập các thuộc tính và phương thức.
interface: Dữ liệu kiểu lớp giao tiếp do người dùng định nghĩa. Chứa các phương thức của giao tiếp.

Ép kiểu (Type casting)
Ví dụ, nhiều khi gặp tình huống cần cộng một biến có dạng integer với một biến có dạng float. Để xử lý tình huống này, Java sử dụng tính năng ép kiểu (type casting) của C/C++. Đoạn mã sau đây thực hiện phép cộng một giá trị dấu phẩy động (float) với một giá trị nguyên (integer).
float c = 35.8f;
int b = (int)c + 1;
Đầu tiên giá trị dấu phảy động c được đổi thành giá trị nguyên 35. Sau đó nó được cộng với 1 và kết quả là  giá trị 36 được lưu vào b.
Trong Java có hai loại ép kiểu dữ liệu:
  • Nới rộng (widening): quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin. Ví dụ chuyển từ int sang float. Chuyển kiểu loại này có thế được thực hiện ngầm định bởi trình biên dịch.
  •  Thu hẹp (narrowwing): quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhở hơn. Kiểu biến đổi này có thể làm mất thông tin như ví dụ ở trên. Chuyển kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện chuyển kiểu tường minh.
 Các toán tử
Java cung cấp các dạng toán tử sau:
  • Toán sử số học
  •  Toán tử bit
  •  Toán tử quan hệ
  •  Toán tử logic
  •  Toán tử điều kiện
  •  Toán tử gán
Toán tử số học
Các toán hạng của các toán tử số học phải ở dạng số. Các toán hạng kiểu boolean không sử dụng được, song các toán hạng ký tử  cho phép sử dụng loại toán tử này. Một vài kiểu toán tử được liệt kê trong bảng dưới đây.
Toán tử
Mô tả
+
Cộng.
Trả về tổng của 2 toán hạng.
-
Trừ
Trả về hiệu của 2 toán hạng
*
Nhân
Trả về tích của hai toán hạng
/
Chia
Trả về giá trị là thương của phép chia.
%
Phép chia lấy modul.
Giá trị trả về là phần dư của phép chia.
++
Tăng dần
Tăng giá trị của biến lên 1. Ví dụ i++ tương đương i = i+1.
--
Giảm dần
Giảm giá trị của biến đi 1. Ví dụ i—tương đương i = i – 1.
+=
Cộng và gán giá trị
Cộng các giá trị của toán hạng bên trái vào toán hạng bên phải và gán giá trị trả về cho toán hạng bên trái. Ví dụ i+=j tương đương i = i+j.
-=
Trừ và gán giá trị
Trừ các giá trị của toán hạng bên trái đi toán hạng bên phải và gán giá trị trả về cho toán hạng bên trái. Ví dụ i-=j tương đương i = i-j.
*=
Chia và gán
Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và gán giá trị
trả vềvào toán hạng bên trái. Ví dụ c /= a tương đương với c = c/a
%=
Lấy số dư và gán
Chia giá trịcủa toán hạng bên trái cho toán toán hạng bên phải và gán giá trị
số dư vào toán hạng bên trái. Ví dụ c %= a tương đương với c = c%a

Toán tử Bit
Các toán tử dạng bit cho phép ta thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên
thuỷ.
Toán tử
Mô tả
~
Phủ định bit (NOT)
Trả về giá trị phủ định của một bít.
&
Toán tử AND bít
Trả về giá trị là 1 nếu các toán hạng là 1 và 0 trong các trường hợp khác
|
Toán tử OR bít
Trả về giá trị là 1 nếu một trong các toán hạng là 1 và 0 trong các trường hợp khác.
^
Toán tử Exclusive OR bít
Trả về giá trị là 1 nếu chỉ một trong các toán hạng là 1 và trả về 0 trong các trường
hợp khác.
>> 
Dịch sang phải bít
Chuyển toàn bộ các bít cuả một số sang phải một vị trí, giữ nguyên dấu của số âm.
Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch.
<< 
Dịch sang trái bít
Chuyển toàn bộ các bít cuả một số sang trái một vị trí, giữ nguyên dấu cuả số âm.
Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch.

Các toán tử quan hệ

Các toán tử quan hệ kiểm tra mối quan hệ giữa hai toán hạng. Kết quả của một biểu thức có dùng các toán tử quan hệ là những giá trị Boolean (logic “đúng” hoặc “sai”). Các toán tử quan hệ được sử dụng trong các cấu trúc điều khiển.
Toán tử
Mô tả
= =
So sánh bằng
Toán tử này kiểm tra sự tương đương của hai toán hạng
!=
So sánh khác
Kiểm tra sự khác nhau của hai toán hạng
Lớn hơn
Kiểm tra giá trị của toán hạng bên phải lớn hơn toán hạng bên trái hay không
Nhỏ hơn
Kiểm tra giá trị của toán hạng bên phải có nhỏ hơn toán hạng bên trái hay không
>=
Lớn hơn hoặc bằng
Kiểm tra giá trị của toán hạng bên phải có lớn hơn hoặc bằng toán hạng bên trái hay không
<=
Nhỏ hơn hoặc bằng
Kiểm tra giá trị của toán hạng bên phải có nhỏ hơn hoặc bằng toán hạng bên trái hay không

Các toán tử logic                                                   
Các toán tử logic làm việc với các toán hạng Boolean. Một vài toán tử kiểu này được chỉ ra dưới đây:
Toán tử
Mô tả
&&
Và (AND)
Trả về một giá trị“Đúng” (True) nếu chỉ khi cả hai toán tử có giá trị“True”
||
Hoặc (OR)
Trả về giá trị“True” nếu ít nhất một giá trị là True
^
XOR
Trả về giá trị True nếu và chỉ nếu chỉ một trong các giá trị là True, các trường hợp còn lại cho giá trị False (sai)
!
Toán hạng đơn tử NOT.
Chuyển giá trị từ True sang False và ngược lại.

Các toán tử điều kiện
Toán tử điều kiện là một loại toán tử đặc biệt vì nó bao gồm ba thành phần cấu thành biểu thứcđiều kiện. Cú pháp:
  biểu thức 1? biểu thức 2 : biểu thức 3 ;
  •  biểu thức 1: Biểu thức logic. Trả trả về giá trị True hoặc False
  •  biểu thức 2: Là giá trị trả về nếu xác định là True
  •  biểu thức 3: Là giá trị trả về nếu xác định là False
Toán tử gán
Toán tử gán (=) dùng để gán một giá trị vào một biến và có thể gán nhiều giá trị cho nhiều biến cùng một lúc. Ví dụ đoạn lệnh sau gán một giá trị cho biến var và giá trị này lại được gán cho nhiều biến trên một dòng lệnh đơn.
int var = 20;
int p,q,r,s;
p=q=r=s=var;
Dòng lệnh cuối cùng được thực hiện từ phải qua trái. Đầu tiên giá trị ở biến var được gán cho ‘s’,
sau đó giá trị của ‘s’ được gán cho ‘r’ và cứ tiếp như vậy.

Thứ tự ưu tiên của các toán tử
Các biểu thức được viết ra nói chung gồm nhiều toán tử. Thứ tự ưu tiên quyết định trật tự thực hiện các toán tử trên các biểu thức. Bảng dưới đây liệt kê thứ tự thực hiện các toán tử trong Java.
Thứ tự
Toán tử
1
Các toán tử đơn như+,-,++,--
2
Các toán tử số học và các toán tử dịch như*,/,+,-,<<,>>
3
Các toán tử quan hệ như>,<,>=,<=,= =,!=
4
Các toán tử logic và Bit như &&,||,&,|,^
5
Các toán tử gán như=,*=,/=,+=,-=

Thay đổi thứ tự ưu tiên
Để thay đổi thứ tự ưu tiên trên một biểu thức, bạn có thể sử dụng dấu ngoặc đơn ():
  •  Phần được giới hạn trong ngoặc đơn được thực hiện trước.
  •  Nếu dùng nhiều ngoặc đơn lồng nhau thì toán tử nằm trong ngoặc đơn phía trong sẽ thực  thi trước, sau đó đến các vòng phía ngoài.
  •  Trong phạm vi một cặp ngoặc đơn thì quy tắc thứ tự ưu tiên vẫn giữ nguyên tác dụng.

Cám ơn bạn đã đọc bài viết này. Hãy chia sẻ bài viết và bình luận ý kiến của bạn ở bên dưới.

Share this

Chào mừng bạn đến với SimpleCodeCJava Blog - Mục đích của chúng tôi khi thành lập blog này là muốn chia sẻ những kiến thức và kinh nghiệm lập trình mà chúng tôi đã học được với mong muốn giúp đỡ mọi người, giúp bạn rút ngắn được thời gian tìm hiểu cũng như việc giải quyết những vấn đề trong lập trình C và Java.

0 Comment to "[Java] Các kiểu dữ liệu và toán tử trên Java"