Các phiên bản chính của Java Quá trình dịch chương trình Java JDK – Java Development Kit Thực thi chương trình chỉ với JDK Một số IDE - môi trường phát triển tích hợp 3... Jav
Trang 1TỔNG QUAN LẬP TRÌNH JAVA
Chương 1
Trang 2Các nội dung chính
Trang 3Giới thiệu Java
Java là gì?
Các phiên bản chính của Java
Quá trình dịch chương trình Java
JDK – Java Development Kit
Thực thi chương trình chỉ với JDK
Một số IDE - môi trường phát triển tích hợp
3
Trang 4Java là gì?
Java: là ngôn ngữ lập trình hướng đối tượng, do Sun pt
Java: vừa biên dịch ( compiler ) vừa thông dịch ( interpreter )
bytecode
Java: độc lập nền (phần cứng và hệ điều hành)
họ máy nào đó thì nó cũng chạy đúng trên tất cả các họ máy khác
• Chương trình java có thể chạy trên tất cả các hệ điều
hành, miễn là có cài máy ảo java (Java Virtual Machine)
Write once, run anywhere
Trang 5Giới thiệu Java
Java là gì?
Các phiên bản chính của Java
Quá trình dịch chương trình Java
JDK – Java Development Kit
Thực thi chương trình chỉ với JDK
Một số IDE - môi trường phát triển tích hợp
5
Trang 6Các phiên bản chính của Java
• Còn gọi là ngôn ngữ lập trình Java
• Dùng để viết: ứng dụng desktop, applets, java FX, ứng dụng
web không cần Java EE
• Là java chạy trên các ứng dụng server
• Dùng để viết: Servlet, JSP, JSF, Strut, EJB, Spring,
Hibernate,…
• Ví dụ: Google home page, gmail, Google Maps, Google Docs
• Là java chạy trên thiết bị di động và nhúng
• Ứng dụng viết cho: ĐTDT, PDA, TV set-top box, máy in
Trang 7Giới thiệu Java
Java là gì?
Các phiên bản chính của Java
Quá trình dịch chương trình Java
JDK – Java Development Kit
Thực thi chương trình chỉ với JDK
Một số IDE - môi trường phát triển tích hợp
7
Trang 8Chương trình dịch truyền thống
Trang 9Chương trình dịch Java
9
Trang 10Quá trình thực thi chương trình Java
Viết mã nguồn: soạn thảo tập tin java và lưu lại với tên
có đuôi “.java”
Biên dịch ra mã máy ảo: dùng trình biên dịch javac để
biên dịch mã nguồn thành mã của máy ảo (bytecode), file
này có đuôi “.class”
Thông dịch và thực thi : dùng trình thông dịch java
có đuôi “.class” và nạp chúng vào bộ nhớ
• Kiểm tra mã bytecode: trước khi thực thi thì các mã
bytecode phải được kiểm tra tính hợp lệ
• Thông dịch & thực thi: dưới sự điều khiển của CPU và
trình thông dịch tại mỗi thời điểm sẽ có một mã bytecode
được chuyển sang mã máy và thực thi
Trang 11Primary Memory
.
.
Disk Disk
Compiler creates bytecodes and stores them on disk in a file ending with class.
Class loader reads class files containing
bytecodes from disk and puts those bytecodes in memory.
Phase 1
Phase 2
Phase 3
Primary Memory
.
.
confirms that all bytecodes are valid and do not violate Java’s security restrictions.
Phase 4
Primary Memory
.
.
translates them into a language that the computer can understand, possibly storing data values
as the program executes.
Phase 5
11
Trang 12Giới thiệu Java
Java là gì?
Các phiên bản chính của Java
Quá trình dịch chương trình Java
JDK – Java Development Kit
Thực thi chương trình chỉ với JDK
Một số IDE - môi trường phát triển tích hợp
12
Trang 13JDK - Java Development Kit
Là môi trường phát triển và thực thi do Sun cung cấp
Phiên bản mới nhất là Java 6
Trang 14Tải và cài đặt JDK
Tải Java 6 tại:
http://java.sun.com/javase/downloads/index.jsp
Cài đặt: nên giữ các thiết lập mặc định
Sau khi cài đặt JDK, chương trình sẽ cho lựa chọn cài
tiếp JRE (tích hợp sẵn trong JDK)
Trang 15Giới thiệu Java
Java là gì?
Các phiên bản chính của Java
Quá trình dịch chương trình Java
JDK – Java Development Kit
Thực thi chương trình chỉ với JDK
Một số IDE - môi trường phát triển tích hợp
15
Trang 16Thực thi chương trình chỉ với JDK
Sau đây là cách thực thi một chương trình đơn giản từ dấu nhắc DOS (chỉ cần cài bộ JDK và dùng Notepad có sẵn)
• Dùng Notepad viết chương trình java, lưu tập tin với phần đuôi là ".java", ví dụ Test.java
• Biên dịch chương trình Test.java: dùng lệnh javac
– >javac Test.java– Bước này sẽ tạo ra file có đuôi là class, ví dụ Test.class
– > java Test
– Kết quả chương trình được xuất ra màn hình
Trang 17Giới thiệu Java
Java là gì?
Các phiên bản chính của Java
Quá trình dịch chương trình Java
JDK – Java Development Kit
Thực thi chương trình chỉ với JDK
Một số IDE - môi trường phát triển tích hợp
17
Trang 18IDE (Integrated Development Environment)
Một số IDE giúp phát triển ứng dụng một cách đơn giản, nhanh chóng và hiệu quả
• Borland JBuilder của Borland
• …
Trang 19Các nội dung chính
19
Trang 20* Created on Jul 14, 2005 *
* First Java Program */
package com.jds.sample;
import java.util.*;
/**
* @author JDS */
public class JavaMain {
public static void main(String[] args) {
A Java source file can have several
classes but only one public class is
A Java source file can have several
classes but only one public class is
Trang 21 2003 Prentice Hall, Inc All rights reserved.
1 Single Line Comment
// insert comments here
1 Single Line Comment
// insert comments here
* First Java Program */
package com.jds.sample;
import java.util.*;
/**
* @author JDS */
public class JavaMain {
public static void main(String[] args) {
}
Java Source File Structure
Comments
21
Trang 22* Created on Jul 14, 2005 *
* First Java Program */
package com.jds.sample;
import java.util.*;
/**
* @author JDS */
public class JavaMain {
public static void main(String[] args) {
}
•Every java program includes at
least one class definition
The class is the fundamental
component of all Java programs.
•A class definition contains all
the variables and methods
that make the program work
This is contained in the class
body indicated by the opening
and closing braces.
•A file can have more classes,
but the file name must match
with one in it
Java Source File Structure
Class
22
Trang 23 2003 Prentice Hall, Inc All rights reserved.
/*
* Created on Jul 14, 2005 *
* First Java Program */
package com.jds.sample;
import java.util.*;
/**
* @author JDS */
public class JavaMain {
public static void main(String[] args) {
}
Java Source File Structure
• Braces are used for grouping
statements or block of codes.
• The left brace ( { ) indicates
the beginning of a class body,
which contains any variables
and methods the class needs
• The left brace also indicates
the beginning of a method
body.
• For every left brace that
opens a class or method you
need a corresponding right
brace ( } ) to close the class or
method.
• A right brace always closes
its nearest left brace.
Braces
23
Trang 24* Created on Jul 14, 2005 *
* First Java Program */
package com.jds.sample;
import java.util.*;
/**
* @author JDS */
public class JavaMain {
public static void main(String args[]) {
}
Java Source File Structure
This line begins the main()
method This is the line at which the
program will begin executing.
main() method
Declares a parameter named
args, which is an array of String
It represents command-line
arguments
String args[]
24
Trang 25 2003 Prentice Hall, Inc All rights reserved.
/*
* Created on Jul 14, 2005 *
* First Java Program */
package com.jds.sample;
import java.util.*;
/**
* @author JDS */
public class JavaMain {
public static void main(String[] args) {
}
Java Source File Structure
• A complete unit of work in a
Java program.
• A statement is always
terminated with a semicolon and
may span multiple lines in your
source code
Java statement
This line outputs the string
“Welcome to Java!” followed by
a new line on the screen.
System.out.println()
25
Trang 261 // Text-printing program.
2
3 public class Welcome1 {
4 public static void main( String args[] )
Trang 27 2003 Prentice Hall, Inc All rights reserved.
Nhận tham số từ hàm main
• Ví dụ:
– Chạy chương trình: java Hello Nam
– Kết quả: Xin chao Nam
• Chú ý kiểm tra xem có tham số gởi vào hay không, nếu
không có thì chương trình chạy sẽ bị lỗi: dùng args.length
27
public class Hello {
public static void main( String args[] )
{
System.out.println( “Xin chao " + args[0]);
}
}
Trang 28Các loại lỗi trong một chương trình
– Lỗi khi chạy chương trình (run-time errors): là lỗi xảy ra khi
chương trình đang thực thi (ví dụ lỗi chia cho 0), làm chương trình bị dừng không thể thực hiện tiếp được nữa
– Lỗi luận lý (logical errors): Chương trình vẫn thực thi bình
thường, nhưng kết quả kết xuất không đúng (ví dụ, điều kiện hoặc công thức sai)
28
1-28
Trang 29Nội dung
29
Trang 30Biến – khái niệm
Biến là vùng nhớ dùng lưu trữ giá trị cho chương trình
duy nhất gọi là tên biến
Trang 31Biến – Biến cục bộ, toàn cục
Biến cục bộ phải được khởi tạo giá trị trước khi
31
Trang 32Biến – quy tắc đặt tên
Quy tắc đặt tên biến (đối tượng, hàm, lớp, interface):
• Ký tự bắt đầu là chữ cái, hoặc dấu $ hoặc _
• Ngoài ký tự bắt đầu, các ký tự khác có thể là chữ cái, chữ
số, dấu $ hoặc _
Trang 34Kiểu dữ liệu
Có hai kiểu dữ liệu:
• Kiểu dữ liệu cơ sở (Primitive data type)
• Kiểu dữ liệu tham chiếu - dẫn xuất (Reference data type)
Trang 35Kiểu dữ liệu cơ sở
Java có 8 kiểu dữ liệu cơ sở:
Kiểu cơ sở
kiểu luận lý
boolean
kiểu sốkiểu nguyên kiểu thực
kiểu ký tự
char
byte short int long float double
35
Trang 36Kiểu dữ liệu cơ sở (tt.)
Bảng giá trị của các kiểu cơ sở
Type Bits Lowest Value Highest Value
char 16 '\u0000' [0] '\uffff' [2 16 -1]
byte 8 -128 [-2 7 ] +127 [2 7 -1]
short 16 -32,768 [-2 15 ] +32,767 [2 15 -1]
int 32 -2,147,483,648 [-2 31 ] +2,147,483,647 [2 31 -1]
long 64 -9,223,372,036,854,775,808 [-2 63 ] +9,223,372,036,854,775,807 [2 63 -1]
float 32 ±1.40129846432481707e-45 ±3.40282346638528860e+38
double 64 ±4.94065645841246544e-324 ±1.79769313486231570e+308
Trang 37Chuyển đổi giữa các kiểu dữ liệu cơ sở
Toán tử ép kiểu:
Ví dụ:
int x=3, y=2;
float kq = (float)x/y;
Ép kiểu rộng (widening conversion): từ kiểu nhỏ sang
kiểu lớn (không mất mát thông tin)
Ép kiểu hẹp (narrow conversion): từ kiểu lớn sang kiểu
nhỏ (có khả năng mất mát thông tin)
float fNum = 2.2;
int iCount = (int) fNum; // (iCount = 2)
<tên_biến> = (kiểu_dữ_liệu)<tên_biến>;
37
Trang 38Kiểu dữ liệu
Có hai kiểu dữ liệu:
• Kiểu dữ liệu cơ sở (Primitive data type)
• Kiểu dữ liệu tham chiếu - dẫn xuất (Reference data type)
Trang 39Kiểu dữ liệu tham chiếu
Kiểu dữ liệu tham chiếu biểu diễn cho đối tượng
Trang 40• Khai báo biến có kiểu dữ liệu cơ sở
int age = 0;
• Khai báo biến có kiểu dữ liệu tham chiếu (khai báo object)
Date now = new Date();
String name = new String("Jason");
So sánh cách khai báo 2 loại kiểu dữ liệu
tên biến
kiểu cơ
sở
giá trị khởi tạo
tên đối tượng kiểu tham
Trang 41Khai báo đối tượng và khởi tạo
Trang 43Toán tử quan hệ & logic
Toán tử quan hệ & logic:
&& AND (biểu thức logic)
! NOT (biểu thức logic)
43
Trang 45Toán tử điều kiện (toán tử 3 ngôi)
Toán tử điều kiện:
Trang 46Toán tử chuỗi
Toán tử chuỗi (+) được sử dụng để nối các toán hạng
Trong một câu lệnh, nếu có một toán hạng kiểu chuỗi (String) thì
các toán hạng khác cũng được chuyển sang kiểu chuỗi
String fname = "Josephine", lname = "Santos", mi = "T";
String fullName = lname + ", " + fname + " " + mi + "." ;
String nickName = "Jessy" ;
int age = 21;
System.out.println( "My full name is: " + fullName);
System.out.println( "You can call me " + nickName + "!" );
System.out.println( "I'm " + age + " years old." );
My full name is: Santos, Josephine T.
You can call me Jessy!
Ví dụ:
Kết quả:
Trang 48Khai báo hằng
Dùng từ khóa final để khai báo hằng
Ví dụ:
final double CM_PER_INCH = 2.54;
Giá trị hằng không được phép thay đổi trong chương
trình, nó chỉ được gán giá trị một lần ở dòng khai báo
hằng
final <Kiểu_dữ_liệu> tên_hằng = giá_trị_hằng;
Trang 49Nội dung
49
Trang 50Các cấu trúc điều khiển
Trang 51• condition là biểu thức mang trị boolean
• Nếu condition là true, các lệnh sau if sẽ được thi hành
• Nếu condition là false, các lệnh sau else sẽ được thi hành
• Nếu có nhiều điều kiện thì có thể lồng if-else vào trong if hoặc else
} else if (age < 20){
System.out.println( "You're a teenager." );
} else { System.out.println( "You're probably old " );
}
Cú pháp:
Ví dụ:
You're a teenager.
Trang 52• switch() sử dụng khi có các điều kiện hữu hạn rời rạc
• exp chỉ có thể là char-byte-short-int, val là hằng của exp
• case sẽ được duyệt lần lượt từ trên xuống cho đến khi gặp break
• default sẽ được thi hành khi không có val nào thỏa exp
Trang 53Kết quả:
53
Trang 54Kết quả
Trang 55• Các lệnh trong for được thực hiện lặp lại trong khi condition là true
• init chứa danh sách khai báo hoặc biểu thức, thực thi chỉ 1 lần
• condition sẽ được kiểm tra sau khi thực hiện exp
• exp là danh sách biểu thức, thực thi sau mỗi lần lặp
• Các thành phần trong for không bắt buộc phải có, for(;;) là 1 vòng lặp vô hạn
for (init; condition; exp) {
Kết quả:
55
Trang 56} System.out.println( "Burp!" );
Cú pháp:
Ví dụ:
Uhm, yum, yum
Uhm, yum, yum
Uhm, yum, yum
Uhm, yum, yum
Uhm, yum, yum
Burp!
Kết quả:
Trang 57Cú pháp:
Ví dụ:
Don't disturb! I'm studying
Don't disturb! I'm studying
Don't disturb! I'm studying
zzzZZZ
zzzZZZ
Kết quả:
57
Trang 58void printX( int x) {
Trang 59Câu hỏi kiểm tra
• Cần cài chương trình gì để viết Java?
• Hàm bắt đầu chạy chương trình Java có tên là
gì? Cú pháp hàm như thế nào?
• Có bao nhiêu kiểu dữ liệu cơ sở trong Java? Bao
nhiêu kiểu dữ liệu tham chiếu?
• 4 kiểu dữ liệu số nguyên trong Java?