D ng c b n c a m t t p tin mã ngu n Java có c u trúc nh sau :
package packageName; // Khai báo tên gói, n u có
import java.awt.*; // Khai báo tên th vi n s n có, n u c n dùng
class className // Khai báo tên l p {
/* ây là dòng ghi chú */
int var; // Khai báo bi n
public void methodName() // Khai báo tên ph ng th c { /* Ph n thân c a ph ng th c */ statement (s); // L nh th c hi n } } M t t p mã ngu n Java có th có ba ph n chính:
• Ph n khai báo tên gói (kh i) b ng t khố package. • Ph n khai báo th vi n tham kh o b ng t khố import. • Ph n khai báo n i dung l p b ng t khoá class.
Khai báo Package
Package đ c dùng đ đóng gói các l p trong ch ng trình l i v i nhau thành m t kh i. ây là m t cách h u hi u đ l u tr các l p g n gi ng nhau ho c có cùng m t module thành m t kh i th ng nh t.
Cú pháp khai báo tên gói b ng t khố package: package <Tên gói>;
đ t tên package trong ch ng trình, ng i ta có th ti n hành nh đ t tên th m c trên đa. Ngh a là b t d u b ng tên có ph m vi l n, cho đ n các tên có ph m vi nh , cu i cùng là tên các gói tr c ti p ch a các l p. Ph m vi đ t tên gói, trên th c t , đ c ti n hành theo th t ph m vi l n đ n nh nh sau:
• Tên t ch c • Tên cơng ty • Tên d án
• Tên modul trong d án
• Tên các ch c n ng trong modul. Ví d :
• Tên mi n c a cơng ty là syz.com • Tên d án là pro
• D án có hai modul là mod1 và mod2
• Modul mod1 có hai ch c n ng là k t n i c s d li u connection và bi u di n d li u bean.
• Modul mod2 có hai ch c n ng là giao ti p interface và x lí yêu c u process. Khi đó, c u trúc kh i c a d án đ c mơ t nh hình 3.3
Khi đó, trong ch c n ng bean có l p User, thì ph i khai báo tên kh i trong l p này nh sau: package com.syz.pro.mod1.bean;
u đi m c a package:
• Cho phép nhóm các l p vào v i nhau thành các đ n v nh h n. Vi c thao tác trên các đ n v kh i s g n h n thao tác trên m t t p các l p.
• Tránh vi c xung đ t khi đ t tên l p. Vì các l p khơng cùng package thì có th đ t tên trùng nhau. Khi s l ng l p c a ch ng trình q l n ta có th tránh ph i đ t tên khác nhau cho các l p b ng cách đ t chúng vào các package khác nhau.
• Cho phép b o v các l p. Khi ch ng trình l n, vi c chia nh ch ng trình thành các package s thu n l i h n cho vi c qu n lí và phát tri n.
• Tên gói cịn đ c dùng đ đnh danh l p trong ng d ng.
L u ý:
• Dịng l nh khai báo tên kh i ph i đ c đ t đ u tiên trong t n tin mã ch ng trình.
com
syz
pro
mod1 mod2
connection bean interface process
• Ch đ c khai báo t i đa m t tên kh i đ i v i m i t p mã ngu n Java.
• Các t p tin c a các l p n m cùng gói ng d ng ph i đ c l u trong cùng m t th m c (tên th m c là tên kh i) theo c u trúc kh i c a d án.
• Tên kh i nên đ t theo ch th ng vì tên kh i s là tên th m c t ng ng trong đa, tránh nh m l n v i tên các t p tin là tên các l p c a ch ng trình.
• Khi khơng phân chia ch ng trình thành kh i (ch ng trình đ n gi n), khơng c n thi t ph i khai báo tên kh i đ u ch ng trình.
Khai báo th vi n
Khai báo th vi n đ ch ra nh ng th vi n đã đ c đnh ngh a s n mà ch ng trình s tham kh o t i. Cú pháp khai báo th vi n v i t khoá import nh sau:
import <Tên th vi n>;
Java chu n cung c p m t s th vi n nh sau:
• java.lang: cung c p các hàm thao tác trên các ki u d li u c b n, x lí l i và ngo i l , x
lí vào ra trên các thi t b chu n nh bàn phím và màn hình.
• java.applet: cung c p các hàm cho xây d ng các applet (s trình bày trong Ch ng 6). • java.awt: cung c p các hàm cho xây d ng các ng d ng đ ho v i các thành ph n giao
di n multi media (s trình bày chi ti t trong Ch ng 6).
• java.io: cung c p các hàm x lí vào/ra trên các thiêt b chu n và các thi t b ngo i vi.
• java.util: cung c p các hàm ti n ích trong x lí liên quan đ n các ki u d li u có c u trúc nh Date, Stack, Vector.
Ví d , n u trong ch ng trình c n đ n các thao tác chuy n ki u đ i d li u t ng minh (t ki u string sang ki u int), thì ta s ph i tham kh o th vi n java.lang:
import java.lang.*;
L u ý:
• N u mu n khai báo tham kh o nhi u th vi n, ph i khai báo tham kh o m i th vi n v i m t t khố import.
• N u ch tham kh o m t vài l p trong m t th vi n, nên ch rõ tham kh o l p nào, thay vì ph i khai báo tham kh o c gói (b ng kí hi u “*”) vì tham kh o c gói s t ng kích c t p tin class sau khi biên d ch.
• N u không tham kh o th vi n nào, không c n thi t ph i khai báo các tham kh o v i t khoá import.
Khai báo l p
Ph n th ba là ph n khai báo l p và n i dung c a l p, ph n này luôn b t bu c ph i có đ i v i m t t p mã ngu n Java:
• Khai báo tên l p v i t khố class. • Khái báo các thu c tính c a l p.
• Khai báo các ph ng th c c a l p
Vi c khai báo l p v i các thu c tính và ph ng th c s đ c trình bày chi ti t trong ch ng 4.
3.2.2 Ch ng trình Java đ u tiên
Ch ng trình sau đây cho phép hi n th m t thông đi p (N m trong t p mã ngu n First.java):
Ch ng trình 3.1
package vidu.chuong3;
// ây là ch ng trình “First.java” class First
{
public static void main(String args[]) {
System.out.println(“Hello World”); }
}
biên d ch mã ngu n, ta s d ng trình biên d ch javac. Trình biên d ch xác đnh tên c a file ngu n t i dịng l nh nh mơ t d i đây (gi s đang th m c ch a package vidu và bi n môi tr ng PATH đã đ c thi t l p đúng qui cách):
>javac vidu/chuong3/First.java
Trình d ch javac t o ra file First.class ch a các mã “bytecodes”. Nh ng mã này ch a th th c thi
đ c. ch ng trình th c thi đ c ta c n dùng trình thơng d ch “java interpreter” v i l nh
java. L nh đ c th c hi n nh sau:
>javac vidu.chuong3.First
K t qu s hi n th trên màn hình nh sau:
Hello World
3.2.3 Phân tích ch ng trình đ u tiên
Trong Java, t t c mã l nh đ u ph i đ c t ch c vào trong m t l p nh t đnh. Do đó, m i t p tin mã ngu n xác đnh ít nh t m t l p Java và tên t p tin ph i trùng v i tên l p. Java phân bi t ch hoa và ch th ng, cho nên tên t p tin c a ch ng trình trên ph i trùng v i tên l p: First.java.
package vidu.chuong3;
ây là dòng khai báo tên kh i c a ch ng trình, vì tên kh i c a ch ng trình đ c đ t theo hai m c:
• M c th nh t là ki u bài: ví d (vidu) ho c bài t p (baitap).
Vì đây là ví d , n m ch ng 3 nên thu c vào gói vidu.chuong3. ng th i, t p tin First.java s n m trong th m c: ../vidu/chuong3/.
Ch ng trình này khơng tham kh o th vi n nào nên không c n l nh import nào.
// ây là ch ng trình “First.java”
Ký hi u “// ” dùng đ chú thích dịng l nh. Trình biên d ch s b qua dịng chú thích này. Java h tr hai lo i chú thích:
• Lo i chú thích trên m t dịng, dùng “//”. Trình biên d ch s b qua n i dung b t đ u t kí hi u “//” cho đ n h t dịng l nh ch a nó.
• Lo i chú thích trên nhi u dịng có th b t đ u v i “/*” và k t thúc v i “*/”. Trình biên d ch s b qua n i dung n m gi a hai kí hi u này.
Dòng k ti p khai báo l p có tên First: B t đ u v i t khoá class, k đ n là tên l p
class First
M t đnh ngh a l p n m tr n v n gi a hai ngo c móc m “{“ và đóng “}”. Các ngo c này đánh d u b t đ u và k t thúc m t kh i l nh.
public static void main(String args[ ])
ây là ph ng th c chính, t đây ch ng trình b t đ u vi c th c thi c a mình. T t c các ng d ng java đ u s d ng m t ph ng th c main này.
• T khoá public là m t ch đnh truy xu t. Nó cho bi t thành viên c a l p có th đ c truy xu t t b t c đâu trong ch ng trình.
• T khố static cho phép main đ c g i t i mà không c n t o ra m t th hi n (instance) c a l p. Nó khơng ph thu c vào các th hi n c a l p đ c t o ra.
• T khố void thơng báo cho máy tính bi t r ng ph ng th c s không tr l i b t c giá tr nào khi th c thi ch ng trình.
• String args[] là tham s dùng trong ph ng th c main. Khi khơng có m t thơng tin nào
đ c chuy n vào main, ph ng th c đ c th c hi n v i các d li u r ng – khơng có gì trong d u ngo c đ n.
• System.out.println(“Hello World”); Dịng l nh này hi n th chu i “Hello World” trên
màn hình. L nh println() cho phép hi n th chu i đ c truy n vào lên màn hình.
Truy n đ i s trong dòng l nh
Ch ng trình 3.2 minh ho các tham s (argument) c a các dòng l nh đ c ti p nh n nh th nào trong ph ng th c main.
Ch ng trình 3.2
package vidu.chuong3; class PassArgument{
public static void main(String args[]) {
System.out.println(“This is what the main method received”); System.out.println(args[0]); System.out.println(args[1]); System.out.println(args[2]); } } Biên d ch ch ng trình: >javac PassArgumet.java Th c thi ch ng trình v i dịng l nh: >java PassArgument A 123 B1 S thu đ c trên màn hình k t qu :
This is what the main method received A
123 B1
3.3 CÁC KI U D LI U VÀ TOÁN T C B N TRÊN JAVA 3.3.1 Khai báo bi n