? 1990: Ngôn ngữ Oak đuợc tạo ra bởi
James Gosling trong dự án Green của
Sun MicroSystems nhằm phát triển phần
mềm cho các thiết bị dân dụng.
? 1995: Oak đổi tên thành Java.
60 trang |
Chia sẻ: lylyngoc | Lượt xem: 1817 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Lập trình Java cơ bản - Nguyễn Hữu Thể, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1
LẬP TRèNH JAVA
JAVA CƠ BẢN
Nguyễn Hữu Thể
2
java - sơ lƯợc về ngôn ngữ
Lịch sử phát triển:
1990: Ngôn ngữ Oak được tạo ra bởi
James Gosling trong dự án Green của
Sun MicroSystems nhằm phát triển phần
mềm cho các thiết bị dân dụng.
1995: Oak đổi tên thành Java.
3
Chương trỡnh dịch Java
“Write One, Run Any Where”
4
Chương trỡnh dịch Java
5
Java development kit (JDK)
Bộ phát triển ứng dụng java gồm:
javac: trình biên dịch ngôn ngữ java thành mã byte code
java (máy ảo java - Java Virtual Machine): Thông dịch mã
bytecode của các chương trình kiểu application thành mã thực
thi của máy đích.
appletviewer: Bộ thông dịch thực thi applet.
javadoc: Tạo tài liệu tự động.
jdb: Gở rối.
rmic: Tạo stub cho ứng dụng kiểu RMI.
rmiregistry: Phục vụ tên (Name Server) trong hệ thống RMI
6
Download JDK
7
Download JDK
8
Tool
Notepad
NotePad ++
Netbeans
Eclipse
9
Tool
Notepad
NotePad ++
Netbeans
Eclipse
10
Tool
Eclipse
11
Chương trỡnh Java đầu tiờn
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Kiểu dữ liệu cơ sở
Là cỏc dữ liệu được xỏc định trong ngụn ngữ
12
13
Kiểu mảng
// Long syntax
int[] numbers = new int[5] {20, 1, 42, 15, 34};
// Short syntax
int[] numbers2 = {20, 1, 42, 15, 34};
int[][] numbers = new int[3][3];
int[][] numbers2 = {{2, 3, 2}, {1, 2, 6}, {2, 4, 5}};
14
Kiểu mảng
int[] anArray; // declares an array of integers
anArray = new int[10]; //create an array of integers
anArray[0] = 100; // initialize first element
anArray[1] = 200; // initialize second element
anArray[2] = 300; // etc.
Mảng kiểu chuỗi
String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"}};
String a = names[0][0] //Mr
String b = names[1][0]); //Smith
Giỏ trị mặc định
Lỗi hay gặp phải khi lập trỡnh là sử dụng biến chưa khởi tạo
Java hỗ trợ khởi tạo cỏc giỏ trị mặc định cho cỏc biến.
15
Chuyển đổi kiểu dữ liệu
Dựng để chuyển từ một kiểu dữ liệu này sang kiểu dữ liệu khỏc
Cú 2 dạng ộp kiểu:
ẫp kiểu ngầm định
ẫp kiểu tường minh
16
Chuyển đổi kiểu dữ liệu (2)
17
ẫp kiểu ngầm định
Khi một kiểu dữ liệu được gỏn cho 1 biến của 1 kiểu khỏc tự
động chuyển kiểu
Điều kiện:
Hai kiểu phải tương thớch
Kiểu đớch phải lớn hơn kiểu nguồn
18
ẫp kiểu tường minh
Khi cần chuyển sang kiểu cú độ chớnh xỏc cao hơn
19
Định dạng nhập xuất
Mó định dạng: bất kỡ một đầu ra được
hiển thị trờn màn hỡnh cần phải được
định dạng
20
Định dạng nhập xuất (2)
Hàm printf() trong Java được sử dụng để định dạng kiểu dữ liệu
ở console
Vớ dụ:
public static void main(String[] args) {
int i = 10;
System.out.printf("gia tri cua i la %d", i);
}
21
Lớp Scanner
Cho phộp người dựng đọc giỏ trị của một vài kiểu
Một số phương thức của Scanner:
public static void main(String[] args) {
Scanner scaner = new Scanner(System.in);
}
Đối tượng InputStream
22
Dóy Escape
23
Toỏn tử luận lý
Cỏc biểu thức cú kiểu trả về là boolean, cú thể kết hợp lại với
nhau bằng cỏc toỏn tử luận lý như:
AND (& hoặc &&)
OR (| hoặc ||)
XOR (^)
NOT (!)
24
25
Toỏn tử
26
Toỏn tử
27
Toỏn tử
28
Toỏn tử
29
Cỏc toỏn tử làm việc với bit
Phộp toỏn trờn bit:
& , | , ^ , > ,>>>, ~
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0; c = a & b; /* 12 = 0000 1100 */
c = a | b; /* 61 = 0011 1101 */
c = a ^ b; /* 49 = 0011 0001 */
c = ~a; /*-61 = 1100 0011 */
c = a << 2; /* 240 = 1111 0000 */
c = a >> 2; /* 15 = 1111 */
c = a >>> 2; /* 15 = 0000 1111 */
Biểu thức & toỏn tử
Phộp toỏn trờn kiểu chuỗi String:
Java dựng toỏn tử + để nối hai chuỗi lại với nhau
Độ ưu tiờn của cỏc toỏn tử
System.out.println(name + " is a " + color);
30
Tớnh kết hợp của cỏc phộp toỏn
31
Từ khúa
Từ khúa í nghĩa
abstract Dựng để khai bỏo lớp, hàm 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ệnh switch.
char Kiểu dữ liệu kớ tự.
catch Được sử dụng trong xử lý ngoại lệ.
class Dựng để khai bỏo lớp.
const Khai bỏo biến theo sau là biến hằ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 sử dụng trong vũng lặp điều kiện sau.
32
Từ khúa (2)
Từ khúa í nghĩa
double Kiểu dữ liệu số thực.
else Khả năng lựa chọn thứ 2 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 Giỏ 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 Nhảy tới dũng lệnh bất kỡ đó được đặt nhón
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.
33
Từ khúa (3)
Từ khúa í nghĩa
instance of Kiểm tra một đối tượng cú phải là một thể hiện của một lớp
hay khụng.
int Kiểu số nguyờn.
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ụn ngữ C++.
new Tạo một đối tượng mới.
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.
public Đặc tả truy xuất.
protected Đặc tả truy xuất.
return Trả giỏ trị về
short Kiểu số nguyờn.
34
Từ khúa (4)
Từ khúa í nghĩa
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.
35
36
java - ứng dụng kiểu application (2)
Ví dụ ứng dụng HelloWorld:
Định nghĩa trong lớp HelloWorld
Chứa trong tập tin HelloWorld.java
Chú giải: System.out.print() : in ra màn hình
37
ví dụ (1)
In ra màn hình:
Sử dụng phương thức System.out.print(arg1 + arg2+ ...+argn);
arg1, arg2, argn: các tham số có kiểu tùy ý.
38
ví dụ (2)
Đọc ký tự từ bàn phím:
Sử dụng phương thức int System.in.read();
Giá trị trả về là thứ tự trong bảng mã ascii của các ký tự nhận
từ bàn phím.
39
java - cấu trúc điều khiển
Lệnh if - else
Phép toán ?
Lệnh switch
While
Do - while
For
Break
Continue
Return
40
Lệnh if - else
if ( condition ) { Task for the true condition; }
else { Task for the false condition; }
41
Phép toán ?
Phép toán ?:(condition) ? Operation1 : Operation2;
if ( condition == true ) { return value of Operation1; }
else { return value of Operation2 ;}
42
Lệnh switch
switch ( variable ) {
case value1 : { Task 1; break; }
case value2 : { Task 2; break; }
. . .
default: Task n;
}
43
Lệnh switch
44
while
while (condition == true){
The condition is true, so we have to do this task;
}
45
do - while
do {
Do this task until the condition gets false;
} while (condition ==true) ;
46
for
for (khởi tạo; điều kiện; bước tăng/giảm){
The condition is true, so we do this task;
operation2;
}
47
Lệnh break
Vòng lặp sẽ kết thúc khi gặp lệnh break;
48
Lệnh continue
Các lệnh sau lệnh continue sẽ bị bỏ qua, một chu kỳ lặp mới
bắt đầu.
49
Đổi chuỗi thành số
50
Truyền đối số qua dũng lệnh
Đối số của chương trỡnh
Các đối số đa vào chương trình cách nhau khoảng trắng trên dũng
lệnh.
Các đối số chứa trong một mảng kiểu chuỗi (String) : args.
Số lượng đối số chỉ ra bởi thuộc tính length của mảng.
Try-catch-finally
Sử dụng khối try, catch, finally để bắt giữ cỏc ngoại lệ
Khối lệnh cú thể nộm ngoại lệ
Khối lệnh sẽ thực hiện
nếu ngoại lệ xảy ra
Khối lệnh sẽ thực hiện bất chấp
ngoại lệ xảy ra hay khụng
51
Chuỗi (String)
Java hỗ trợ Unicode mỗi kớ tự dài 16 bit
Vớ dụ hằng chuỗi
System.out.println(“Hello world”);
Ghộp chuỗi:
Dựng cỏc toỏn tử + và += để ghộp chuỗi.
Vớ dụ:
double distance = 45.5;
System.out.println("Distance = "+ distance +" miles.");
Distance = 45.5 miles.
Chuỗi
Khai bỏo và sử dụng kớ tự
char cú độ dài 2 bytes và chứa cỏc số nguyờn khụng dấu.
Hằng kớ tự được biểu diễn trong dấu nhỏy đơn (’)
Cú thể nhập cỏc kớ tự đơn bằng dóy escape sequence \uxxx chỉ
định thứ tự theo thập lục phõn.
char c = '\u0a76';
System.out.println("Char = "+ c);
String - Constructor
public String() ;
public String(String original);
public String(char value[]);
public String(char value[], int offset, int count);
public String(int[] codePoints, int offset, int count);
public String(byte bytes[], int offset, int length, String charsetName);
public String(byte bytes[], int offset, int length, Charset charset); (1.6)
public String(byte bytes[], String charsetName);
public String(byte bytes[], Charset charset); (1.6)
public String(byte bytes[], int offset, int length);
public String(byte bytes[])
public String(StringBuffer buffer);
public String(StringBuilder builder);
public String(byte ascii[], int hibyte, int offset, int count);
public String(byte ascii[], int hibyte);
String
Vớ dụ:
String s = new String();
Chỳ ý:
• Kớ tự trong Java là kớ tự 16bit, khụng phải ASCII 8 bit
• Cỏc encoding (charset): cỏc chế độ mó húa kớ tự nền được sử
dụng trong hệ thống để chuyển đổi kớ tự ASCII thành
Unicode.
– VD: UTF-8, UTF-16, US-ASCII, ISO-8859-1, …
Chiều dài =0
Cỏc phương thức chuỗi String
Demo:
Phương thức kiểm tra lớp String
• length(), charAt(), getChars(..), getBytes(…), hashCode()
Phương thức so sỏnh lớp String
• equals(…), equalsIgnoreCase(…), compareTo(…),
compareToIgnoreCase (…), regionMatches(…),
startsWith(…), endWith(…)
Phương thức lập chỉ mục lớp String
• indexOf(…), lastIndexOf(…)
Phương thức chuyển đổi lớp String
• substring(…), concat(…), replace(…), toLowerCase(…),
toUpperCase(…), trim(), toCharArray(…), intern()
Cỏc phương thức chuỗi
Demo
Tớnh dung lượng và chiều dài lớp StringBuffer:
• length(), capacity(), ensureCapacity(…), setLength(…)
Phương thức char của StringBuffer
• charAt(…), getChars(…), setCharAt(…)
Nối thờm lớp StringBuffer
• append(…)
Xúa, thay thế
• delete(…), replace(…)
Chuỗi con
• substring(…)
Chốn lớp
• insert(…)
Khỏc
• reverse(), toString(), readObject(…)
Lớp Character
Useful Methods in the Character Class
Method Description
boolean isLetter(char ch)
boolean isDigit(char ch)
Determines whether the specified char value is a letter
or a digit, respectively.
boolean isWhiteSpace(char ch)
Determines whether the specified char value is white
space according to the Java platform.
boolean isUpperCase(char ch)
boolean isLowerCase(char ch)
Determines whether the specified char value is upper-
or lowercase, respectively.
char toUpperCase(char ch)
char toLowerCase(char ch)
Returns the upper- or lowercase form of the specified
char value.
toString(char ch)
Returns a String object representing the specified
character value.
int digit(char ch, int radix)
Returns the numeric value of the character in the
specified radix.
58
Vớ dụ
Cỏc kớ số Character
Character rất hữu ớch khi: chuyển đổi kớ tự thành số nguyờn trong
1 cơ số.
int digit = 12;
char c = Character.forDigit(digit, 16);
System.out.println(digit + " = " + c);
char c = 'F';
int digit = Character.digit(c, 16);
System.out.println(c + " = "+ digit);