Lập trình mạng với Java
Nội dung
Ngôn ngữ Java căn bản
Lớp và đối tượng trong Java
Exception
Nhập / xuất trong Java
Lập trình Socket
Lập trình RMI
Ngôn ngữ Java
Java là ngôn ngữ lập trình hướng đối tượng
Một chương trình Java thường bắt đầu bằng một khai
báo lớp (class); trong đó, có phương thức main – là
điểm bắt đầu thực thi của chương trình:
public static void main (String[] agrs)
Java hỗ trợ các cấu trúc điều khiển:
if-else
switch
for
while
do-while
Java cung cấp ba câu lệnh break,continue và
return cho phép chuyển điều khiển từ đoạn lệnh này
sang đoạn khác.
Cách thi hành 1 chương trình Java
javac
myProgram.java
java myProgram
Kiểu dữ liệu
byte
char
boolean
short
int
long
float
double
Array
Class
Interface
Chuyển đổi kiểu dữ liệu [1]
float c = 34.89675f;
int b = (int)c + 10;
c = b;
Trong quá trình chuyển đổi kiểu dữ liệu, một kiểu dữ
liệu sẽ được chuyển đổi sang một kiểu dữ liệu khác.
Ví dụ
Chuyển đổi kiểu dữ liệu [2]
Có hai cách chuyển đổi kiểu dữ liệu: tự động chuyển
đổi kiểu dữ liệu và phép ép kiểu dữ liệu.
Khi dữ liệu ,với một kiểu dữ liệu cho trước, được gán
cho một biến có kiểu dữ liệu khác, quá trình chuyển
đổi kiểu dữ liệu tự động thực hiện nếu thõa các điều
kiện sau:
Hai kiểu dữ liệu tương thích nhau
Kiểu dữ liệu đích lớn hơn kiểu dữ liệu nguồn
Ép kiểu dữ liệu là sự chuyển đổi dữ liệu tường minh.
Nó có thể làm mất thông tin
Các luật mở rộng kiểu dữ liệu
Tất cả các giá trị kiểu byte and short được mở
rộng thành kiểu int
Nếu một toán hạng có kiểu long, kiểu dữ liệu của
toàn biểu thức sẽ được mở rộng thành kiểu long
Nếu một toán hạng có kiểu float, kiểu dữ liệu của
toàn biểu thức sẽ được mở rộng thành kiểu float
Nếu một toán hạng có kiểu double, kiểu dữ liệu của
toàn biểu thức sẽ được mở rộng thành kiểu double
BIẾN
Biến trong Java có 3 loại: static variable, instance
varible và local variable.
static/instance variable: có thể được sử dụng mà
không cần khởi tạo giá trị (được tự động gán giá
trị mặc định).
local varible: bắt buộc phải khởi tạo giá trị trước
khi sử dụng. Nếu không sẽ tạo ra lỗi khi biên
dịch.
class test{
static int a;
public static void main(String[] args){
int b;
System.out.println(a);
System.out.println(b);
}
}
Biến
Có ba thành phần trong một khai báo biến:
Kiểu dữ liệu
Tên biến
Giá trị khởi gán ( tùy ý )
Cú pháp
kiểu_dữ_liệu tên_biến [= giá_trị];
Ví dụ
double d = 5.5;
Mảng
Có ba cách khai báo mảng
kiểu_dữ_liệu tên_biến [];
kiểu_dữ_liệu tên_biến []=new kiểu_dữ_liệu [số_ptử];
kiểu_dữ_liệu tên_biến [] = {gtrị1, gtrị2,…., gtrịN};
Ví dụ
int a[];
int a[] = new int [10];
float af[] = {5.3, 7.6, 8.9, 3.0};
Các cấu trúc điều khiển
Cấu trúc rẽ nhánh
if-else
switch-case
Cấu trúc lặp
while
do-while
for
Tham số của chương trình
Xét đoạn CT
class ArgsTest {
public static void main(String[] args) {
for(int i=0;i<args.length;++i) {
System.out.print("args["+ i +"] = "+args[i]+”\t”);
}
}
}
Thực thi CT: java ArgsTest this is test
Kết quả:
args[0]=this args[1] = is args[2]=test
if-else
if (biểu_thức_điều_kiện)
{
khối_lệnh_1;
}
else
{
khối_lệnh_2;
}
switch-case
switch (biểu_thức)
{
case giá_trị_1:
khối_lệnh_1; break;
case giá_trị_2:
khối_lệnh_2; break;
...
default:
khối lệnh_n;
}
for
for (nhóm_lệnh_khởi_tạo;
bthức_điều_kiện;
nhóm_lệnh_tăng_giảm_giá_trị)
{
khối_lệnh_lặp;
}
while
while (biểu_thức_điều_kiện)
{
khối_lệnh_lặp;
}
do-while
do
{
khối_lệnh_lặp;
} while (condition);
Lớp và đối tượng
Lớp định nghĩa một kiểu dữ liệu mới
Đối tượng thuộc một lớp trong Java luôn được cấp
phát động, sử dụng từ khóa new
Biến có kiểu dữ liệu là một lớp có thể tham chiếu đến
một đối tượng thuộc lớp
Ví dụ
My_Class object;
object = new My_Class( );
Phương thức
Khai báo
access_specifier modifier kiểu_dữ_liệu
tên_phương_thức (danh_sách_tham_số)
{
}
access_specifier: public, protected,
none (default), private
modifier: static, final, abstract
Phương thức [2]
Nguyên tắc truyền tham số vào phương thức:
Kiểu dữ liệu là kiểu cơ sở: truyền bằng tham số trị
Kiếu dữ liệu là kiểu tham chiếu: truyền bằng tham
chiếu.
Phương thức trong lớp có thể overloading: nhiều
phương thức có cùng tên nhưng khác danh sách tham
số.
Các phương thức overriding là các phương thức
giống nhau nhưng được khai báo trong các lớp khác
nhau có quan hệ kế thừa.
Phương thức [3]
void f ( int i ) { … }
void g ( Object o ) { … }
________
int k=5;
f ( 5 );
f ( k ); // truyền tham trị
________
g ( obj ); // truyền tham chiếu
Phương thức khởi tạo
Có cùng tên với tên lớp và không có kiểu trả về
Được tự động gọi thực hiện ngay khi đối tượng thuộc lớp
được tạo ra.
Có hai loại phương thức khởi tạo: có tham số và không
tham số (phương thức khởi tạo mặc định). Tùy thuộc vào
cách khởi tạo đối tượng mà phương thức khởi tạo tương
ứng được gọi thực hiện.
LỚP TRỪU TƯỢNG
Lớp trừu tượng là lớp chỉ có thể dùng để khai báo
biến.
Đề khai báo lớp trừu tượng dùng từ khóa
abstract:
abstract class Number { . . . }
một lớp trừu tượng có thể chứa các phương thức
trừu tượng.
Lớp trừu tượng không thể final.
Interfaces
interface
là tập hợp các khai báo hàm và các
hằng.
lớp cài đặt interface có nghĩa là lớp định nghĩa các
hàm được khai báo trong interface.
interface không tham gia vào cấu trúc phân cấp
lớp. 2 lớp không liên quan có thể cài đặt cùng 1
interface.