Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 1
MC LC
CHNG 1. GII THIU TNG QUAN V NGÔN NG LP TRÌNH JAVA 6
1. Lch s ra đi và phát triển ca Java 6
2. Mt s đặc trng ca Java 6
2.1. Đn gin 7
2.2. Hng đi tng 7
2.3. Đc lp vi h nn 7
2.4. Mnh m 7
2.5. H tr lp trình đa tuyn 8
2.6. Phân tán 8
2.7. H tr Internet 8
2.8. Thông dch 8
3. Các kiểu ng dụng Java 8
3.1. ng dụng Applets 8
3.2. ng dụng dòng lnh (console) 9
3.3. ng dụng đ họa(Window form) 9
3.4 JSP/Servlet 9
3.5. ng dụng c s d liu 9
3.6. ng dụng mng 9
3.7. ng dụng nhiu tầng(multi-tier) 9
3.8. ng dụng cho các thit b di đng 9
4. Máy o Java (JVM-Java Virtual Machine) 9
5. B công cụ phát triển JDK (Java Development Kit) 10
6. Java Core API 12
7. Chng trình Java đầu tiên 13
7.1 Cu trúc chng trình Java 13
7.2 Chng trình Java đầu tiên 15
2.2. Lặp kiểm tra điu kin sau 40
3. Cu trúc for 41
4. Lnh break và continue 43
BÀI 3. LP TRỊNH HNG ĐI TNG TRONG JAVA 46
1. Đnh nghĩa lp 47
1.1. Khai báo lp 47
1.1.1 Khai báo thuc tính 49
1.1.2 Khai báo phng thc 50
1.2 Chi tit v khai báo mt phng thc 51
1.2.1. Tng quát mt phng thc đc khai báo nh sau 51
1.2.2 Nhn giá tr tr v t phng thc 52
1.2.3 Truyn tham s cho phng thc 52
1.2.4. Thân ca phng thc 54
2. S dụng lp 54
2.1 Khai báo mt bin, mng đi tng 54
2.2 Truy xut ti các thành phần ca lp 55
3. Phng thc to dựng (constructor) 55
3.1. Công dụng 55
3.2. Cách vit hàm to 55
3.2.1 Đặc điểm ca phng thc to dựng 55
3.2.2. Hàm to mặc đnh 56
3.2.3. Gọi hàm to t hàm to 57
3.3. Khi khi đầu vô danh và khi khi đầu tĩnh 58
3.3.1. Khi vô danh 58
3.3.2. Khi khi đầu tĩnh 59
4. Dọn dẹp: kt thúc và thu rác 60
4.1. Phng thc finalize 60
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 3
1.2. Phần thân 74
1.3. Triển khai giao din 74
2. Lp trong 75
CHNG 3. LP TRỊNH ĐA TUYN(MULTITHREAD) 77
LP TRÌNH SOCKET 77
BÀI 1. LP TRỊNH ĐA TUYN 77
1. Các kin thc liên quan 77
1.1. Tin trình ( process) 77
1.2. Tiểu trình ( thread ) 77
1.3. H điu hƠnh đn nhim, đa nhim 77
1.4. Các trng thái ca tin trình 78
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 4
1.5. Min găng ( Critical Section ) 78
1.6. Khoá cht (deadlock) 78
2. Lp trình đa tuyn trong Java 79
2.1. Lp Thread 79
2.2. Vòng đi ca Thread 82
2.3. Lung chy ngầm (deamon) 82
2.4. Giao din Runnable 82
2.5. Thit lp đ u tiên cho tuyn 83
2.6. Nhóm tuyn (Thread Group) 84
2.7. Đng b các tuyn thi hành 84
BÀI 2. LP TRÌNH SOCKET 86
1. Các kin thc liên quan 86
1.1. Gii thiu Socket 86
1.2. Lp trình Socket trong java 87
2. Kho sát mt s lp trong gói java.net 87
1.3.8 Đa tuyn (Multithreading) 145
2. Truy cp c s d liu trong java 146
2.1. Tng quan 146
2.2. Các lp trong JDBC API dùng để truy cp CSDL 146
2.2.1. Mt s giao din và lp trong gói java.sql 146
2.2.2. Mt s giao din và lp trong gói javax.sql 147
2.3. Kt ni CSDL vi JDBC 147
2.4 Tng tác vi CSDL 152
2.4.1. To ra mt JDBC Statements 152
2.4.2. S dụng đi tng Prepared Statements 161
2.5. Gọi th tục lu tr bằng JDBC 162
2.6. Qun lý giao dch 162
CHNG 5. LP TRÌNH THIT B DI ĐNG VI J2ME 163
1. Gii thiu v J2ME và lp trình cho thit b di đng 163
2. Kin trúc ca J2ME 164
2.1. Gii thiu các thành phần trong nn tng J2ME 164
2.2. Đnh nghĩa v Profile 165
3. Lp trình vi J2ME 166
3.1. MIDlet ậ Vòng đi ca mt MIDlet 166
3.2. Đi tng Display 169
3.3. Đi tng Displayable 169
3.4. Giao din ngi dùng cp cao 169
3.4.1. Đi tng Display, Displayable và Screens 169
3.4.2. Thành phần Form và Items 170
3.4.3. Thành phần List, Textbox, Alert, và Ticker 171
4. Chng trình J2ME đầu tiên 171
4.1. Thit lp môi trng lp trình 171
4.2. To project 172
4.2.1. To ng dụng MIDP Using Source Editor 172
4.2.2. To ng dụng MIDP Using the Visual Mobile Designer 173
chuyên nghip. Java đc xây dựng dựa trên nn tng ca C vƠ C++, nghĩa lƠ Java s
dụng cú pháp ca C vƠ đặc trng hng đi tng ca C++. Java là ngôn ng va biên
dch va thông dch.
Ngày nay, Java đc s dụng rng rãi, không ch để vit các ng dụng trên máy
cục b hay trên mng để xây dựng các trình điu khiển thit b di đng.
2. Mt s đặc trng của Java
Ngôn ng lp trình Java có các đặc trng c bn sau:
Đn gin
Hng đi tng
Đc lp vi h nn
Mnh m
H tr lp trình đa tuyn
Lp trình phân tán
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 7
H tr Internet
Thông dch
2.1. Đơn giản
Nhng ngi thit k mong mun phát triển mt ngôn ng d học và quen thuc
vi đa s ngi lp trình. Java tựa nh C++, nhng đư lc b đi các đặc trng phc tp,
không cần thit ca C vƠ C++ nh: thao tác con tr, thao tác đnh nghĩa chng toán t
(operator overloading),… Java không s dụng lnh “goto” cũng nh file header (.h). Cu
trúc “struct” vƠ “union” cũng đc loi b khi Java. Nên có ngi bo Java lƠ “C++ “,
ngụ ý bo java lƠ C++ nhng đư b đi nhng th phc tp, không cần thit.
2.2. Hướng đối tượng
Có thể nói java là ngôn ng lp trình hoƠn toƠn hng đi tng, tt c trong java
đu là sự vt, đơu đơu cũng lƠ sự vt.
2.3. Độc lập với hệ nền
sinh khi lp trình viên quên gii phóng b nh đư xin cp trc đó. Trong chng trình
Java, lp trình viên không phi bn tơm đn vic cp phát b nh. Quá trình cp phát, gii
phóng đc thực hin tự đng, nh dch vụ thu nhặt nhng đi tng không còn s dụng
na (garbage collection).
C ch by li ca Java giúp đn gin hóa qúa trình x lý li và hi phục sau li.
2.5. Hỗ trợ lập trình đa tuyến
Đơy lƠ tính năng cho phép vit mt chng trình có nhiu đon mã lnh đc chy
song song vi nhau. Vi Java ta có thể vit các chng trình có kh năng chy song song
mt cách d dƠng, hn th na vic đng b tƠi nguyên dùng chung trong Java cũng rt
đng gin. Điu này là không thể có đi vi mt s ngôn ng lp trình khác nh C/C++,
pascal …
2.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…
2.7. Hỗ trợ Internet
Mục tiêu quan trọng ca các nhƠ thit k Java lƠ to điu kin cho các nhƠ phát
triển ng dụng có thể vit các chng trình ng dụng internet vƠ web mt cách d dƠng,
vi Java ta có thể vit các chng trình s dụng các giao thc TCP, UDP mt cách d
dàng, v lp trình web phía máy khách Java có công ngh Java applet, v lp trình web
phía máy ch Java có công ngh Servlet/JSP, v lp trình phơn tán Java có công ngh
RMI, CORBA, EJB, Web Service.
2.8. Thông dịch
Các chng trình Java cần đc thông dch trc khi chy, mt chng trình Java
đc biên dch thƠnh mư byte code mư đc lp vi h nn, chng trình thông dch Java
s ánh x mã byte code này lên mi nn cụ thể, điu này khin Java chm chp đi phần
nào.
3. Các kiểu ng dng Java
Vi Java ta có thể xây dựng các kiểu ng dụng sau:
3.1. ng dụng Applets
Bài ging Ngôn ng lp trình Java
3.8. ng dụng cho các thiết bị di động
Hin nay phần ln các thit b di đng nh: Đin thoi di đng, máy tr giúp cá
nhơn… đu h tr Java. Th nên bn có thể xây dựng các ng dụng chy trên các thit b
di đng nƠy. Đơy lƠ mt kiểu ng dụng khá hp dãn, bi vì các thit b di đng này ngày
càng ph bin và nhu cầu có các ng dụng chy trên đó, đặc bit là các ng dụng mang
tính cht gii trí nh game…
4. Máy o Java (JVM-Java Virtual Machine)
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 10
Máy o là mt phần mm mô phng mt máy tính tht (máy tính o). Nó có tp
hp các lnh logic để xác đnh các hot đng ca máy tính và có mt h điu hành o.
Ngi ta có thể xem nó nh mt máy tính tht (máy tính có phần cng o, h điu hành
o). Nó thit lp các lp tru tng cho: Phần cng bên di, h điu hƠnh, mư đư biên
dch.
Trình biên dch chuyển mã ngun thành tp các lnh ca máy o mà không phụ
thuc vào phần cng và h điu hành cụ thể. Trình thông dch trên mi máy s chuyển
tp lnh nƠy thƠnh chng trình thực thi. Máy o to ra mt môi trng bên trong để thực
thi các lnh bằng cách:
Np các file .class
Qun lý b nh
Dọn “rác”
Vic không nht quán ca phần cng làm cho máy o phi s dụng ngăn xp để
lu tr các thông tin sau:
Các “Frame” cha các trng thái ca các phng thc.
Các toán hng ca mã bytecode.
Các tham s truyn cho phng thc.
Các bin cục b.
Khi JVM thực thi mã, mt thanh ghi cục b có tên “Program Counter” đc s
o J2SE 1.4.2 (Mantis) 26 tháng 6, 2003
o J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
o Java SE 6 (còn gọi lƠ Mustang), đc công b 11 tháng 12 năm 2006
o JDK 6.18,2010
o Java SE 7 (còn gọi lƠ Dolphin), đc bắt đầu t tháng 8 năm 2006 vƠ công
b vƠo năm 2010.
JDK bao gm Java Plug-In, chúng cho phép chy trực tip Java Applet hay
JavaBean bằng cách dùng JRE thay cho s dụng môi trng thực thi mặ c đnh ca trình
duyt.
JDK cha các công c sau:
a) Trình biên dịch, 'javac'
Cú pháp:
javac [options] sourcecodename.java
b) Trình thông dịch, 'java'
Cú pháp:
java [options] classname
c) Trình dịch ngược, 'javap'
javap dch ngc bytecode và in ra thông tin v các thuc tính (các trng), các
phng thc ca mt lp.
Cú pháp:
javap [options] classname
d) Công cụ sinh tài liệu, 'javadoc'
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 12
Tin ích này cho phép ta to ra tp HTML dựa trên các li gii thích trong mã
chng trình (phần nằm trong cặp du /* */).
Cú pháp:
javadoc [options] sourcecodename.java
f) java.net
Cung cp kh năng giao tip vi máy t xa. Cho phép to và kt ni ti Socket
hoặc URL.
g) java.awt.event
Cha các lp, giao din dùng để x lý các sự kin trong chng trình nh chut,
bàn phím.
h) java.rmi
Công cụ để gọi hàm t xa. Chúng cho phép to đi tng trên máy khác và s
dụng các đi tng đó trên máy cục b.
i) java.security
Cung cp các công cụ cần thit để mư hóa vƠ đm bo tính an toàn ca d liu
truyn gia máy trm và máy ch.
k) java.sql
Package này cha Java DataBase Connectivity (JDBC), dùng để truy xut c s
d liu quan h nh Oracle, SQL Server,
7. Chng trình Java đầu tiên
7.1 Cấu trúc chương trình Java
- Mi ng dụng Java bao gm mt hoặc nhiu đn v biên dch (mi đn v biên
dch là mt tp tin có phần m rng .java)
- Mi đn v biên dch bao gm mt hoặc nhiu lp
- Mi ng dụng đc lp phi có duy nht mt phng thc main (điểm bắt đầu ca
ng dụng)
- Mi đn v biên dch có nhiu nht mt lp đc khai báo là public, nu nh
trong đn v biên dch có lp public thì tên ca đn v biên dch phi trùng vi tên ca
lp public (ging ht nhau c ký tự hoa ln ký tự thng)
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 14
ớ
…
ớ
…
Một đơn vị biên dịch là
một tệp tin .java
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 15
classname - Tên ca lp
var_datatype - kiểu d liu ca bin
variablename - Tên ca bin
met_datatype - Kiểu d liu tr v ca phng thc
methodname - Tên ca phng thc
parameter_list ậ Các tham s đc ca phng thc
- Bn còn có thể đnh nghĩa mt lp bên trong mt lp khác. Đơy lƠ lp xp lng
nhau, các thể hin (instance) ca lp này tn ti bên trong thể hin ca mt lp che ph
chúng. Nó chi phi vic truy nhp đn các thành phần ca lp bao ph chúng. Có hai loi
lp trong đó lƠ lp trong tĩnh “static” vƠ lp trong không tĩnh “non static”
Lp trong tĩnh (static)VISUAL BASIC
Lp trong tĩnh đc đnh nghĩa vi t khoá “static”. Lp trong tĩnh có thể truy
nhp vào các thành phần tĩnh ca lp ph nó.
Lp trong không tĩnh (non static)
Lp bên trong (không phi là lp trong tĩnh) có thể truy nhp tt c các thành phần
ca lp bao nó, song không thể ngc li.
7.2 Chương trình Java đầu tiên
Ví d 1: HelloWorld.java
public class HelloWorld
{
javac TenTep.java
Nu không có li s to ra file HelloWorld.class
- Để thông dch và chy chng trình ta dùng lnh:
java TenTep
Lu ý: Phi khai báo đng dn ch đn th mục cƠi đặt java, và th mục cha
các class cần thực thi
Ví d: C:\> set path=C:\Java\jdk1.6.0_16\bin
C:\> set classpath = D:\BTJava\
Th mục cha các file thực thi
Th mục cha các file liên quan đn java
Th mục cha các file th vin ca java
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 17
CHNG 2. LP TRỊNH HNG ĐI TNG TRONG JAVA
Chng nƠy cung cp các ni dung sau:
Nn tng lp trình Java.
Mt s khái nim trong lp trình hng Đi tng (Object-oriented
Programming).
Đnh nghĩa mt Lp (Class).
Đnh nghĩa mt Đi tng (Object).
Nhn thc đc sự khác bit gia Lp vƠ Đi tng.
Nhn thc đc sự cần thit đi vi phng thc Thit lp (Construction) vƠ Hy
(Destruction).
Đnh nghĩa v tính đóng gói d liu (Data Encapsulation)
Hiểu bit v tính Tha k (Inheritance).
Đnh nghĩa tính Đa hình (Polymorphism).
Giao din (Interface), lp trong
BÀI 1. NN TNG LP TRÌNH JAVA
Cha đc dùng
continue
đc dùng trong vòng lặp để bắt đầu mt vòng lặp mi
default
đc s dụng trong lnh switch
do
đc dùng trong vòng lặp điu kin sau
double
kiểu d liu s thực
else
kh năng lựa chọn th hai trong câu lnh if
extends
ch rằng mt lp đực k tha t mt lp khác
false
Gía tr logic
final
Dùng để khai báo hằng s, phng thc không thể ghi đè, hoặc lp không
thể k tha
finally
phần cui ca khi x lý ngoi l
float
kiểu s thực
for
Câu lnh lặp
goto
Cha đc dùng
if
Câu lnh lựa chọn
implements
ch rằng mt lp triển khai t mt giao din
static
Dùng để khai báo bin, thuc tính tĩnh
super
Truy xut đn lp cha
switch
lnh lựa chọn
synchronized
mt phng thc đc quyn truy xut trên mt đi tng
this
Ám ch chính lp đó
throw
Ném ra ngoi l
throws
Khai báo phng thc ném ra ngoi l
true
Giá tr logic
try
s dụng để bắt ngoi l
void
Dùng để khai báo mt phng thc không tr v giá tr
while
Dùng trong cu trúc lặp
Bảng 2.1 Danh mục các từ khóa trong java
2. Đnh danh trong Java (tên)
Tên dùng để xác đnh duy nht mt đi lng trong chng trình. Trong java tên
đc đặt theo quy tắc sau:
- Không trùng vi t khoá
- Không bắt đầu bằng mt s, tên phi bắt đầu bằng kí tự hoặc bắt đầu bằng kí $,_
- Không cha du cách, các kí tự toán học nh +, -, *,/, %
- Không trùng vi mt đnh danh khác trong cùng mt phm vi
Vi cách th nht và cách ba ta có thể vit chú thích trên nhiu dòng, vi cách chú
thích hai ta ch có thể chú thích trên mt dòng.
Chú ý: trong java ta có thể đặt chú thích đơu?, cơu tr li là: đơu có thể đặt
đc mt du cách thì đó có thể đặt chú thích.
4. Kiểu d liu
Các ng dụng luôn x lý d liu đầu vƠo vƠ xut d liu kt qu đầu ra. Đầu
vƠo, đầu ra, vƠ kt qu ca các quá trình tính toán đu liên quan đn d liu. Trong môi
trng tính toán, d liu đc phơn lp theo các tiêu chí khác nhau phụ thuc vƠo bn
cht ca nó. mi tiêu chí, d liu có mt tính cht xác đnh vƠ có mt kiểu thể hin
riêng bit.
Java cung cp mt vƠi kiểu d liu. Chúng đc h tr trên tt c các nn. Ví dụ,
d liu loi int (integer) ca Java đc thể hin bằng 4 bytes trong b nh ca tt c các
loi máy bt lun đơu chy chng trình Java. Bi vy các chng trình Java không
cần phi thay đi khi chy trên các nn khác nhau.
Trong Java kiểu d liu đc chia thƠnh hai loi:
Các kiểu d liu nguyên thy (primitive)
Các kiểu d liu tham chiu (reference)
4.1. Dữ liệu kiểu nguyên thuỷ
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 21
T khoá
Mô t
Kích c
Ti thiểu
Ti đa
Lp bao
(kiểu s nguyên)
byte
-2
63
-1
Long
(kiểu s thực)
float
kiểu thực vi đ chính
xác đn 4 byte
32 bit
IEEE754
IEEE754
Float
double
du chm đng vi đ
chính xác đôi 8 byte
64 bit
IEEE754
IEEE754
Double
(kiểu khác)
char
kiểu kí tự 2 byte
16 bit
Unicode 0
Unicode 2
16
-1
Character
boolean
kiểu logic
tr.
Đon mư sau đơy thực hin phép cng mt giá tr du phẩy đng (float) vi mt
giá tr nguyên (integer).
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 22
float c=34.896751f;
int b = (int)c +10;
Đầu tiên giá tr du phy đng c đc đi thƠnh giá tr nguyên 34. Sau đó nó đc
cng vi 10 vƠ kt qu lƠ giá tr 44 đc lu vƠo b.
Sự ni rng (widening) ậ quá trình lƠm tròn s theo hng ni rng không lƠm
mt thông tin v đ ln ca mi giá tr.Bin đi theo hng ni rng chuyển mt giá tr
sang mt dng khác có đ rng phù hp hn so vi nguyên bn. Bin đi theo hng li
thu nh li (narrowwing) lƠm mt thông tin v đ ln ca giá tr đc chuyển đi. Chúng
không đc thực hin khi thực hin phép gán. ví dụ trên giá tr thp phơn sau du phy
s b mt.
5. Bin, mng và hằng trong Java
5.1 Khai báo biến
Các ng dụng s dụng các bin để lu tr các d liu cần thit hoặc các d liu
đc to ra trong quá trình thực thi chng trình. Các bin đc xác đnh bi mt tên
bin vƠ có mt phm vi tác đng. Phm vi tác đng ca bin đc xác đnh mt cách rõ
rƠng trong chng trình. Mi bin đc khai báo trong mt khi chng trình ch có tác
đng trong phm vi khi đó, không có ý nghĩa vƠ không đc phép truy nhp t bên
ngoƠi khi.
Vic khai báo mt bin bao gm 3 thƠnh phần: kiểu bin, tên ca nó vƠ giá tr ban
đầu đc gán cho bin (không bắt buc). Để khai báo nhiu bin ta s dụng du phẩy để
phơn cách các bin, Khi khai báo bin, luôn nh rằng Java phơn bit ch thng vƠ ch
in hoa (case -sensitive).
Cú pháp:
‘\0’ nu KDL là kí tự
false nu KDL là boolean
null nu KDL là mt lp nƠo đó.
Ví d 1. Khai báo mt mng s nguyên gm 100 phần t
Cách 1:
int mangInt[];//Khai báo một con trỏ đến mảng các số nguyên
mangInt=new int[100];//Tạo ra mảng
Cách 2:
int mangInt[]=new int[100];
Ví d 2: Gi s ta có lp SinhVien đư đc đnh nghĩa, hưy khai báo mt mng gm 100
đi tng ca lp SinhVien
SinhVien arraySinhVien[]=new SinhVien[100];
Chú ý: Lúc này mi phần t ca mng arraySinhVien là mt con tr ca lp SinhVien và
hin gi mi phần t ca mng đang tr đn giá tr null. Để khi to tng phần t ca
mng ta phi lƠm nh sau:
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 24
arraySinhVien[0]=new SinhVien(“sv01”, “Nguyễn Văn An”, “Hưng Yên”);
arraySinhVien[1]=new SinhVien(“sv02”, “Nguyễn Thị Bình”, “Bắc Giang”);
….
arraySinhVien[99]=new SinhVien(“sv100”, “Đào Thị Mến”, “Hà Nam”);
Ngoài cách khai báo trên Java còn cho phép ta kt hp c khai báo và khi gán các
phần t ca mng theo cách sau:
int[] mangInt = {1, 3, 5, 7, 9};
To ra mt mng gm 5 phần t, các phần t ca mng lần lt đc gán các giá
tr là: 1, 3, 5, 7, 9
SinhVien[] mangSinhVien = {
new SinhVien(“sv01”, “Nguyễn Văn A”, “HY”),
class ArrayDemo{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Nhập số phần tử của mảng:");
int n=sc.nextInt();
//Khai báo mảng với số phần tử bằng n
int a[]=new int[n];
//Nhập dữ liệu cho mảng
for(int i=0;i<a.length;i++){
System.out.print("a[" + i + "]=");
a[i]=sc.nextInt();
}
//In mảng ra màn hình
System.out.println("Mảng vừa nhập là");
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
} }
Ví d 2: Nhp vào mt mng s thực sau đó kiểm tra xem mng có phi là mt dưy tăng
hay không?
class ArrayDemo2{
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
//Nhập số phần tử của mảng
System.out.print("Nhập số phần tử của mảng:");
int n=sc.nextInt();
//Khai báo mảng với số phần tử bằng n
int a[]=new int[n];
//Nhập dữ liệu cho mảng
for(int i=0;i<a.length;i++){
System.out.print("a[" + i + "]=");