Đ tài 2. Nh p môn Javaề ậ
I. Vi t và th c hi n m t ch ng trình Java ế ự ệ ộ ươ
I.1 Tìm hi u mã ngu n m t ch ng trình đ n gi nể ồ ộ ươ ơ ả
1. /* Day la chuong trinh vi du*/
2. public class Vidu
3. {
4. public static void main(String[] args)
5. {
6. System.out.println("Hello, World!");
7. }
8. }
Dòng 1: Dòng chú thích trong m t ch ng trình Java. Trong khi l p trình, ta c n chú ýộ ươ ậ ầ
vi t các dòng chú thích đ mô t v mã ngu n. Đi u này r t quan tr ng khi ch ng trình l nế ể ả ề ồ ề ấ ọ ươ ớ
và g p l i, các dòng chú thích giúp ta nhanh chóng nh n ra vai trò và ý nghĩa c a t ng đo nặ ỗ ậ ủ ừ ạ
code.
Các chú thích trong ch ng trình Java đ c đ t trong c p /* và */ khi c n chú thíchươ ượ ặ ặ ầ
nhi u dòng ho c đ sau c p // khi ch chú thích m t dòng. Tuy nhiên các c p /* và */ hay đ cề ặ ể ặ ỉ ộ ặ ượ
dùng h n vì các đo n chú thích này s đ c t đ ng đ a vào tài li u khi ta dùng công cơ ạ ẽ ượ ự ộ ư ệ ụ
javadoc đ sinh tài li u cho mã ngu n.ể ệ ồ
Dòng 2: Khai báo m t l p có tên Vidu. ộ ớ
Dòng 3. Cùng v i dòng 8 t o thành m t c p {} dùng đ đánh d u vi c m và đóng choớ ạ ộ ặ ể ấ ệ ở
m t kh i l nh, trong tr ng h p này, t t c các l nh n m trong c p này đ u thu c ph m viộ ố ệ ườ ợ ấ ả ệ ằ ặ ề ộ ạ
c a l p Vidu.ủ ớ
Dòng 4: Khai báo hàm main. Trong Java, m i ch ng trình n u c n th c thi đ u b tọ ươ ế ầ ự ề ắ
đ u t hàm main. Trình thông d ch s tìm hàm main làm đi m kh i phát cho m t ng d ngầ ừ ị ẽ ể ở ộ ứ ụ
Java.
Dòng 5 và 7 cũng là đánh d u m và đóng cho m t kh i l nh thu c hàm main.ấ ở ộ ố ệ ộ
Dòng 6: Câu l nh in ra màn hình dòng ch “Hello, World!”. Các l nh trong Java luônệ ữ ệ
đ c k t thúc b i d u ;.ượ ế ở ấ
I.2. Th c hi n ch ng trình Java.ự ệ ươ
Đ th c hi n ch ng trình Java trong ví d trên, ta th c hi n theo các b c sau:ể ự ệ ươ ụ ự ệ ướ
1. Dùng m t trình so n th o b t kỳ ho c m t IDE Java thì càng t t đ so n ch ngộ ạ ả ấ ặ ộ ố ể ạ ươ
trình.
2. Ghi file v a so n v i tên Vidu.java. ừ ạ ớ đây, tên file ph i b t bu c là Vidu gi ng nhỞ ả ắ ộ ố ư
tên l p trong ch ng trình.ớ ươ Ph n m r ng cũng b t bu c là .java đ trình biên d ch Java bi tầ ở ộ ắ ộ ể ị ế
đây là file ch a mã ngu n Java. Gi s ghi vào th m c c:\JavaSample. ứ ồ ả ử ư ụ
3. G i c a s Command Line c a Windows: T Menu Start, ch n Run và gõ vào l nhọ ử ổ ủ ừ ọ ệ
“cmd”.
4. T d u nh c gõ l nh: ừ ấ ắ ệ
javac c:\JavaSample\Vidu.java
Sau l nh này, n u ch ng trình không có l i cú pháp, Java s sinh ra m t file mãệ ế ươ ỗ ẽ ộ
bytecode có tên Vidu.class m c đ nh cũng n m trong th m c c:\JavaSample.ặ ị ằ ư ụ
29
5. T d u nh c gõ l nh:ừ ấ ắ ệ
java c:\ JavaSample\Vidu.class
L nh này s thông d ch file mã bytecode Vidu.class và in ra màn hình dòng ch “Hello,ệ ẽ ị ữ
World!”.
đây, ta c n chú ý Windows không t đ ng hi u các l nh javac, java. Tuy nhiên, khiỞ ầ ự ộ ể ệ
cài đ t Java ta đã đ t đ ng d n m c đ nh đ n th m c ch a các l nh này là ặ ặ ườ ẫ ặ ị ế ư ụ ứ ệ
C:\Program Files\Java\jdk1.6.0_02\bin
Tr ng h p ch a đ t đ ng d n m c đ nh, ta ph i g i các l nh này v i đ ng d nườ ợ ư ặ ườ ẫ ặ ị ả ọ ệ ớ ườ ẫ
đ y đ c a nó.ầ ủ ủ
I.3. M t s chú ý khi l p trình Javaộ ố ậ
• Java phân bi t ch vi t hoa và vi t th ng.ệ ữ ế ế ườ
• Hàm main ph i n m trong file g i th c hi nả ằ ọ ự ệ
• Tên khai báo ph i trùng v i tên t p “Vidu.java”ả ớ ệ
• Hàm main trong Java luôn luôn là static
• Trong Java t t c hàm và th t c đ u ph i đ c đ t trong m t l p c th .ấ ả ủ ụ ề ả ượ ặ ộ ớ ụ ể
• Không đ c khai báo ph ng th c, hàm hay th t c bên ngoài l p.ượ ươ ứ ủ ụ ớ
• S d ng ph ng th c (method) đ thay th cho hàm và th t c.ử ụ ươ ứ ể ế ủ ụ
I.4. C u trúc m t ch ng trình Javaấ ộ ươ
/*Khai bao goi*/
package <tên gói>;
/*Khai bao thu vien*/
import <tên gói th vi n>;ư ệ
/*Khai bao lop chua ham main*/
public class <tên l p>ớ
{
/*Các thuoc tinh cua lop */
…………………….
/*Cac phuong thuc*/
…………………….
/*Hàm main*/
public static void main(String[] args)
{
// Các l nh trong hàm mainệ
}
}
/*Cac lop lien quan khac*/
class A
{
………….
}
class B
{
………….
}
30
Các thành ph n trong m t ch ng trình Java g m có:ầ ộ ươ ồ
1. Khai báo gói:
Cú pháp: package <tên gói>.
Khai báo này là không b t bu c v i m t ch ng trình Java. Trong tr ng h p ngắ ộ ớ ộ ươ ườ ợ ứ
d ng g m nhi u class và c n t ch c các class vào các gói riêng thì ta c n khai báo gói. Trongụ ồ ề ầ ổ ứ ầ
ch ng trình trên, class Vidu sau khi biên d ch s đ c đ t trong gói my.java. Tên c a gói cóươ ị ẽ ượ ặ ủ
ch a các d u “.” ch s bao g m, đây gói “java” n m trong gói “my” và class Vidu n m trongứ ấ ỉ ự ồ ở ằ ằ
gói “java”. Khi m t ch ng trình Java khác mu n truy c p t i l p Vidu, nó c n truy c p theoộ ươ ố ậ ớ ớ ầ ậ
đ ng d n gói “my.java.Vidu”.ườ ẫ
Th c ra, ý nghĩa quan tr ng c a gói là vi c t ch c m t cách logic các l p vào trongự ọ ủ ệ ổ ứ ộ ớ
các domain riêng đ ng i phát tri n ng d ng d dàng truy c p. Trong hàng ngàn class đ cể ườ ể ứ ụ ễ ậ ượ
Java h tr trong các gói th vi n, chúng đ u đ c nhóm l i theo ch c năng và m c đích sỗ ợ ư ệ ề ượ ạ ứ ụ ử
d ng v i tên gói có tính ch t g i ý. N u không làm nh v y, chúng ta s r t khó khăn đ tìmụ ớ ấ ợ ế ư ậ ẽ ấ ể
ra m t class đ s d ng.ộ ể ử ụ
2. Nh p th vi n.ậ ư ệ
Cú pháp: import <tên th vi n>ư ệ
N u có khai báo này, khi s d ng các class n m trong gói theo <tên th vi n> ta khôngế ử ụ ằ ư ệ
c n vi t đ y đ tên gói mà ch c n vi t tên class. Java dùng ký t “*” đ ng ý vi c nh p t tầ ế ầ ủ ỉ ầ ế ừ ể ụ ệ ậ ấ
c các class trong <tên th vi n>. Ví d : ả ư ệ ụ
import my.java.Vidu; // Nh p duy nh t class Vidu trong gói my.javaậ ấ
import my.java.*; // Nh p t t c các class có trong gói my.java, t t nhiên là bao g mậ ấ ả ấ ồ
c class Vidu. ả
Sau đây là m t ch ng trình ví d s d ng import:ộ ươ ụ ử ụ
import java.util.Date; //Khai báo th vi nư ệ
/*Ch ng trình in ra ngày tháng hi n hành*/ươ ệ
public class Application {
public static void main(String[] args) {
Date date = new Date(); //t o bi n đ i t ng thu c class Dateạ ế ố ượ ộ
System.out.println(“Hôm nay "+date);
}
}
đây, class Date đã đ c khai báo import nên không c n khai báo đ y đỞ ượ ầ ầ ủ
“java.util.Date” t i dòng s 5.ạ ố
3. Khai báo class, thu c tính, hàm thành ph n: Các khai báo này s đ c bàn chi ti tộ ầ ẽ ượ ế
trong m c “L p trình h ng đ i t ng trong Java”. ụ ậ ướ ố ượ
4. Khai báo hàm main: Không ph i t t c các class trong Java đ u ch a hàm main. Chả ấ ả ề ứ ỉ
có class đ c g i th c thi đ u tiên m i c n ch a hàm main. ượ ọ ự ầ ớ ầ ứ
5. Khai báo các l p khác: Thông th ng 1 file ch ng trình Java chúng ta ch khai báo 1ớ ườ ươ ỉ
class. Tuy nhiên khi class đó quá ph c t p chúng ta có th tách ra thành các class khác.ứ ạ ể
Trong s 5 ph n trên, t t c các class đ u có ph n 3, các ph n còn l i có th có ho cố ầ ấ ả ề ầ ầ ạ ể ặ
không tùy theo nhu c u.ầ
II. Các ki u d li u trong Javaể ữ ệ
II.1 Các ki u d li u s nguyênể ữ ệ ố
Java có 4 ki u s nguyên:ể ố
31
int 4 bytes T –2,147,483,648 đ n 2,147,483, 647 ừ ế
short 2 bytes T –32,768 đ n 32,767ừ ế
long 8 bytes T –9,223,372,036,854,775,808ừ
đ n9,223,372,036,854,775,807ế
byte 1 byte T –128 đ n 127ừ ế
II.2 Các ki u s th cể ố ự
Java có 2 ki u s th c d u ch m đ ng:ể ố ự ấ ấ ộ
float 4 bytes X p x ±3.40282347E+38F ấ ỉ
double 8 bytes X p x ±1.79769313486231570E+308 ấ ỉ
S d u ch m đ ng có th nh n các giá tr :ố ấ ấ ộ ể ậ ị
• Vô c c âm/d ng.ự ươ
• S âm/d ng.ố ươ
• S 0.ố
• NaN (không là m t s = 0.0/0.0f).ộ ố
II.3 Ki u ký t (character)ể ự
Là ki u d li u v ký t .ể ữ ệ ề ự
M t bi n ộ ế char s có m t giá tr là ẽ ộ ị m t ký tộ ự Unicode.
II.4 Ki u logic (boolean)ể
Là ki u d li u ch có hai giá tr true và false dùng đ xác đ nh k t qu m t đi u ki n.ể ữ ệ ỉ ị ể ị ế ả ộ ề ệ
Chú ý: ki u ể boolean không đ c th hi n là 0 và 1.ượ ể ệ
II.5 Ki u chu iể ỗ
Java xem chu i là m t đ i t ng.ỗ ộ ố ượ
Bi n đ i t ng chu i th ng đ c khai báo t l p String n m trong góiế ố ượ ỗ ườ ượ ừ ớ ằ
java.lang.String.
II.6 Chuy n đ i gi a các ki u sể ổ ữ ể ố
32
byte short int
long
double
float
char
III. Khai báo bi n và h ng trong Javaế ằ
III.1 Quy t c đ t tên bi nắ ặ ế
Khi khai báo các bi n trong ch ng trình Java, ta c n chú ý tuân th các đi m sau:ế ươ ầ ủ ể
• Ch b t đ u b ng m t ký t (ch ), m t d u g ch d i (_) hay m t d u dollardỉ ắ ầ ằ ộ ự ữ ộ ấ ạ ướ ộ ấ
($).
• Không có kho ng tr ng gi a tên.ả ố ữ
• Sau ký t đ u, có th dùng các ký t (ch ), ký t s , d u dollard, d u g chự ầ ể ự ữ ự ố ấ ấ ạ
d i.ướ
• Không trùng v i các t khoá.ớ ừ
III.2 Khai báo bi nế
Các bi n trong Java r i vào hai tr ng h p:ế ơ ườ ợ
• Toán h c: Các bi n có ki u nguyên th y c a Java đ u thu c d ng này. Sau khiọ ế ể ủ ủ ề ộ ạ
khai báo, bi n đ c c p phát m t vùng nh c đ nh tùy theo kích th c c aế ượ ấ ộ ớ ố ị ướ ủ
ki u d li u c a bi n đó.ể ữ ệ ủ ế
• Đ a ch : Các bi n đ i t ng đ c l u d ng này. Bi n ch l u giá tr đ a chị ỉ ế ố ượ ượ ư ở ạ ế ỉ ư ị ị ỉ
đ u c a m t vùng nh đ c c p phát cho đ i t ng.ầ ủ ộ ớ ượ ấ ố ượ
Ví d khai báo cho t ng ki u bi n toán h c:ụ ừ ể ế ọ
byte i;
short j;
int k;
long x;
float y;
double z;
char ch;
boolean bQuit;
Các bi n đ a ch th ng s d ng đ l u tr các đ a ch m ng, con tr , đ i t ng.ế ị ỉ ườ ử ụ ể ư ữ ị ỉ ả ỏ ố ượ
Ví d v khai báo bi n ki u đ a ch :ụ ề ế ể ị ỉ
String strHello; //khai báo m t chu iộ ỗ
AudioClip music; // ví d l p c a AudioClipụ ớ ủ
Kh i đ ng giá tr cho bi nở ộ ị ế
Ví d v kh i đ ng bi n ngay lúc khai báo:ụ ề ở ộ ế
byte i = 3;
short j = 10;
int k = 1;
long x = 1234567L;
float y = 1.25f;
double z = 23.45d;
char ch = ‘T’;
boolean bQuit = true;
String strHello = “Hello everybody”;
đây c n chú ý r ng khi kh i t o giá tr cho các ki u s nên xác đ nh rõ ki u d li uỞ ầ ằ ở ạ ị ể ố ị ể ữ ệ
c a giá tr . ủ ị
33
Các giá tr m c đ nhị ặ ị
byte 0
short 0
int 0
long 0L;
float 0.0f;
double 0.0d;
char null;
boolean false;
Các bi n d n su tế ẫ ấ null
III.3 Bi n ki u m ngế ể ả
Khi c n làm vi c v i m t t p các giá tr có cùng ki u d li u, ta có th s d ng m tầ ệ ớ ộ ậ ị ể ữ ệ ể ử ụ ộ
bi n m ng đ l u tr chúng.ế ả ể ư ữ
Khai báo:
M t bi n m ng đ c khai báo theo hai cách:ộ ế ả ượ
• S d ng c p ngo c vuông đ t sau tên bi n.ử ụ ặ ặ ặ ế
• S d ng c p ngo c vuông đ t sau ki u d li u.ử ụ ặ ặ ặ ể ữ ệ
Ví d :ụ
int [] intArray; ho c int intArray[]; đ u cho ta m t m ng s nguyên có tên la intArray.ặ ề ộ ả ố
Thông th ng ta dùng ki u khai báo th nh t đ có th khai báo nhi u bi n m ngườ ể ứ ấ ể ể ề ế ả
cùng ki u d li u:ể ữ ệ
int [] intArray1, intArray2, intArray3;
Đ nh v m ngị ị ả
Sau khi khai báo, b n thân m ng ch a xác đ nh hay ch a đ c đ nh v vì ch a đ cả ả ư ị ư ượ ị ị ư ượ
c p phát vùng nh . Do đó, m ng c n đ c c p phát vùng nh tr c khi s d ng. ấ ớ ả ầ ượ ấ ớ ướ ử ụ
Dùng t khoá new đ đ nh v cho m t m ng trong vùng nh , ví d :ừ ể ị ị ộ ả ớ ụ
int IntArray[] = new int[100];//t o m ng 100ptạ ả
float floatArray[];
floatArray = new float[10]; //t o m ng 10 ptạ ả
Kh i t o giá tr cho m ng ở ạ ị ả
Ta cũng có th kh i t o m t m ng b ng cách li t kê các ph n t c a nó, ví d :ể ở ạ ộ ả ằ ệ ầ ử ủ ụ
int IntArray[] = {1, 2, 3, 4, 5};
char [] charArray = {‘a’, ‘b’, ‘c’};
IntArray[] = new int[] {1, 2, 3, 4, 5};
Truy c p các ph n t c a m ngậ ầ ử ủ ả
Các ph n t trong m t m ng luôn đ c đánh s b t đ u t s 0. Ki u d li u c a chầ ử ộ ả ượ ố ắ ầ ừ ố ể ữ ệ ủ ỉ
s là ki u int. Tuy nhiên n u dùng ki u char thì Java s t đ ng chuy n sang mã ASCII t ngố ể ế ể ẽ ự ộ ể ươ
ng. Ví d b[‘a’] t ng ng v i b[97].ứ ụ ươ ứ ớ
Ph n t đ u tiên là ph n t th 0, và ph n t cu i cùng c a m t m ng có n ph n t làầ ử ầ ầ ử ứ ầ ử ố ủ ộ ả ầ ử
n-1. Các ph n t c a m ng đ c truy c p m t cách tr c ti p b ng ch s c a nó.ầ ử ủ ả ượ ậ ộ ự ế ằ ỉ ố ủ
Ví d :ụ
int IntArray[] = {1, 2, 3, 4, 5};
int a = IntArray[2];//a=3
int b = IntArray[0];//b=1
Ta có th gán các giá tr c a m ng thông qua truy nh p vào t ng ph n t c a m ng.ể ị ủ ả ậ ừ ầ ử ủ ả
34