public class Hello { public static void mainString[] args throws Exception { BufferedReader in = new BufferedReadernew... //cac method hay behavior-hanh vi cua doi tuong public void Nh
Trang 1Tr Giúpợ - Tìm Ki mế - Thành Viên - L chị
Phiên b n đ y đ : ả ầ ủ H c Java qua các ví d c thọ ụ ụ ể
[ C a S Tin H c ]ử ổ ọ > L p trìnhậ > Công ngh Java/J2MEệ
Trang: 1, 2
PhươngĐi p2410ệ
Dec 31 2007, 12:30 AM
Bài 1 - Hello world
Bài 2 – In ra chu i nh p vào ỗ ậ
Bài đ u tiên c a b n, b n đã h c cách đ Java in cái gì đó ra mànầ ủ ạ ạ ọ ểhình, trong bài này, b n s h c cách nh p vào cái gì đó và Java inạ ẽ ọ ậcái đó ra màn hình Gõ cái này đi b n (l u ý, b n ph i gõ, khôngạ ư ạ ả
được copy và paste)
CODE
import java.io.*;
public class Hello {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new
Trang 2public class Core {
public static void main(String[] args) {
System.out.println("Hello,Everybody in the World!"); }
}
public class Core b n b t đ u m t l p Javaạ ắ ầ ộ ớ
public static void main(String[] args) đây là m t phộ ương th cứ main trong Java, đ cho chể ương trình ch y đạ ược T m th i b nạ ờ ạ
public class Hello {
public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new
Trang 3public class Hello {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new
Trang 4thôi nhé, sau đó, hãy quan tâm đ n bài hôm nayế
int ketqua t c là khai báo bi n ketqua ki u intứ ế ể
ketqua = a+b t c là gán k t qu m t bi u th c tính toán ( đây làứ ế ả ộ ể ứ ở
bi n a + bi n b ) cho bi n ketquaế ế ế
System.out.println("Ket qua bai toan a+b la: “ + ketqua) thì đ nơ
gi n r i, in cái dòng đó ra, ch khác là nó đ a bi n ketqua c aả ồ ỉ ư ế ủ
b n vào chu i đó ạ ỗ
PhươngĐi p2410ệ
Dec 31 2007, 12:35 AM
Bài 4 – Chia h t, chia l y d ế ấ ư
*Lí thuy t: m t s ki u bi n trong Java ế ộ ố ể ế
B n đã bi t 2 ki u String (chu i) và int (nguyên) bây gi b nạ ế ể ỗ ờ ạ
Trang 5public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new
float ketqua = a/b;
System.out.println("Ket qua bai toan a+b la: " + ketqua); }
}
B n th bài toán xem, nh đ ng nh p s b=0 nhé, chuy n y sạ ử ớ ừ ậ ố ệ ấ ẽ
x lí sau.ử
Ví d nh p a=5, b=2, k t qu in ra s là 2.5, thú v ph i không ?ụ ậ ế ả ẽ ị ảBây gi cũng bài toán y, b n thay đ i nh sauờ ấ ạ ổ ư
CODE
import java.io.*;
public class Hello {
public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new
float ketqua = a/b;
System.out.println("Ket qua bai toan a+b la: " + ketqua); }
}
Trang 6Cũng nh p a=5, b=2, l n này k t qu in ra là … 2ậ ầ ế ả
Phép chia s là phép chia h t n u c 2 toán h ng đ u ki uẽ ế ế ả ạ ề ể
nguyên, g i là chia l y nguyên (/) hay divọ ấ
Bây gi cũng chờ ương trình y mà ta thay đ i l i chút xíu xem saoấ ổ ạCODE
import java.io.*;
public class Hello {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new
float ketqua = a%b;
System.out.println("Ket qua bai toan a+b la: " + ketqua); }
Trang 7Trong cái constructor này hãy l u ý m t đi u, đó là bi n this.ư ộ ề ế
Bi n this có nghĩa là b n thân cái class đó ( đây là class Person).ế ả ởTrong class Person có m t property là age, câu this.age = age cóộnghĩa là cái thu c tính age c a class Person s nh n giá tr cáiộ ủ ẽ ậ ị ở
đ i s age do constructor Person(int age) đ a vào.ố ố ư
L u ý là m i class đ u có s n ít nh t m t constructor không cóư ọ ề ẵ ấ ộ
đ i s ố ố
Đây là m t class, class này ngoài property, constructor còn có m tộ ộ
Trang 8Khi ta vi t câu l nh sauế ệ
Person personOne = new Person(12);
Thì ta đã t o ra m t instance (th hi n) là personOne c a classạ ộ ể ệ ủPerson
PhươngĐi p2410ệ
Dec 31 2007, 12:43 AM
Bài 5 – L p trình OOP (ti p) ậ ế
Khai báo m t classộ
public abstract class MyClass {}
T th 1 là khai báo quy n truy xu t và k th a,có 3 lo iừ ứ ề ấ ế ừ ạ
-public:được phép truy xu t t b t c n i nào và b t c l p nàoấ ừ ấ ứ ơ ấ ứ ớcũng được quy n k th aề ế ừ
-protected:ch có phỉ ương th c cùng gói đứ ược phép truy xu t vàấ
k th aế ừ
-private:ch có phỉ ương th c cùng gói đứ ược phép truy xu t nh ngấ ư không l p nào đớ ược phép k th aế ừ
Trang 9-n u không khai báo,m c đ nh là protectedế ặ ị
T th 2 là khai báo m t l p tr u từ ứ ộ ớ ừ ượng hay là không tr u từ ượngNhiem vu: tao 1 lop Person, tao tiep 2 lop Students va Teachers ke thua lop Person, tao lop Execute chua ham chinh de chay chuong trinh
//cac method hay behavior-hanh vi cua doi tuong
public void Nhap()
{
hoten = Console.readLine("Nhap ho ten:");
diachi = Console.readLine("Nhap dia chi:");
}
//vi la 1 class thuoc loai abstract nen Person duoc phep khai bao cac method khong co noi dung, noi dung cua class In se duoc cac lop ke thua no them vao noi dung cua rieng no
public abstract void In();
public abstract int Tinhluong();
}
Trang 12Khai báo m t thu c tính: ộ ộ
Khai báo 1 thu c tínhộ
public static void temp;
T th 1 là khai báo quy n truy xu t,có 3 lo i ừ ứ ề ấ ạ
-public:được phép truy xu t t b t c n i nàoấ ừ ấ ứ ơ
-protected:ch có l p con m i đỉ ớ ớ ược phép truy xu tấ
-private:ch có l p đó xài(thu c tính riêng c a nó)ỉ ớ ộ ủ
-n u không khai báo,m c đ nh là protectedế ặ ị
b.T th 2 là khai báo cách truy xu t(static) ừ ứ ấ
static(tĩnh)
-n u không khai báo,m c đ nh là không tĩnhế ặ ị
T t c các đ i tấ ả ố ượng th hi n t l p cha đ u để ệ ừ ớ ề ược phép thay
đ i giá tr c a các thu c tính không tĩnh,còn giá tr c a thu c tínhổ ị ủ ộ ị ủ ộtĩnh thì không được phép thay đ iổ
CODE
public class Car
{
public string branch;
public int cost;
public static int tire=4;
}
Nh ví d trên,t t c các l p con c a l p Car (như ụ ấ ả ớ ủ ớ ư
ToyotaCar,Peugeot,Mazda…) đ u đề ược phép thay đ i các thu cổ ộ tính branch hay cost đ phù h p cho riêng mình,nh ng thu c tínhể ợ ư ộtire (s bánh xe) không đố ược phép thay đ i vì là thu c tính tĩnhổ ộNói cách khác, ch có m t và ch m t thu c tính có tên là tireỉ ộ ỉ ộ ộ
Trang 13trong class Car và t t c các class con c a nó, vì v y g i là tĩnhấ ả ủ ậ ọ
Khai báo m t hành viộ
M t phộ ương th c đứ ược khai báo nh sauư
public static double ketqua()
Có 3 ch đ nh truy xu t là public, protected và private ỉ ị ấ
-public:được phép truy xu t t b t c n i nàoấ ừ ấ ứ ơ
-protected:ch có l p k th a l p ch a nó đỉ ớ ế ừ ớ ứ ược truy xu tấ
-private:ch l p ch a nó đỉ ớ ứ ược truy xu t(dùng n i b )ấ ộ ộ
-n u không khai báo,m c đ nh là protectedế ặ ị
Có 6 ch đ nh thu c tính là static, abstract, final, native,ỉ ị ộ
synchronized (đ ng b ) và volatile (linh ho t)ồ ộ ạ
N u là m t phế ộ ương th c không tĩnh, đ u tiên b n ph i kh i t oứ ầ ạ ả ở ạ
m t đ i tộ ố ượng,sau đó m i đớ ược phép g i phọ ương th cứ
TestObject test=new TestObject();
test.NonStaticMethod();
N u là m t phế ộ ương th c tĩnh,b n đứ ạ ược phép g i tr c ti p t l pọ ự ế ừ ớTestObject.StaticMethod();
abstract(tr u từ ượng)
M t phộ ương th c tr u tứ ừ ượng không có n i dung.N i dung c aộ ộ ủ
nó s đẽ ược các l p con tùy bi n và phát tri n theo hớ ế ể ướng c aủ riêng nó
- final: không th để ược extends hay override (ghi đè)
Trang 14- native: thân phương th c vi t b ng C hay C++ứ ế ằ
- synchronized: ch cho phép 1 thread truy c p vào kh i mã ỉ ậ ố ở cùng m t th i đi mộ ờ ể
- volatile: s d ng v i bi n đ thông báo r ng giá tr c a bi n cóử ụ ớ ế ể ằ ị ủ ế
th để ược thay đ i vài l n vì v y không ghi vào thanh ghiổ ầ ậ
.T th 3 là giá tr tr v N u không có giá tr tr v thì là void ừ ứ ị ả ề ế ị ả ề
l p cha, nh ng có th implements nhi u giao di n.ớ ư ể ề ệ
Giao di n đệ ược khai báo gi ng nh 1 l p, cũng có state vàố ư ớ
behavior Nh ng state c a giao di n là final còn behavior làư ủ ệ
static string maker = “My Corp”;
static string phone = “555-7767”;
//behavior duoi day la abstract, tuc la khong co noi dung
public int getPrice(int id);
}
Bây gi , ta s vi t m t class có cài đ t (implements) giao di nờ ẽ ế ộ ặ ệ này
CODE
Trang 15public class Shoe implements Product
Hãy t o 1 th m c có tên là Transportạ ư ụ
Bên trong th m c này hãy t o 2 file là Car.java và Bicycle.javaư ụ ạ
public String manufacturer;
public int year;
}
Bicycle.java-CODE
Trang 16package Transport;
public class Bicycle
{
public int cost;
public Bicycle(int cost)
{
this.cost = cost;
}
}
Nh v y là ta đã t o ra 1 gói ch a 2 l p là Car và Bicycle Bâyư ậ ạ ứ ớ
gi ta có 1 chờ ương trình mu n s d ng gói này làố ử ụ
PhươngĐi p2410ệ
Dec 31 2007, 12:48 AM
Trang 17private float cost;
public float CalculateSalePrice()
* n p ch ng (overload) và ghi đè (override) ạ ồ
Nh ng phữ ương th c đứ ược n p ch ng là nh ng phạ ồ ữ ương th cứ trong cùng m t l p, có cùng m t tên nh ng danh sách đ i sộ ớ ộ ư ố ố khác nhau
Phương th c đứ ược ghi đè là phương th c có m t l p cha,ứ ặ ở ớ
được xác đ nh là phị ương th c chung cho các l p con, r i xu tứ ớ ồ ấ
hi n các l p conệ ở ớ
N p ch ng là m t hình th c đa hình (polymorphism) trong quáạ ồ ộ ứtrình biên d ch (compile) còn ghi đè là trong quá trình th c thiị ự(runtime)
PhươngĐi p2410ệ
Dec 31 2007, 12:49 AM
Trang 18Bài 6 – Các ki u d li u nguyên th y và phép toán ể ữ ệ ủ
int i,j; //2 bi n i và j có ki u d li u là intế ể ữ ệ
char ch='A'; //bi n ch ki u char kh i t o giá tr đ u 'A'ế ể ở ạ ị ầ
*Khai báo h ngằ
H ng đằ ược khai báo v i t khóa final Ví d :ớ ừ ụ
final float PI = 3.14159;
*Phép toán
Phép toán c a Java gi ng C Trong class java.lang.Math có m tủ ố ộ
s method đ dùng trong toán h c nh sauố ể ọ ư
Trang 19H u h t các phép toán đi u có trình t k t h p t trái sang ph i,ầ ế ề ự ế ợ ừ ả
ch có các phép sau là t ph i sang tráiỉ ừ ả
n u em đ p thì tôi s c a em không thì tôi c a đ a khácế ẹ ẽ ư ư ứ
IF em đ p THEN tôi s c a em ELSE tôi c a đ a khácẹ ẽ ư ư ứ
IF(em đ p) tôi s c a em;ẹ ẽ ư
Trang 20if(a>b) System.out.println(“So lon nhat la “+a);
else System.out.println(“So lon nhat la “+b);
*Ta xây d ng m t bài toán làm tròn s ự ộ ố
Nh p vào m t s b t kì N u ph n th p phân s này >=0.5, làmậ ộ ố ấ ế ầ ậ ốtròn tăng lên m t đ n v , ngộ ơ ị ượ ạc l i gi m đi m t đ n v ả ộ ơ ị
CODE
import java.io.*;
public class Hello {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new
Phép đi u ki n bi u di n nh sau a=a>b?2:0 nghĩa là n u chânề ệ ể ễ ư ế
tr c a a>b là đúng thì a=2 n u là sai thì a=0ị ủ ế
* Sau khi h c xong if, b n có r t nhi u bài t p đ mà … làm, cọ ạ ấ ề ậ ể ổ
đi n nh t v n là gi i phể ấ ẫ ả ương trình b c m t và hai, ngoài ra cònậ ộnhi u bài t p khác n a đây ch có gi i phề ậ ữ Ở ỉ ả ương trình b c m t.ậ ộ
B n nên tìm nhi u bài t p đ t làm trạ ề ậ ể ự ước khi ti p t c ph n k ế ụ ầ ế
Ví d : phụ ương trình b c 1ậ
Trang 21import java.io.*;
public class Hello {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new
B n đã h c xong if B n mu n dùng vòng l p if đ đánh giáạ ọ ạ ố ặ ể
đi m s nh p vào B n s vi t chể ố ậ ạ ẽ ế ương trình sau đây
CODE
import java.io.*;
public class Hello {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
Trang 22System.out.print("Nhap diem so: ");
int diem = Integer.parseInt(in.readLine());
public class Hello {
public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
System.out.print("Nhap diem so: ");
int diem = Integer.parseInt(in.readLine());
Trang 23*break v i switch: break s thoát ngay ra kh i kh i l nh trongớ ẽ ỏ ố ệthân c a switch ủ
Java có kh năng t chuy n ki u b t c d li u ki u s nào khiả ự ể ể ấ ứ ữ ệ ể ố
c ng vào String Dù n là int, float, double đ u có th chuy nộ ề ể ể
char ch = s1.charAt(4); //t c là b ng 'o'ứ ằ
Đây là method tìm kí t th i trong String, các kí t trong Stringự ứ ự
Trang 24a<0 s2<s1
a=0 s2=s1
So sánh gi a s2 và s1 là so sánh th t gi a kí t đ u c a haiữ ứ ự ữ ự ầ ủchu i so đi, ví d "kc" > "kazbe"ỗ ụ
nh ng ngư ượ ạc l i thì ph i dùng các method tả ương ng.ứ
Các method này n m trong góijava.lang, trong các class Byte,ằShort, Integer, Long, Float, Double
Trang 25*continue v i for: continue s khi n vòng for b t đâu 1 chu trìnhớ ẽ ế ắ
m i và b qua t t c các l nh bên dớ ỏ ấ ả ệ ưới nó
Trang 28Hai câu có th vi t l i thành m t câuể ế ạ ộ
int[] a = new int[100];
Trang 29Các method n m trong class java.util.Arraysằ
int[] s = {28,7,14,11};
int n = Arrays.binarySearch(s,14); n s b ng 2ẽ ằ
M ng nhi u chi uả ề ề
int[][] = new int[100][50];
Ho c khai báo 1 m ng có giá tr đ u Đây là m ng 2 chi u g mặ ả ị ầ ả ề ồ
Trang 30Khi ch y đo n mã này b n s th y xu t hi n thông báoạ ạ ạ ẽ ấ ấ ệ
java.lang.ArithmeticException: divide by zero
Và chương trình s thoát ra ngay lúc đó Mu n chẽ ố ương trình
ch y ti p và không thoát ra, ta đón "b t" ngo i l này, đ a raạ ế ắ ạ ệ ư
Đ "ném" ngo i l do b t c dòng mã nào trong m t phể ạ ệ ấ ứ ộ ươ ng
th c sinh ra, b n có th khai báo đ ném b ngo i l đóứ ạ ể ể ỏ ạ ệ
CODE
public void divide() throws Exception
{
Trang 32Dec 31 2007, 05:58 AM
Bài 15 - Vector (m ng không gi i h n s ph n t ) ả ớ ạ ố ầ ử
Các method trong bài này n m 2 class java.util.Vector vàằ ở
java.util.Enumeration
Khai báo
Vector vt = new Vector();
Nh p d li u cho m t Vector (class Console n m trong góiậ ữ ệ ộ ằ
corejava)
L u ý là m i ph n t c a Vector đ u ph i là m t đ i tư ỗ ầ ử ủ ề ả ộ ố ượng, nên
ta ph i có new Integer(n) khi mu n đ a vào m t bi n ki u int.ả ố ư ộ ế ể
Tương t v i Byte, Long, Float, ự ớ
Trang 33static int currentCount;
static class Apple
Java s làm xu t hi n 2 file là TestProgram.class vàẽ ấ ệ
TestProgram$Apple.class u đi m khi s d ng l p n i là:Ư ể ử ụ ớ ộ
- th hi n tính đóng gói caoể ệ
Trang 34Bài 17 - T o t p tin jar t ch y ạ ậ ự ạ
Gi s chả ử ương trình c a b n có vài file class trong đó fileủ ạ
chương trình chính là MainPro.class ch ng h n.ẳ ạ
B n hãy t o m t file l y tên là mymf.mf có n i dung nh sauạ ạ ộ ấ ộ ưMain-Class: MainPro
B t bu c ph i chính xác nh th (t c là ph i có c xu ng dòng),ắ ộ ả ư ế ứ ả ả ốkhông thì trình ch y jar không hi u đạ ể ược
Sau đó b n vào %JAVA_HOME%\bin\ chép t t c các t p tinạ ấ ả ậ.class c a ng d ng và c mymf.mf vào đó, r i ch y jar.exe v iủ ứ ụ ả ồ ạ ớ tham s dòng l nh nh sauố ệ ư
jar cmfv mymf.mf MyProgram.jar *.class
Tương t n u b n mu n đ a thêm 2 th m c dir1 và dir2 vô fileự ế ạ ố ư ư ụJAR thì b n cũng gõạ
jar cmfv mymf.mf MyProgram.jar *.class dir1 dir2
Trình jar s t o file MyProgram.jar (tên khác tùy b n) có thẽ ạ ạ ể
Trang 35ch y đạ ược, không ph i dùng l nh java hay gi s không có IDEả ệ ả ửquen thu c c a b n ộ ủ ạ
JFrame frame=new JFrame("Main Frame");//Main
Frame la ten cai cua so
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//ham dong cua so lai
JLabel label=new JLabel("Hello Everybody, label
contain context");//mot doi tuong do hoa
frame.getContentPane().add(label);//dua doi tuong do hoa vao trong frame
frame.pack();//"dong goi" lai toan bo trinh do hoa
frame.setVisible(true);//hien thi trinh do hoa ra man hinh }
}
Đây là m t Frame đ n gi n khác, nh ng có th dùng d dàng choộ ơ ả ư ể ễ
vi c m r ng chệ ở ộ ương trình
Trang 36Container container = getContentPane();
public Execute(String title)
{
super(title); //tuong duong JFrame(title)
Label label=new Label("Hello Everybody, label contain context");
JButton b=new JButton("Vi\u1EC7t Nam");
\u1EC7 là mã Unicode c a kí t mà Java h tr T t c kí tủ ự ệ ỗ ợ ấ ả ự
Vi t đ u đệ ề ược h tr trong Latin và Latin Extendỗ ợ
L u ý là ch có javax.swing m i h tr , java.awt không h tr ư ỉ ớ ỗ ợ ỗ ợ
PhươngĐi p2410ệ
Dec 31 2007, 09:34 AM
Trang 37Bài 2 - Cài đ t b nghe và s ki n cho các đ i t ặ ộ ự ệ ố ượ ng đ h a ồ ọ
nh ng s ki n c a b nghe đó Đ i tữ ự ệ ủ ộ ố ượng eventQuit là m tộ
instance c a class EventQuit Đ cài đ t b nghe này cho đ iủ ể ặ ộ ố
tượng đ h a button ta dùng phồ ọ ương th c addActionListener.ứ
Container container = getContentPane();
public Core(String title)
{
super(title);
Button button = new Button("My button");
EventQuit eventQuit=new EventQuit();
Trang 38JFrame frame = new JFrame("My frame");
final JButton button = new JButton("My button");
}
});
frame.add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
Trang 39Bài 3 - setLayout(null) đi đôi v i setBounds ớ
setLayout m nh nh t trong Swing là setLayout(null) cho đ iạ ấ ố
tượng add, còn đ i v i đ i tố ớ ố ượng b add thì setBounds, cú phápịsetBounds(x,y,width,height)
Trên monitor, Java tính đi m có t a đ (0,0) là đi m trái trênể ọ ộ ể
cùng Sau đó tr c hoành (x) là chi u ngang monitor t trái sangụ ề ừ
ph i và tr c tung (y) là chi u d c monitor t trên xu ng dả ụ ề ọ ừ ố ưới
Phương th c này s t o ra m t hình ch nh t o bao quanh đ iứ ẽ ạ ộ ữ ậ ả ố
tượng b add, hình ch nh t này có t a đ góc đ u tiên là (x,y) vàị ữ ậ ọ ộ ầdài width cao height Ví d nh bài sau:ụ ư
frame.setVisible(true);
Trang 40}
}
Nh v y là chúng ta đã setLayout(null) cho frame và l n lư ậ ầ ượ tsetBounds (kích thước cũng nh v trí) cho 2 button V y đ setư ị ậ ểkích thước cũng nh v trí cho chính frame thì dùng 2 phư ị ươ ng