1. Trang chủ
  2. » Công Nghệ Thông Tin

Java 2 enterprise edition tiếng việt

249 139 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 249
Dung lượng 2,22 MB

Nội dung

Trang 1 Tr-ờng đại học s- phạm kỹ thuật h-ng yên khoa công nghệ thông tin ooo Đề c-ơng bài giảng Java Nhúm biờn son: 1. Hong Trng Th 2. Nguyn Duy Tõn Trang 2 C LC Chng 1: CÁC KHÁI NIM C BN 5 BÀI 1. LÀM QUEN VI JAVA 5 I. Lch s java 5 II. Java em là ai 5 II. Mt sc trng ca java 5 III. Các kiu ng dng Java 7 IV. Máy o Java (JVM-Java Virtual Machine) 7 BÀI 2 NN TNG CA JAVA 9 I. Tp ký t dùng trong java 9 II. T khoá ca Java 9 III. nh danh (tên) 10 IV. Cu trúc mt chng trình java 10 V. Chng trình JAVA u tiên 12 VI. Chú thích trong chng trình 14 VII. Kiu d liu 15 VII. Mt s phép toán trên kiu d liu nguyên thu 17 IX. Toán t chuyn kiu 23 X. Các hàm toán hc 24 XI. Các phép toán trên kiu kí t 26 BÀI 3. IU KHIN LUNG CHNG TRÌNH 27 I. Cu trúc r nhánh 27 II. Cu trúc lp while và do-while 30 III. Cu trúc for 32 IV. Lnh break và continue 34 Chng 2: LP TRÌNH HNG I TNG 37 BÀI 1. NH NGHA LP 38 I. Khai báo lp 38 II. Chi tit v khai báo mt phng thc 40 III. T khoá this 43 IV. T khoá super 43 V. S dng lp 44 VI. iu khin vic truy cp n các thành viên ca mt lp 44 BÀI 2. KHI U VÀ DN DP 47 I. Phng thc to dng (constructor) 47 II. Khi khi u vô danh và khi khi u tnh 49 III. Dn dp: kt thúc và thu rác 51 BÀI 3. CÁC THÀNH PHN TNH 52 I. Thuc tính tnh 52 II. Phng thc tnh 52 BÀI 4. NP CHNG PHNG THC 53 I. Khái nim v phng thc bi ti 53 Trang 3 II. Yêu cu ca các phng thc bi ti 53 BÀI 5. K THA (INHERITANCE) 54 I. Lp c s và lp dn xut 54 II. Cách xây dng lp dn xut 54 III. Tha k các thuc tính 54 IV. Tha k phng thc 54 V. Khi u lp c s 54 VI. Ghi è phng thc ( Override ) 56 VI. Thành phn protected 56 VII. T khoá final 56 BÀI 6. LP C S TRU TNG 61 BÀI 7. A HÌNH THÁI 62 BÀI 8. GIAO DIN, LP TRONG, GÓI 63 I. Giao din 63 II. Lp trong 65 Bài 9. MNG, XÂU KÝ T, TP HP 67 I. Mng 67 II. Xâu ký t 70 III. Lp StringTokenizer 75 IV. Mt s lp c bn ca Java 77 V. Các lp tp hp 83 Chng 3: X LÝ NGOI L 92 I. Mc ích ca vic x lý ngoi l 92 II. Mô hình s lý ngoi l ca java 92 III. c t ngoi l 93 III. Ném ra ngoi l 93 IV. Bt ngoi l 93 V. Khi ‘finally’ 95 VI. Mt s lp ngoi l chun ca Java 96 Chng 4: LP TRÌNH A TUYN 97 I. Các kin thc liên quan 97 II. Lp trình a tuyn trong Java 98 Chng 5: NHP XUT (Input/Output) 104 I. Lp lung 105 II. Lp File 113 Chng 6: LP TRÌNH  HO AWT 120 I. Gii thiu v h thng  ho ca Java 120 II. Trình qun lý hin th trong Java 124 III. X lý s kin trong Java 125 Chng 7 LP TRÌNH C S D LIU 143 I. Tng quan 143 II. Các ku trình iu khin JDBC 143 Trang 4 III. Các lp trong JDBC API dùng  truy cp CSDL 146 IV. Kt ni CSDL vi JDBC 147 V. Tng tác vi CSDL 152 VI. Qun lý giao dch 160 Chng 8: LP TRÌNH SOCKET 164 I. Các kin thc liên quan 164 II. Kho sát mt s lp trong gói java.net 164 2. Lp URL và URI 171 3. Lp Socket 176 4. Lp ServerSocket 182 5. Lp DatagramSocket 185 6. Lp DatagramPacket 185 III. TCP Socket 185 Chng 9: JAVA MAIL 205 I. Các khái nim MAIL 205 II. Gi mail vi th vin có sn ca java 206 III. Gii thiu java mail API 207 III. Gi mail 212 IV. Nhn mail 215 V. Xoá mail 221 Chng 10: LP TRÌNH PHÂN TÁN VI 222 JAVA RMI ( REMOTE METHOD INVOKE) 222 I. RMI và lp trình phân tán i tng 222 II. Gi phng thc t xa và các vn  phát sinh 223 III. Vai trò ca các lp trung gian 223 IV. Cài t i tng phân tán 224 Chng 11: JAVA JSP (JAVA SERVLET) 233 Chng 12: EJB (ENTERPRISE JAVA BEANS) 234 I. Tng quan v JavaBean 234 II. Xây dng thành phn JavaBean 234 III. Tìm hiu Instrospector 247 IV. óng gói JavaBean 249 Trang 5 Chng 1: CÁC KHÁI NIM C BN BÀI 1. LÀM QUEN VI JAVA I. Lch s java Java là mt ngôn ng lp trình c Sun Microsystems gii thiu vào tháng 6 nm 1995. Tó, nó ã tr thành mt công c lp trình ca các lp trình viên chuyên nghip. Java c xây dng trên nn tng ca C và C++. Do vy nó s dng các cú pháp ca C và các c trng hng i tng ca C++. Ban u Java c thit k làm ngôn ng vit chng trình cho các sn phm in t dân dng nhu video, tivi, n thoi, máy nhn tin . Tuy nhiên vi s mãnh m ca Java ã khin nó ni ting n mc vt ra ngoài s tng tng ca các nhà thit k ra nó. Java khi thu tên là Oak- là cây si mc  phía sau vn phòng ca nhà thit k chính ông Jame Gosling, sau này ông thy rng ã có ngôn ng lp trình tên Oak ri, do vy nhóm thit k quyt nh i tên, “Java” là cái tên c chn, Java là tên ca mt quán cafe mà nhóm thit k java hay n ó ung. II. Java em là ai Java là ngôn ng lp trình hng i tng, do vy không th dùng Java  vit mt chng trình hng chc nng. Java có th gii quyt hu ht các công vic mà các ngôn ng khác có th làm c. Java là ngôn ng va biên dch va thông dch. u tiên mã ngun c biên dch bng công c JAVAC  chuyn thành dng ByteCode. Sau ó c thc thi trên tng loi máy c th nh chng trình thông dch JAVA. Mc tiêu ca các nhà thit k Java là cho phép ngi lp trình vit chng trình mt ln nhng có th chy trên bt c phn cng c th, th nên khu hiu ca các nhà thit k Java là “Write One, Run Any Where”. Ngày nay, Java c s dng rng rãi  vit chng trình chy trên Internet. Nó là ngôn ng lp trình hng i tng c lp thit b, không ph thuc vào hu hành. Java không ch dùng  vit các ng dng chy n l hay trong mng mà còn  xây dng các trình iu khin thit b cho n thoi di ng, PDA, … II. Mt sc trng ca java 1n gin Nhng ngi thit k mong mun phát trin mt ngôn ng d hc và quen thuc vi a s ngi lp trình. Java ta nh C++, nhng ã lc bi các c trng phc tp, không cn thit ca C và C++ nh: thao tác con tr, thao tác nh ngha chng toán t (operator overloading),… Java không s dng lnh “goto” cng nh file header (.h). Cu trúc “struct” và “union” cng c loi b khi Java. Nên có ngi bo Java là “C++ “, ng ý bo java là C++ nhng ã bi nhng th phc tp, không cn thit. 2. Hng i tng Có th nói java là ngôn ng lp trình hoàn toàn hng i tng, tt cc trong java u là s vt, âu âu cng là s vt. 3. c lp vi h nn Mc tiêu chính ca các nhà thit k java là c lp vi h nn hay còn gi là c lp phn cng và hu hành. ây là kh nng mt chng trình c vit ti mt máy nhng có th chy c bt kâu Trang 6 Tính c lp vi phn cng c hiu theo ngha mt chng trình Java nu chy úng trên phn cng ca mt h máy nào ó thì nó cng chy úng trên tt c các h máy khác. Mt chng trình ch chy úng trên mt s h máy c thc gi là ph thuc vào phn cng. Tính c lp vi hu hành c hiu theo ngha mt chng trình Java có th chy c trên tt c các hu hành. Mt chng trình ch chy c trên mt s h iu hành c gi là ph thuc vào hu hành. Các chng trình vit bng java có th chy trên hu ht các h nn mà không cn phi thay i gì, iu này ã c nhng ngi lp trình t cho nó mt khu hiu vit mt ln, chy mi n, iu này là không th có vi các ngôn ng lp trình khác. i vi các chng trình vit bng C, C++ hoc mt ngôn ng nào khác, trình biên dch s chuyn tp lnh thành mã máy (machine code), hay lnh ca b vi x lý. Nhng lnh này ph thuc vào CPU hin ti trên máy bn. Nên khi mun chy trên loi CPU khác, chúng ta phi biên dch li chng trình. 4. Mnh m Java là ngôn ng yêu cu cht ch v kiu d liu, vic ép kiu tng ba bãi ca C, C++ nay c hn ch trong Java, u này làm chng trình rõ ràng, sáng sa, ít li n.Java kim tra lúc biên dch và c trong thi gian thông dch vì vy Java loi b mt mt s loi li lp trình nht nh.Java không s dng con tr và các phép toán con tr. Java kim tra tt c các truy nhp n mng, chui khi thc thi m bo rng các truy nhp ó không ra ngoài gii hn kích thc. Trong các môi trng lp trình truyn thng, lp trình viên phi t mình cp phát b nh. Trc khi chng trình kt thúc thì phi t gii phóng b nhã cp. Vn  ny sinh khi lp trình viên quên gii phóng b nhã xin cp trc ó. Trong chng trình Java, lp trình viên không phi bn tâm n vic cp phát b nh. Qúa trình cp phát, gii phóng c thc hin tng, nh dch v thu nht nhng i tng không còn s dng na (garbage collection).  ch by li ca Java giúp n gin hóa qúa trình x lý li và hi phc sau li. 5. H tr lp trình a tuyn ây là tính nng cho phép vit mt chng trình có nhiu n mã lnh c chy song song vi nhau. Vi java ta có th vit các chng trình có kh nng chy song song mt cách d dàng, hn th na vic ng b tài nguyên dùng chung trong Java cng rt ng gin. u này là không th có i vi mt s ngôn ng lp trình khác nh C/C++, pascal … 6. Phân tán Java h try  các mô hình tính toán phân tán: mô hình client/server, gi th tc t xa… 7. H tr internet Mc tiêu quan trng ca các nhà thit k java là to u kin cho các nhà phát trin ng dng có th vit các chng trình ng dng internet và web mt cách d dàng, vi java ta có th vit các chng trình s dng các giao thc TCP, UDP mt cách d dàng, v lp trình web phía máy khách java có công ngh java applet, v lp trình web phía máy khách java có công ngh servlet/JSP, v lp trình phân tán java có công ngh RMI, CORBA, EJB, Web Service. Trang 7 8. Thông dch Các chng trình java cn c thông dch trc khi chy, mt chng trình java c biên dch thành mã byte code mã c lp vi h nn, chng trình thông dch java s ánh x mã byte code này lên mi nn c th, u này khin java chm chp i phn nào. III. Các kiu ng dng Java Vi Java ta có th xây dng các kiu ng dng sau: 1. ng dng Applets Applet là chng trình Java c to ra  s dng trên Internet thông qua các trình duyt h tr Java nh IE hay Netscape. Applet c nhúng bên trong trang Web. Khi trang Web hin th trong trình duyt, Applet sc ti v và thc thi ti trình duyt. 2. ng dng dòng lnh (console) Các chng trình này chy t du nhc lnh và không s dng giao din ha. Các thông tin nhp xut c th hin ti du nhc lnh. 3. ng dng  ha ây là các chng trình Java chy c lp cho phép ngi dùng tng tác qua giao din  ha. 4. JSP/Servlet Java thích hp  phát trin ng dng nhiu lp. Applet là chng trình  ha chy trên trình duyt ti máy trm.  các ng dng Web, máy trm gi yêu cu ti máy ch. Máy ch x lý và gi kt qu tr li máy trm. Các Java API chy trên máy ch chu trách nhim x lý ti máy ch và tr li các yêu cu ca máy trm. Các Java API chy trên máy ch này m rng kh nng ca các ng dng Java API chun. Các ng dng trên máy ch này c gi là các JSP/Servlet. hoc Applet ti máy ch. X lý Form ca HTML là cách s dng n gin nht ca JSP/Servlet. Chúng còn có thc dùng  x lý d liu, thc thi các giao dch và thng c thc thi thông qua máy ch Web. 5. ng dng c s d liu Các ng dng này s dng JDBC API  kt ni ti c s d liu. Chúng có th là Applet hay ng dng, nhng Applet b gii hn bi tính bo mt. 6. ng dng mng Java là mt ngôn ng rt thích hp cho vic xây dng các ng dng mng. Vi th vin Socket bn có th lp trình vi hai giao thc: UDP và TCP. 7. ng dng nhiu tng Vi Java bn có th xây dng phân tán nhiu tng vi nhiu h tr khác nhau nh: RMI, CORBA, EJB, Web Service 8. ng dng cho các thit b di ng Hin nay phn ln các thit b di ng nh: in thoi di ng, máy tr giúp cá nhân… u h tr Java. Th nên bn có th xây dng các ng dng chy trên các thit b di ng này. ây là mt kiu ng dng khá hp dãn, bi vì các thit b di ng này ngày càng ph bin và nhu cu có các ng dng chy trên ó, c bit là các ng dng mang tính cht gii trí nh game IV. Máy o Java (JVM-Java Virtual Machine) Máy o là mt phn mm mô phng mt máy tính tht (máy tính o). Nó có tp hp các lnh logic  xác nh các hot ng ca máy tính và có mt hu hành o. Ngi ta có th xem nó nh mt máy tính tht (máy tính có phn cng o, hu hành Trang 8 o). Nó thit lp các lp tru tng cho: Phn cng bên di, hu hành, mã ã biên dch. Trình biên dch chuyn mã ngun thành tp các lnh ca máy o mà không ph thuc vào phn cng và hu hành c th. Trình thông dch trên mi máy s chuyn tp lnh này thành chng trình thc thi. Máy o to ra mt môi trng bên trong  thc thi các lnh bng cách: Ø Np các file .class Ø Qun lý b nh Ø Dn “rác” Vic không nht quán ca phn cng làm cho máy o phi s dng ngn xp  lu tr các thông tin sau: Ø Các “Frame” cha các trng thái ca các phng thc. Ø Các toán hng ca mã bytecode. Ø Các tham s truyn cho phng thc. Ø Các bin cc b. Khi JVM thc thi mã, mt thanh ghi cc b có tên “Program Counter” c s dng. Thanh ghi này tr ti lnh ang thc hin. Khi cn thit, có th thay i ni dung thanh ghi i hng thc thi ca chng trình. Trong trng hp thông thng thì tng lnh mt ni tip nhau sc thc thi. Mt khái nim thông dng khác trong Java là trình biên dch “Just In Time-JIT”. Các trình duyt thông dng nh Netscape hay IE u có JIT bên trong  tng tc  thc thi chng trình Java. Mc ích chính ca JIT là chuyn tp lnh bytecode thành mã máy c th cho tng loi CPU. Các lnh này sc lu tr và s dng mi khi gi n. Trang 9 BÀI 2 NN TNG CA JAVA I. Tp ký t dùng trong java Mi ngôn ng nói chung, ngôn ng lp trình nói riêng u phi xây dng trên mt tp hp ch cái (hay còn gi là bng ch cái), các kí tc nhóm li theo mt cách nào ó  to thành các t, các t li c nhóm li thành các câu (trong ngôn ng lp trình gi là câu lnh), mt chng trình máy tính tính là mt tp các câu lnh c b trí theo mt trt t mà ngi vit ra chúng sp t Ngôn ng java c c xây dng trên bng ch cái unicode, do vy ta có th dùng các kí t unicode t tên cho các nh danh. II. T khoá ca Java Mi ngôn ng lp trình có mt tp các t khoá, ngi lp trình phi s dng t khoá theo úng ngha mà ngi thit k ngôn ngã  ra, ta không thnh ngha li ngha ca các t khoá, nh s dng nó t tên bin, hàm Sau ây là mt s t khoá thng gp: T khóa Mô t abstract S dng  khai báo lp, phng thc tru tng boolean Kiu d liu logic break c s dng  kt thúc vòng lp hoc cu trúc switch byte kiu d liu s nguyên case c s dng trong ln switch cast Cha c s dng ( dành cho tng lai) catch c s dng trong x lý ngoi l char kiu d liu ký t class Dùng  khai báo lp const Cha c dùng continue c dùng trong vòng lp  bt u mt vòng lp mi default c s dng trong lnh switch do c dùng trong vòng lp u kin sau double kiu d liu s thc else kh nng la chn th hai trong câu lnh if extends ch rng mt lp c k tha t mt lp khác false Gía tr logic final Dùng  khai báo hng s, phng thc không th ghi è, hoc lp không th k tha finally phn cui ca khi x lý ngoi l float kiu s thc for Câu lnh lp goto Cha c dùng if Câu lnh la chn implements ch rng mt lp trin khai t mt giao din import Khai báo s dng th vin instanceof kim tra mt i tng có phi là mt th hin ca lp hay không interface s dng  khai báo giao din long kiu s nguyên native Khai báo phng thc c vit bng ngông ng biên dch C++ new to mt i tng mi Trang 10 null mt i tng không tn ti package Dùng  khai báo mt gói private c t truy xut protected c t truy xut public c t truy xut return Quay t phng thc v ch gi nó short kiu s nguyên static Dùng  khai báo bin, thuc tính tnh super Truy xut n lp cha switch lnh la chn synchronized mt phng thc c quyn truy xut trên mt i tng this Ám ch chính lp ó throw Ném ra ngoi l throws Khai báo phng thc ném ra ngoi l true Giá tr logic try s dng  bt ngoi l void Dùng  khai báo mt phng thc không tr v giá tr while Dùng trong cu trúc lp III. nh danh (tên) Tên dùng  xác nh duy nht mt i lng trong chng trình. Trong java tên c t theo quy tc sau: - Không trùng vi t khoá - Không bt u bng mt s, tên phi bt u bng kí t hoc bt u bng kí $,_ - Không cha du cách, các kí t toán hc nh +, -, *,/, % - Không trùng vi mt nh danh khác trong cùng mt phm vi Chú ý: - Tên nên t sao cho có th mô tc i tng trong thc t - Ging nh C/C++, java có phân bit ch hoa ch thng - Trong java ta có tht tên vi  dài tu ý - Ta có th s dng các kí t ting vit t tên Quy c v t tên trong java Ta nên t tên bin, hng, lp, phng thc sao cho ngha ca chúng rõ ràng, d hiu, khoa hc và mang tính c l quc t. Do java có phân bit ch hoa, ch thng nên ta phi cn thn và chú ý. Sau ây là quy c t tên trong java (chú ý ây ch là quy c do vy không bt buc phi tuân theo quy c này): - i vi bin và phng thc thì tên bao gi cng bt u bng ký t thng, nu tên có nhiu t thì ghép li thì: ghép tt c các t thành mt, ghi tu tiên ch thng, vit hoa kí tu tiên ca mi t theo sau trong tên, ví d area, radius, readInteger… -i vi tên lp, giao din ta vit hoa các kí tu tiên ca mi t trong tên, ví d lp WhileTest, Circle - Tên hng bao gi cng vit hoa, nu tên gm nhiu t thì chúng c ni vi hau bi kí t ghch di ‘_’, ví d PI, MAX_VALUE IV. Cu trúc mt chng trình java - Mi ng dng Java bao gm mt hoc nhiu n v biên dch (mi n v biên dch là mt tp tin có phn m rng Java) - Mi n v biên dch bao gm mt hoc nhiu lp [...]... = op1 * op2 op1 = op1/ op2 op1 = op1 % op2 Trang 22 ng &= |= ^= = >>>= op1 &= op2 op1 |= op2 op1 ^= op2 op1 = op2 op1 >>>= op2 op1 = op1 & op2 op1 = op1 | op2 op1 = op1 ^ op2 op1 = op1 > op2 op1 = op1 >>> op2 8 Th t u tiờn c a cỏc phộp toỏn Th t u tiờn c a cỏc phộp toỏn xỏc nh trỡnh t tớnh toỏn giỏ tr c a m t bi u th c, java cú nh ng quy t c riờng xỏc nh trỡnh... op2 0 1 0 1 Result 0 1 1 1 Vớ d : 1101// 13 & 1100// 12 -1100// 12 1101// 13 | 1100// 12 -1101// 13 1101// 13 ^ 1100// 12 -0001// 1 ! 10101=01010 7 Toỏn t gỏn t t Gi ng nh C/C++ java c ng cú toỏn t gỏn, ta túm t t cỏc toỏn t gỏn qua b ng sau: Phộp gỏn += -= *= /= %= S d ng op1 += op2 op1 -= op2 op1 *= op2 op1/ = op2 op1 %= op2 ng op1 = op1 + op2 op1 = op1 - op2 op1 = op1 * op2 op1 = op1/ op2... op2 op1 * op2 op1/ op2 op1 % op2 Mụ t C ng op1 v iop2 Tr op1 cho op2 Nhõn op1 v i op2 chia op1 cho op2 Tớnh ph n d c a phộp chia op1 cho op2 3 Toỏn t t ng, gi m Gi ng nh ngụn ng C/C++, java c ng cú phộp toỏn t ng, gi m, ta cú th mụ t túm t t qua cỏc b ng sau: Phộp toỏn S d ng Phộp toỏn > >= < op2 op1 >= op2 op1 < op2 op1 > op1 >> op2 c n b ng cỏc bớt 0 D ch chuy n op1 sang trỏi op2 bit(gi nguyờn d u c a op1), > op1>>> op2 D ch chuy n op1 sang ph i op2 bit, op2 bit Sau õy l hỡnh minh ho phộp toỏn d ch bớt Trang 20 Vớ d : 13>>1=6 vỡ 13=110 12 do v y khi d ch ph i m t bit ta s c 11 02= 6 5 long -> float -> double 9 .2 Chuy n i ki u t ng minh chuy n i ki u m t cỏch t ng minh ta s d ng cỳ phỏp sau: (type) bi u_th c; khi g p cõu l nh ny java s tớnh toỏn giỏ tr c a bi u th c sau ú chuy n i ki u giỏ tr c a bi u th c thnh ki u type Vớ d : (int) 2. 5 * 2 = 4 (int) 2. 5 * 2. 5 = 5 (int) (2. 5 * 2. 5)... toỏn quan h bao gi c ng cho k t qu boolean, phộp toỏn quan h s so sỏnh 2 giỏ tr , nú xỏc nh m i quan h gi a chỳng, vớ d ! = s tr v true n u 2 toỏn h ng l khỏc nhau Ta túm t t cỏc phộp toỏn qua b ng sau: Nh n v giỏ tr true khi op1 l n h n op2 op1 l n h n ho c b ng op2 op1 nh h n op2 op1 nh h n ho c b ng op2 op1 b ng op2 op1 khỏc op2 Vớ d : S d ng cỏc phộp toỏn quan h public class RelationalDemo { public . mail API 20 7 III. Gi mail 21 2 IV. Nhn mail 21 5 V. Xoá mail 22 1 Chng 10: LP TRÌNH PHÂN TÁN VI 22 2 JAVA RMI ( REMOTE METHOD INVOKE) 22 2 I. RMI và lp trình phân tán i tng 22 2 II. Gi. sinh 22 3 III. Vai trò ca các lp trung gian 22 3 IV. Cài t i tng phân tán 22 4 Chng 11: JAVA JSP (JAVA SERVLET) 23 3 Chng 12: EJB (ENTERPRISE JAVA BEANS) 23 4 I. Tng quan v JavaBean 23 4 II > op2 op1 ln hn op2 >= op1 >= op2 op1 ln hn hoc bng op2 < op1 < op2 op1 nh hn op2 <= op1 <= op2 op1 nh hn hoc bng op2 == op1 == op2 op1 bng op2 != op1! = op2 op1

Ngày đăng: 20/10/2014, 19:02

TỪ KHÓA LIÊN QUAN