NG I - B T Đ U V I JAVA Ắ ƯƠ Ầ Ớ
ạ
ọ ể ậ ạ ạ ư c copy và paste)
ộ ớ ẳ t i, b n s h c Java qua các ví d , r t nhi u ví d , lí thuy t thì b n ch h c t ạ ế ề ể ụ ỏ ả ờ ỉ ọ ừ ừ ụ ụ ấ ắ ầ ạ ẽ ọ
ng trình Java ế ươ
ộ ớ ạ ươ ứ ể ộ ng trình ch y đ ng th c main trong Java, đ cho ư ế ạ ượ ờ ạ ươ ạ ệ ỉ i b ng } ỗ ằ ứ ạ ằ ươ ằ ả ọ ớ ọ ế ằ
c in ra. ẽ ượ ử ế ậ ả ố
CH Bài 1 – Hello world B n hãy xem bài c a anh CEO trong JVN ủ 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 đ ượ ả import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Your name is: "); String str; str = in.readLine(); System.out.println("Welcome " + str + " to Java"); } } Xin h i, tôi đã b t đ u v i m t vài ví d , mà tôi ch ng hi u cái gì c . ả Xin tr l thôi. *Lí thuy t: c u trúc m t ch ộ ấ public 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 c. T m th i b n ph i gõ y nh th này ch ả System.out.println("Hello,Everybody in the World!") đây là m t câu l nh trong Java, đ n ơ ộ gi n nó ch in ra chu i n m trong 2 d u “” ra màn hình. ấ M i l p và ph ng th c trong Java m ra b ng { và đóng l ở M i câu l nh trong java k t thúc b ng ; ệ Bài 3 – Bi n trong Java ế import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Nhap a: "); int a = Integer.parseInt(in.readLine()); System.out.print("Nhap b: "); int b = Integer.parseInt(in.readLine()); int ketqua; ketqua = a+b; System.out.println("Ket qua bai toan a+b la: “ + ketqua); } } Nh p th 2 s a và b vào đi b n, k t qu bài toán a+b s đ ạ *Lí thuy t:ế import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
ng trình này, b n ch nên quan tâm đ n dòng ỉ ờ ạ ế ể ạ ỗ
ầ ứ ư ng trình đ u, có khác là + str + t c là đ a ỗ ộ ế ế ỉ ế
ả ẩ ỉ ầ ờ ừ ư ệ i thích ậ ạ ng trình ch y ạ ể ươ ố ỗ ộ ư ỗ ư ứ ế ứ ả ộ ể ể ế ế ở
ả ồ ơ ủ ạ ế ỗ ỉ
t 2 ki u String (chu i) và int (nguyên) bây gi ế ế ể ta b t đ u bài toán ví d ờ ạ ỗ t s khác nhau r i ch . Bây gi ế ự t thêm ki u float (th c) ắ ầ ể ố ự ạ b n bi ờ ạ ố ự ụ ứ ồ
ệ ấ ẽ ử ạ ớ ừ ả ả ị cũng bài toán y, b n thay đ i nh sau ạ ử ụ ậ ờ ế ấ ư
System.out.print("Your name is: "); String str; str = in.readLine(); System.out.println("Welcome " + str + " to Java"); } } T m th i, trong ch ươ String str khai báo bi n str ki u chu i, và ế System.out.println("Welcome " + str + " to Java") Đây cũng là dòng System.out.println nh ch ư ươ m t bi n vào chu i in ra. Ch đ n đó thôi nhé, sau đó, hãy quan tâm đ n bài hôm nay System.out.print("Nhap a: "); int a = Integer.parseInt(in.readLine()); System.out.print("Nhap b: "); int b = Integer.parseInt(in.readLine()); int ketqua; ketqua = a+b; System.out.println("Ket qua bai toan a+b la: “ + ketqua); Gi ớ import b n nh p class hay th vi n chu n, t m th i đ ng quan tâm nó là gì, ch c n nh là ạ có nó đ ch System.out.print in ra m t chu i, nh ng không xu ng dòng System.out.println in ra m t chu i, nh ng xu ng dòng ố ộ 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 đó. ư 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 S nguyên và s th c b n bi import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Nhap a: "); float a = Float.parseFloat(in.readLine()); System.out.print("Nhap b: "); float b = Float.parseFloat(in.readLine()); 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 ổ import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Nhap a: "); int a = Integer.parseInt(in.readLine());
ầ ậ ọ ấ ề ể ẽ ế ả ế ế ả
cũng ch i chút xíu xem sao ng trình y mà ta thay đ i l ờ ấ ươ ổ ạ
ầ ả ả ế ấ ư ố ậ ế ế ế ấ ư ứ ể ả ự ng h p đó, b n dùng “ép ki u” ườ ể ạ ợ
ậ ủ
ộ ộ
ở ạ ủ ộ
ư ế ế ề ả ộ ở ộ ộ cái đ i s age do constructor Person(int age) đ a vào. ị ở ư ẽ ậ ố ố ộ ề ẵ ọ ộ ộ
System.out.print("Nhap b: "); int b = Integer.parseInt(in.readLine()); float ketqua = a/b; System.out.println("Ket qua bai toan a+b la: " + ketqua); } } Cũ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 import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Nhap a: "); int a = Integer.parseInt(in.readLine()); System.out.print("Nhap b: "); int b = Integer.parseInt(in.readLine()); float ketqua = a%b; System.out.println("Ket qua bai toan a+b la: " + ketqua); } } Cũng nh p a=5, b=2, l n này k t qu in ra là … 1 Đây là k t qu phép chia l y d 5 chia cho 2, g i là chia l y d (%) hay mod ọ ấ *Th n u tôi mu n 2 s nguyên chia nhau mà ra ki u th c ch không ph i phép chia l y ố nguyên thì sao ? Trong tr int a=5,b=2;float ket qua; ketqua=(float)a/b; Bài 5 – L p trình OOP B n xem bài c a anh CEO trong JVN ạ class Đây là m t class, class này có hai property (thu c tính) là name và age public class Person { String name; int age; } Đây là m t class, class này ngoài property còn có constructor (kh i t o) c a class đó public class Person { String name; int age; public Person(String name) { this.name = name; } } Trong 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 ủ 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 behavior (hành vi) public class Person {
ế t câu l nh sau ệ
ủ (ti p)ế
ấ ề ế ừ ề ượ c quy n k th a ế ừ b t c n i nào và b t c l p nào cũng đ ấ ứ ớ c phép truy xu t và k th a ế ừ ấ c phép c phép truy xu t t ươ ứ ỉ ng th c cùng gói đ ớ ấ ứ ượ ấ ừ ấ ứ ơ ng th c cùng gói đ ượ ượ c phép truy xu t nh ng không l p nào đ ư
ng hay là không tr u t ng ừ ượ ừ ượ ặ ị ộ ớ
String name; int age; public Person(int age) { this.age = age; } public void Nhap() { nameonsole.readLine("Nhap ho ten:"); } } Khi ta vi Person personOne = new Person(12); Thì ta đã t o ra m t instance (th hi n) là personOne c a class Person ạ ể ệ ộ Bài 5 – L p trình OOP ậ 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:đ ượ -protected:ch có ph -private:ch có ph ươ ỉ k th a ế ừ -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 ừ ứ Nhiem 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. --lop Person- import corejava.*; abstract class Person { //cai nay goi la cac property hay state-thuoc tinh cua doi tuong String hoten; int age; String diachi; int luong; //cac constructor public Person(int age) { this.age = age; } //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(); } --lop Students- import corejava.*; class Students extends Person { int MaSV,Malop;
ộ
public void Nhap() { super.Nhap(); MaSV = Console.readInt("Nhap ma SV:"); Malop = Console.readInt("Nhap ma lop:"); } public void In() { System.out.println(hoten); System.out.println(diachi); System.out.println(MaSV); System.out.println(Malop); } public int Tinhluong() { return 150000; } } tu khoa super se goi ham Nhap() tu lop Person la cha cua lop Students --lop Teachers- import corejava.*; class Teachers extends Person { int Makhoa; public void Nhap() { super.Nhap(); Makhoa = Console.readInt("Nhap ma khoa::"); } public void In() { System.out.println(hoten); System.out.println(diachi); System.out.println(Makhoa); } public int Tinhluong() { return 500000; } } --lop Execute- import corejava.*; class Execute { public static void main(String args[]) { Students st = new Students(); st.Nhap(); st.In(); st.luong=st.Tinhluong(); Teachers tc = new Teachers(); tc.Nhap(); tc.In(); tc.luong=tc.Tinhluong(); } } Khai báo m t thu c tính: ộ ộ Khai báo 1 thu c tính public static void temp;
ấ ề ượ ấ ừ ấ ứ ơ ớ c phép truy xu t t ỉ ỉ ủ ế ấ
l p cha đ u đ c phép thay đ i giá tr c a các thu c tính ố ượ ế ấ ả ị ủ ộ ổ c phép thay đ i ổ ị ủ ượ
t c các l p con c a l p Car (nh ToyotaCar,Peugeot,Mazda…) đ u đ ủ ớ ụ ư ư ớ ấ ả ộ ư ể ợ ề ượ c ộ ộ ố t c các ấ ả ỉ ộ ổ ộ T th 1 là khai báo quy n truy xu t,có 3 lo i ạ ừ ứ -public:đ 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 ể ệ ừ ớ ề ượ không tĩnh,còn giá tr c a thu c tính tĩnh thì không đ ộ public class Car { public string branch; public int cost; public static int tire=4; } Nh ví d trên,t 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 trong class Car và t ộ ỉ class con c a nó, vì v y g i là tĩnh ủ ậ ọ
ộ c khai báo nh sau ư ươ
ị ượ ấ ừ ấ ứ ơ ứ b t c n i nào ượ ấ ớ ứ c truy xu t ấ c truy xu t(dùng n i b ) ộ ộ ế ế ừ ớ ượ ặ ị ỉ ồ ộ ộ
ế ặ ị
ớ ng,sau đó m i ộ ố ượ ở ạ ầ ạ ả ươ ộ c phép g i ph ng th c không tĩnh, đ u tiên b n ph i kh i t o m t đ i t ươ ứ ng th c ứ
c phép g i tr c ti p t ng th c tĩnh,b n đ l p ọ ự ế ừ ớ ạ ượ ươ ế ộ
ng) c các l p con tùy ẽ ượ ươ ủ ộ ớ ng không có n i dung.N i dung c a nó s đ ộ ng c a riêng nó. ừ ượ ướ ủ c extends hay override (ghi đè) t b ng C hay C++ ng th c vi ứ ế ằ ể Khai báo m t hành vi M t ph ng th c đ ứ ượ ộ public static double ketqua() Có 3 ch đ nh truy xu t là public, protected và private ấ ỉ c phép truy xu t t -public:đ -protected:ch có l p k th a l p ch a nó đ ỉ -private:ch l p ch a nó đ ỉ ớ -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)ạ static(tĩnh) -n u không khai báo,m c đ nh là không tĩnh class TestObject { static void StaticMethod() {…} void NonStaticMethod() {…} } N u là m t ph ế đ ọ ượ TestObject test=new TestObject(); test.NonStaticMethod(); N u là m t ph ứ TestObject.StaticMethod(); abstract(tr u t ừ ượ M t ph ng th c tr u t ứ ộ bi n và phát tri n theo h ể ế - final: không th đ ể ượ - native: thân ph ươ cùng m t th i đi m - synchronized: ch cho phép 1 thread truy c p vào kh i mã ờ ộ ỉ ở ầ c thay đ i vài l n - volatile: s d ng v i bi n đ thông báo r ng giá tr c a bi n có th đ ổ ể ượ ế ể ố ị ủ ử ụ ậ ằ ế ớ
ị ả ề ị ả ề ế ậ ừ ứ
ờ ờ ệ ệ ế ể ư c khai báo gi ng nh 1 l p, cũng có state và behavior. Nh ng state c a giao ớ ớ ỉ ố ể ả ề ư
ộ ẽ
t m t class có cài đ t (implements) giao di n này , ta s vi ẽ ế ệ ặ ờ
ư ụ ề ệ ố 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 interface-template Bây gi ta có 1 khái ni m m i, là giao di n. Giao di n ra đ i chính là đ gi i quy t đa k ệ ế th a. M i l p trong Java ch có 1 l p cha, nh ng có th implements nhi u giao di n. ớ ệ ỗ ớ ừ Giao di n đ ủ ư ệ ượ di n là final còn behavior là abstract ệ s , ta s khai báo m t giao di n Gi ệ ả ử public interface Product { //hai state duoi day la final, tuc la lop implements khong duoc phep doi gia tri 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 ộ public class Shoe implements Product { public int getPrince(int id) { return (id= =1)?5:10; } public String getMaker() { return maker; } } Mu n implements nhi u giao di n, làm nh sau, ví d class Toyota extends Car implements ActionCar, ActionMobilation
ạ ư ư ụ ư ụ
ta có 1 ch ng trình ạ ờ ớ ươ t: ư ậ ố ử ụ ế
package-unit 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 nh sau --Car.java- package Transport; public class Car { public String manufacturer; public int year; } --Bicycle.java- package 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 ứ mu n s d ng gói này là TestProgram.java. Ta vi --ViDuTransport.java- import Transport.*; class TestProgram
{ public static void main(String args[]) { Car myCar = new Car(); myCar.manufacturer = “Toyota”; Bicycle myBicycle = new Bicycle(1500); } }
ẫ ạ ạ ế ng minh nh sau ư ườ ư ể
ạ ồ ươ ng th c ứ
đây có 2 ph ứ ứ ư ươ ng th c th 2 khác tham ứ ạ ng th c trùng tên CalculateSalePrice nh ng ph ươ ồ
ng th c đ ng th c trong cùng m t l p, có cùng c n p ch ng là nh ng ph ứ ượ ạ ộ ớ ươ ứ ữ ồ
l p cha, đ ươ ư ng th c đ ứ ượ c xác đ nh là ph ị ứ ng th c ặ ở ớ ươ ươ ượ ố ố c ghi đè là ph ấ ồ ớ ộ ạ ồ ị
ủ ố ồ ố ự ự ể ồ
ỗ ộ ớ t, ví d '\\' đ bi u di n chính kí t \, và \u bi u di n Unicode, ư đ c bi ụ ụ ự ặ ự ễ ệ ễ ể
ươ
ể ể ể ể khóa true và false, và không th chuy n ki u sang int ừ ể ể ể ị
ể ữ ệ ế ở ạ ị ầ ể ế L u ý n u trong file ViDuTransport b n không khai báo import Transport.* thì b n v n có th khai báo t Transport.Car myCar = new Transport.Car(); n p ch ng (overload) 1 ph class Vidu { public satic void main(String a[]) { private float cost; public float CalculateSalePrice() { return cost*1.5; } public float CalculateSalePrice(double heso) { return cost*(1+heso); } } } Ở s , g i là n p ch ng ố ọ * n p ch ng (overload) và ghi đè (override) ạ ồ Nh ng ph ữ m t tên nh ng danh sách đ i s khác nhau ộ ng th c có m t Ph ứ ươ 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) ự Bài 6 – Các ki u d li u nguyên th y và phép toán ể ữ ệ - Ki u nguyên: g m s nguyên(int,long) ể - Ki u d u ph y đ ng (hay ki u th c): g m s th c(float,double) ể ộ ấ ẩ - Ki u kí t (char) ự ể - Ki u chu i (String) ỗ ể khai báo nh sau, ví d 'H' (khác v i "H" là m t chu i kí t ) H ng kí t ự ự ằ M t s h ng kí t ể ể ộ ố ằ ví d :ụ ng) '\u00B2' bi u di n ² (bình ph ễ '\u00BC' bi u di n ¼ (m t ph n t ) ầ ư ộ ễ '\u0170' bi u di n ª (mũ a) ễ - Ki u boolean Có 2 giá tr là 2 t *Khai báo bi 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ằ
c khai báo v i t ằ ượ ớ ừ khóa final. Ví d : ụ
ố ể java.lang.Math có m t s method đ dùng trong ộ ố ọ ư
ế ẽ ự ả ể ự ế ử ự là ki u nguyên, ví d 10/3=3 ỉ ả ử ể ụ là ki u nguyên, ví d 10%3=1 ả ể ụ ử ụ ế ấ ư
ồ ả ề ể ớ ệ ệ ệ
ỉ ộ ế ự ộ ệ ạ ự ớ ệ ệ ế ế ướ ồ ế ớ ẽ ự c r i m i th c hi n phép ự
ệ ế ẽ ự ướ ồ c r i m i th c hi n phép ự ệ ớ
ạ
ứ k t h p ự ế ợ trái sang ph i, ch có các phép sau là t ỉ k t h p t ự ế ợ ừ ừ ề ả ầ ả
ư ứ ẽ ư ế ư ứ ẽ ư ẹ ẹ
ệ ề ề ệ
ệ ệ ế ệ
ự ộ ơ ố ậ ế ầ ố ộ ộ ố ấ ả i gi m đi m t đ n v . ị ậ c l ượ ạ ộ ơ
H ng đ final float PI = 3.14159; *Phép toán Phép toán c a ủ Java gi ng C. Trong class toán h c nh sau double y = Math.pow(x,a) = xª và random, sin, cos, tan, exp (mũ), log(logarit) ... * Các phép toán s h c ố ọ - V i c ki u nguyên và ki u th c: + - * / (phép chia s cho ra k t qu ki u th c n u m t ộ ể ớ ả ể là ki u th c) trong 2 toán t ể - Chia h t (/) ch áp d ng khi c 2 toán t ụ - Chia l y d (%) ch áp d ng khi c 2 toán t ỉ * Các phép toán quan h (so sánh) ệ - Bao g m ==,<,>,<=,>= tr v ki u boolean * Các phép toán v i ki u logic ể - Bao g m and(kí hi u &&) or(kí hi u ||) not(kí hi u !) ồ * Phép ++ và -- - Phép này có 2 d ng, m t là ++bi n hay --bi n, hai là bi n++ hay bi n-- S khác nhau ch ế ế là khi phép này th c hi n chung v i m t phép toán khác thì - V i ++bi n và --bi n thì nó s th c hi n phép toán này tr ớ toán khác - V i bi n++ và bi n-- thì nó s th c hi n phép toán khác tr ế ớ toán này * Phép gán - Phép này có d ng a=5 - Phép gán ph c, ví d a+=5 nghĩa là a=a+5, hay a*=2 nghĩa là a=a*2 ụ * Trình t H u h t các phép toán đi u có trình t ế ph i sang trái - Phép ++ và -- - Các phép gán nh =,+=,-=,<<=,>>= ư Bài 7 – M nh đ if ề ệ 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; ELSE tôi c a đ a khác; ư ứ Cú pháp (syntax) c a m nh đ IF là ủ if(m nh đ ) l nh 1; ệ else l nh 2; ệ N u m nh đ đúng thì th c hi n l nh 1; ề ự Không thì th c hi n l nh 2; ệ ệ ự Ví dụ if(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 import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new
ọ ề ề ệ s có m nh đ if ệ
ế ễ ể ệ ư ị ủ ế ọ ậ ấ ạ ể ả i ề làm tr ậ ề ộ ộ ậ ậ ổ ể ữ Ở ướ ạ ng trình b c 1 ậ
ạ ẽ ể ể ạ ậ ố ố t ch ọ ng trình sau đây ươ ạ ế
InputStreamReader(System.in)); System.out.print("Nhap a: "); float a = Float.parseFloat(in.readLine()); float ketqua=a%1; if(ketqua>=0.5) a=a-ketqua+1; else a=a-ketqua; System.out.println("Ket qua bai toan la: " + a); } } * Phép đi u ki n ? và phép ch n : - Gi ả ử if(a>b) a=2; else a=0; 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 đây ch có gi ng trình b c m t và hai, ngoài ra còn nhi u bài t p khác n a. ươ ỉ ậ ng trình b c m t. B n nên tìm nhi u bài t p đ t ph c khi ti p t c ph n k . ế ầ ế ụ ể ự ươ Ví d : ph ươ ụ import java.io.*; public class Hello { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Giai phuong trinh bac nhat dang ax+b=0"); System.out.print("Nhap he so a: "); float a = Float.parseFloat(in.readLine()); System.out.print("Nhap he so b: "); float b = Float.parseFloat(in.readLine()); if(a==0) { if(b==0) System.out.println("Phuong trinh vo so nghiem"); if(b!=0) System.out.println("Phuong trinh vo dinh"); } else System.out.println("Phuong trinh mot nghiem x=" + -b/a); } } Bài 8 – switch 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 import java.io.*; 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()); if(diem<=2) System.out.println("Yeu"); if((diem>2) && (diem<=3)) System.out.println("Trung binh"); if((diem>3) && (diem<=4)) System.out.println("Kha"); if((diem>4) && (diem<5)) System.out.println("Gioi"); if(diem==5) System.out.println("Xuat sac"); } } Thay vì l p l
i nh ng câu if y, b n nên dùng switch ạ ặ ạ ữ ấ
c khai báo nh sau ư ượ ộ ớ ủ Java. String đ
ộ ấ
ả ể ấ ứ ữ ệ ộ ể ể ể chuy n ki u b t c d li u ki u s nào khi c ng vào String. Dù n là ể ố ờ ẹ ặ
th 0 (t c là 'H') l y đi 4 kí t (t c là kí t ắ ầ ừ ự ứ ự ứ ứ ấ
ứ ằ
ằ th i trong String, các kí t trong String đ c đánh s t 0 ứ ự ứ ố ừ ượ ự
ỗ ỗ ồ ố ả ề
ể ố ệ ố ữ ệ ư ố ố
đ u c a hai chu i so đi, ví d "kc" > gi a kí t ự ầ ủ ứ ự ữ ữ ụ ỗ
ổ ỗ
import java.io.*;
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());
switch(diem)
{
case 0:
case 1:
case 2:System.out.println("Yeu");break;
case 3:System.out.println("Trung binh");break;
case 4:
case 5:System.out.println("Gioi");break;
default:System.out.println("Vao sai");
}
}
}
Bài 9 – String
Khác v i C, String là m t l p c a
ớ
String a = "Hello";
C ng 2 String b ng d u +
ằ
System.out.println("Gia tri la " + n);
Java có kh năng t
ự
int, float, double đ u có th chuy n thành String nh m o v t ("" + n)
ề
Các method trong class String
* substring
String s1 = "Hello";
String s2 = s1.substring(0,4); //b t đ u t
"Hell")
* length
int n = s1.length(); //t c là b ng 5
* charAt
char ch = s1.charAt(4); //t c là b ng 'o'
Đây là method tìm kí t
* equals
Ki u tra xem chu i ngu n s có gi ng chu i đích d hay không, ta dùng method equals tr v
ể
boolean
boolean b = s.equals(t);
String không gi ng d li u ki u s , tuy t đ i không dùng gi ng nh if(s==t)
* compareTo
int a = s2.compareTo(s1);
a>0 s2>s1
a<0 s2
ỗ ế ả ề ị ấ ẽ ả ề ẽ ằ
ủ
String ra d li u ki u s
ữ ệ ả
i thì ph i ư c l
ượ ạ ể ố
d li u ki u s ra String khá d dàng, dùng "" + n, nh ng ng
ễ ể ố
ng ng. java.lang, trong các class Byte, Short, Integer, Long, Float, ươ ứ
ằ
ẽ ằ ng t v i các method sau Byte.parseByte, Short.parseShort, Float.parseFloat, ... ươ ặ
ấ ả ế ư l
ữ ạ i các d u ; khi đó n n mu n
ố
ư ể ề ể ỏ ế
ặ
ớ ỏ
ế ả ả ỏ t c các ẽ ế ắ ớ ỏ
ớ
i nó
ướ
t c các s t
ấ ả 0 đ n 10, b qua 3,4,5
ỏ ố ừ ế
ứ
ệ ệ ứ ế ự
ẽ ỏ
ẽ ỉ t ngay sau while ị ể ứ ế ẽ ị
int n = s1.indexOf(s2); //n s b ng 4
Đây là method tr v v trí c a chu i s2 trong chu i s1, n u không tìm th y s tr v -1
ỗ
* Chuy n ki u t
ể ừ
ể
Chuy n t
ể ừ ữ ệ
dùng các method t
Các method này n m trong gói
Double
String input = "230";
int n = Integer.parseInt(input); //n s b ng 230
T
ự ớ
Bài 10 – vòng l p for
for(int i=0;i
ứ
ể ế ứ ự ệ ệ
ẽ ỉ t ngay sau ị ể ứ ế ẽ ị
do
l nh;ệ
ể
while(bi u th c);
N u bi u th c đúng thì ti p t c th c hi n l nh
ế ụ
*break v i do..while: break s thoát ngay ra kh i vòng while
ỏ
ẽ
ớ
int i=0;
do
{
System.out.println(i);break;
i++;
}
while(i<10);
S ch in ra 0
* continue v i while: nó s xác đ nh giá tr bi u th c vi
ớ
while
int i=0;
do
{
System.out.println(i);continue;
i++;
}
while(i<10);
c m t lo t in 0 vô t n ạ ậ
ớ ả ệ ầ ử ấ ố
ả
c m t array, ta c n ph i kh i t o array đó, và lúc này ph i
ở ạ ả ầ ộ ượ ớ Java, đ dùng đ
ể
ầ ử
t l i thành m t câu ộ
t ẽ ở ạ ầ ử ề ầ ạ ả ị ầ ả
ả đ u là int có đánh th t
ứ ự ừ
ẳ 0 đ n 99
ế
ầ ố ầ ử
ớ ả
ầ ử ủ ấ ố ụ ả ầ
c a m ng, ví d ta mu n gán giá tr s cho các ph n ị ố ố ẽ
c a m ng a ả ả
ả ử ả
ớ ộ , tính t ừ ầ ử ứ ế ầ
th 2 trong m ng d, b ng ng n y ph n ầ ấ ả ằ th 3 trong m ng s tính t ầ ử
ả java.util.Arrays
Ta s đ
ộ
ẽ ượ
Bài 13 – array
Ta khai báo 1 m ng v i câu l nh sau, và không cung c p s ph n t
int[] a;
Tuy v y, v i
ậ
cung c p s ph n t
ấ ố
int[] a;
a = new int[100];
Hai câu có th vi
ể ế ạ
int[] a = new int[100];
Java s kh i t o m t m ng 100 ph n t
ộ
M ng có giá tr đ u: M ng lo i này không c n new mà cũng ch ng c n s ph n t
int[] a = {1,45,6,8,21};
Các method v i m ng
* length
method này s cung c p s ph n t
t
ử ủ
for(int i=0;i
trong m t m ng, tr v -1 n u không tìm th y ấ ị ộ ộ ả ế ẽ ả ề ầ ử
ẽ ằ ả ề ề
là 4 m ng 1 ầ ử ả ồ ả ề ị ầ ả ề ứ ầ ử
ạ ạ ấ ạ ẽ ấ
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 ươ ạ gì) ươ
ắ ư ể ế ố ế
ạ ệ
ạ ệ ng th c sinh ra, b n có th khai ử
ể ươ ứ ộ ể ạ ấ ứ
đó (Exception)
ạ ệ
ỏ ể
i đ xem đó là ngo i l đó l ặ ế ạ ể ạ ệ ạ ệ ể ử ắ ồ
gì đ x lí, b n "b t" nó r i
ạ ắ
ng trình thành công thì sinh thông báo thành công, th t b i thì sinh thông ế ấ ạ int[] s = {28,7,14,11};
Arrays.sort(s);
* int binarySearch
Nó s tìm v trí c a m t ph n t
ủ
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 4 ph n t
ặ
ả
chi u, m i m ng 1 chi u ch a 3 ph n t
ỗ
ề
int[][] a =
{
{16, 3, 2},
{5, 10, 11},
{9, 6, 7},
{4, 15, 14}
};
Bài 14 - ngo i lạ ệ
int x,y;
x=10;y=x-10;
x=x/y;
Khi 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
ẽ
ố
đón "b t" ngo i l
này, đ a ra bi n e, cu i cùng in e (đ xem là ngo i l
ạ ệ
int x,y;
try
{
x=10;y=x-10;
x=x/y;
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
X lí ngo i l
do b t c dòng mã nào trong m t ph
Đ "ném" ngo i l
báo đ ném b ngo i l
ạ ệ
public void divide() throws Exception
{
int a=5/0;
}
ho c n u mu n "b t" ngo i l
ố
in ra
try
{
int a=5/0;
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
N u mu n ch
báo ngo i l ố
ươ
, b n có th dùng
ạ ệ ạ ể
ả java.util.Vector và java.util.Enumeration i h n s ph n t
)
ớ ạ ố ầ ử
2 class
java) ằ ng, nên ta ph i có new Integer(n) ề ư ng t ả
ộ ố ượ
v i Byte, Long, Float, ... ế ể ự ớ ả
ươ
ầ ử ủ
ư ề ể ề ể ễ ả ộ
ể ễ ử ể
c a m t Enumeration ộ
ớ
ả
boolean done=false;
try
{
int a=5/b;
done=true;
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
if(done==true) System.out.println("Successful");
Bài 15 - Vector (m ng không gi
Các method trong bài này n m
ằ ở
Khai báo
Vector vt = new Vector();
Nh p d li u cho m t Vector (class Console n m trong gói core
ộ
ậ ữ ệ
L u ý là m i ph n t
c a Vector đ u ph i là m t đ i t
ầ ử ủ
ỗ
khi mu n đ a vào m t bi n ki u int. T
ộ
ố ư
do
{
int n = Console.readInt("");
if(n!=0) vt.addElement(new Integer(n));
}
while(n!=0);
In ra các ph n t
c a m t Vector
ộ
for(int i=0;i
đây ta th y l p n i Apple trong l p TestProgram, khi biên d ch Java s làm xu t hi n 2 ị ớ ộ ấ ớ ẽ
ử ụ Ư ể ấ
ộ ớ
ể ể ệ
ớ ế ủ ớ ộ
ớ ấ ự ế
ớ ụ ư ậ ằ ộ ớ ộ i đây
}
}
Ở
ệ
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
- các l p n i có th truy xu t tr c ti p các bi n c a l p cha
L u ý là l p n i khác v i các l p mà n m chung m t file, ví d nh t p tin MainClass.java
ư
d
ướ
public class MainClass
{
}
class Subclass
{
}
ẽ ạ ch y
ự ạ ng trình c a b n có vài file .class trong đó file ch ng trình chính là s ch
ả ử ươ ươ ẳ ủ ạ
ạ
ấ ư ạ ộ ộ Khi biên d ch nó s t o ra 2 file là MainClass.class và Subclass.class
ị
Bài 17 - T o t p tin jar t
ạ ậ
Gi
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
ố ả ắ ư ế ứ ạ
t c các t p tin .class c a ng d ng và c ủ ứ ả ụ ậ ư ệ ạ ớ
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õ ng t ư ụ ự ế ươ ạ ạ
c, không ph i dùng ể ạ ượ ẽ ạ ạ ả java hay gi 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
ả
ả
ộ
c.
không hi u đ
ể ượ
JAVA_HOME%\bin\ chép t
Sau đó b n vào %
ấ ả
ạ
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
ố ư
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 ch y đ
l nh ệ s không có IDE quen thu c c a b n
ộ ủ ạ ả ử
ỗ ế ả ề ị ấ ẽ ả ề ẽ ằ ủ String ra d li u ki u s ữ ệ ả i thì ph i ư c l ượ ạ ể ố d li u ki u s ra String khá d dàng, dùng "" + n, nh ng ng ễ ể ố ng ng. java.lang, trong các class Byte, Short, Integer, Long, Float, ươ ứ ằ
ẽ ằ ng t v i các method sau Byte.parseByte, Short.parseShort, Float.parseFloat, ... ươ ặ
ấ ả ế ư l ữ ạ i các d u ; khi đó n n mu n ố ư ể ề ể ỏ ế ặ
ớ ỏ
ế ả ả ỏ t c các ẽ ế ắ ớ ỏ
ớ i nó ướ t c các s t ấ ả 0 đ n 10, b qua 3,4,5 ỏ ố ừ ế
ứ
ệ ệ ứ ế ự ẽ ỏ
ẽ ỉ t ngay sau while ị ể ứ ế ẽ ị
int n = s1.indexOf(s2); //n s b ng 4
Đây là method tr v v trí c a chu i s2 trong chu i s1, n u không tìm th y s tr v -1
ỗ
* Chuy n ki u t
ể ừ
ể
Chuy n t
ể ừ ữ ệ
dùng các method t
Các method này n m trong gói
Double
String input = "230";
int n = Integer.parseInt(input); //n s b ng 230
T
ự ớ
Bài 10 – vòng l p for
for(int i=0;i ể ế ứ ự ệ ệ ẽ ỉ t ngay sau ị ể ứ ế ẽ ị c m t lo t in 0 vô t n ạ ậ ớ ả ệ ầ ử ấ ố ả
c m t array, ta c n ph i kh i t o array đó, và lúc này ph i
ở ạ ả ầ ộ ượ ớ Java, đ dùng đ
ể
ầ ử t l i thành m t câu ộ t ẽ ở ạ ầ ử ề ầ ạ ả ị ầ ả
ả đ u là int có đánh th t
ứ ự ừ
ẳ 0 đ n 99
ế
ầ ố ầ ử ớ ả ầ ử ủ ấ ố ụ ả ầ
c a m ng, ví d ta mu n gán giá tr s cho các ph n ị ố ố ẽ
c a m ng a ả ả ả ử ả ớ ộ , tính t ừ ầ ử ứ ế ầ
th 2 trong m ng d, b ng ng n y ph n ầ ấ ả ằ th 3 trong m ng s tính t ầ ử
ả java.util.Arrays Ta s đ
ộ
ẽ ượ
Bài 13 – array
Ta khai báo 1 m ng v i câu l nh sau, và không cung c p s ph n t
int[] a;
Tuy v y, v i
ậ
cung c p s ph n t
ấ ố
int[] a;
a = new int[100];
Hai câu có th vi
ể ế ạ
int[] a = new int[100];
Java s kh i t o m t m ng 100 ph n t
ộ
M ng có giá tr đ u: M ng lo i này không c n new mà cũng ch ng c n s ph n t
int[] a = {1,45,6,8,21};
Các method v i m ng
* length
method này s cung c p s ph n t
t
ử ủ
for(int i=0;i trong m t m ng, tr v -1 n u không tìm th y ấ ị ộ ộ ả ế ẽ ả ề ầ ử ẽ ằ ả ề ề là 4 m ng 1 ầ ử ả ồ ả ề ị ầ ả ề ứ ầ ử ạ ạ ấ ạ ẽ ấ 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 ươ ạ gì) ươ
ắ ư ể ế ố ế
ạ ệ ạ ệ ng th c sinh ra, b n có th khai ử
ể ươ ứ ộ ể ạ ấ ứ
đó (Exception)
ạ ệ
ỏ ể i đ xem đó là ngo i l đó l ặ ế ạ ể ạ ệ ạ ệ ể ử ắ ồ
gì đ x lí, b n "b t" nó r i
ạ ắ ng trình thành công thì sinh thông báo thành công, th t b i thì sinh thông ế ấ ạ int[] s = {28,7,14,11};
Arrays.sort(s);
* int binarySearch
Nó s tìm v trí c a m t ph n t
ủ
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 4 ph n t
ặ
ả
chi u, m i m ng 1 chi u ch a 3 ph n t
ỗ
ề
int[][] a =
{
{16, 3, 2},
{5, 10, 11},
{9, 6, 7},
{4, 15, 14}
};
Bài 14 - ngo i lạ ệ
int x,y;
x=10;y=x-10;
x=x/y;
Khi 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
ẽ
ố
đón "b t" ngo i l
này, đ a ra bi n e, cu i cùng in e (đ xem là ngo i l
ạ ệ
int x,y;
try
{
x=10;y=x-10;
x=x/y;
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
X lí ngo i l
do b t c dòng mã nào trong m t ph
Đ "ném" ngo i l
báo đ ném b ngo i l
ạ ệ
public void divide() throws Exception
{
int a=5/0;
}
ho c n u mu n "b t" ngo i l
ố
in ra
try
{
int a=5/0;
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
N u mu n ch
báo ngo i l ố
ươ
, b n có th dùng
ạ ệ ạ ể ả java.util.Vector và java.util.Enumeration i h n s ph n t
)
ớ ạ ố ầ ử
2 class java) ằ ng, nên ta ph i có new Integer(n) ề ư ng t ả
ộ ố ượ
v i Byte, Long, Float, ... ế ể ự ớ ả
ươ ầ ử ủ ư ề ể ề ể ễ ả ộ ể ễ ử ể c a m t Enumeration ộ ớ đây ta th y l p n i Apple trong l p TestProgram, khi biên d ch Java s làm xu t hi n 2 ị ớ ộ ấ ớ ẽ
ử ụ Ư ể ấ
ộ ớ ể ể ệ
ớ ế ủ ớ ộ
ớ ấ ự ế
ớ ụ ư ậ ằ ộ ớ ộ i đây ẽ ạ ch y
ự ạ ng trình c a b n có vài file .class trong đó file ch ng trình chính là s ch
ả ử ươ ươ ẳ ủ ạ
ạ
ấ ư ạ ộ ộ Khi biên d ch nó s t o ra 2 file là MainClass.class và Subclass.class
ị
Bài 17 - T o t p tin jar t
ạ ậ
Gi
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 ố ả ắ ư ế ứ ạ t c các t p tin .class c a ng d ng và c ủ ứ ả ụ ậ ư ệ ạ ớ 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õ ng t ư ụ ự ế ươ ạ ạ c, không ph i dùng ể ạ ượ ẽ ạ ạ ả java hay gi 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
ả
ả
ộ
c.
không hi u đ
ể ượ
JAVA_HOME%\bin\ chép t
Sau đó b n vào %
ấ ả
ạ
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
ố ư
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 ch y đ
l nh ệ s không có IDE quen thu c c a b n
ộ ủ ạ ả ửứ
do
l nh;ệ
ể
while(bi u th c);
N u bi u th c đúng thì ti p t c th c hi n l nh
ế ụ
*break v i do..while: break s thoát ngay ra kh i vòng while
ỏ
ẽ
ớ
int i=0;
do
{
System.out.println(i);break;
i++;
}
while(i<10);
S ch in ra 0
* continue v i while: nó s xác đ nh giá tr bi u th c vi
ớ
while
int i=0;
do
{
System.out.println(i);continue;
i++;
}
while(i<10);
ả
boolean done=false;
try
{
int a=5/b;
done=true;
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
if(done==true) System.out.println("Successful");
Bài 15 - Vector (m ng không gi
Các method trong bài này n m
ằ ở
Khai báo
Vector vt = new Vector();
Nh p d li u cho m t Vector (class Console n m trong gói core
ộ
ậ ữ ệ
L u ý là m i ph n t
c a Vector đ u ph i là m t đ i t
ầ ử ủ
ỗ
khi mu n đ a vào m t bi n ki u int. T
ộ
ố ư
do
{
int n = Console.readInt("");
if(n!=0) vt.addElement(new Integer(n));
}
while(n!=0);
In ra các ph n t
c a m t Vector
ộ
for(int i=0;i
}
}
Ở
ệ
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
- các l p n i có th truy xu t tr c ti p các bi n c a l p cha
L u ý là l p n i khác v i các l p mà n m chung m t file, ví d nh t p tin MainClass.java
ư
d
ướ
public class MainClass
{
}
class Subclass
{
}