1991:được Sun Microsystems phát triển nhằm mục đích viết phần mềm điều khiển (phần mềm nhúng) cho các sản phẩm gia dụng
lúc đầu được đặt tên là Oak
1995:được phổ cập với sự phát triển mạnh mẽ của Internet
thịtrường phần mềm nhúng không phát triển mạnh
WWW bùng nổ (1993~)
Hiện nay, được chấp nhận rộng rãi với tư cách là một ngôn ngữ (công nghệ) đa dụng
khả chuyển, an toàn
hướng đối tượng, hướng thành phần
30 trang |
Chia sẻ: haohao89 | Lượt xem: 2301 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Bài giảng Ngôn ngữ Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1NGÔN NGỮ JAVA
2
Nội dung
Giới thiệu Java
Chương trình Java đầu tiên
Cơ bản về biến và đối tượng
Các cấu trúc điều khiển
Mảng
Một số lớp trong java
33
Giới thiệu Java
Lịch sử Java
Các dạng ứng dụng của Java
Quá trình dịch chương trình Java
Máy ảo Java – Java Virtual Machine (JVM)
Java Development Kit (JDK)
Một số môi trường phát triển tích hợp (IDE)-
4
Lịch sử Java
1991: được Sun Microsystems phát triển nhằm mục đích viết
phần mềm điều khiển (phần mềm nhúng) cho các sản phẩm
gia dụng
lúc đầu được đặt tên là Oak
1995: được phổ cập với sự phát triển mạnh mẽ của Internet
thị trường phần mềm nhúng không phát triển mạnh
WWW bùng nổ (1993~)
Hiện nay, được chấp nhận rộng rãi với tư cách là một ngôn
ngữ (công nghệ) đa dụng
khả chuyển, an toàn
hướng đối tượng, hướng thành phần
5
Java là gì?
Một ngôn ngữ lập trình hướng đối tượng.
Một ngôn ngữ lập trình vừa biên dịch vừa thông dịch.
Đầu tiên, mã nguồn (.java) được biên dịch để chuyển thành
dạng bytecode (.class) nhờ trình biên dịch javac.
Sau đó được thực thi trên từng máy cụ thể nhờ trình thông dịch
java.
Một ngôn ngữ độc lập nền (phần cứng và hệ điều hành)
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.
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
6
Các chương trình dịch truyền thống
7Chương trình dịch Java
88
Giới thiệu Java
Lịch sử Java
Các dạng ứng dụng của Java
Quá trình dịch chương trình Java
Máy ảo Java – Java Virtual Machine (JVM)
Java Development Kit (JDK)
Một số môi trường phát triển tích hợp (IDE)
9
Các dạng ứng dụng của Java
Applets
Chương trình chạy trên Internet
10
Các dạng ứng dụng của Java
Console applications
Chạy dạng dòng lệnh
11
Các dạng ứng dụng của Java
GUI Applications
Chương trình chạy độc lập với giao diện đồ họa
12
Các dạng ứng dụng của Java
Ứng dụng Web (JSP/Servlet)
1313
Giới thiệu Java
Lịch sử Java
Các dạng ứng dụng của Java
Quá trình dịch chương trình Java
Máy ảo Java – Java Virtual Machine (JVM)
Java Development Kit (JDK)
Một số môi trường phát triển tích hợp (IDE)
14
Dịch và thực thi chương trình Java
Viết mã nguồn: dùng một chương trình soạn thảo (NotePad,…) để viết
mã nguồn 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 “.java” thành mã của máy ảo (bytecode) có đuôi “.class” và lưu lên
đĩa.
Thông dịch và thực thi: ứng dụng được load vào bộ nhớ, thông dịch
và thực thi, dùng trình thông dịch java.
Đưa mã bytecode vào bộ nhớ: đây là bước “loading”. Chương trình
phải được đặt vào trong bộ nhớ trước khi thực thi. “Loader” sẽ lấy các
files chứa mã bytecode có đuôi “.class” và nạp chúng vào bộ nhớ.
Kiểm tra mã bytecode: trước khi trình thông dịch chuyển mã bytecode
thành mã máy tương ứng để 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: cuối cùng 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.
15
Primary
Memory
.
.
.
.
.
.
Disk
Disk
Disk
Editor
Compiler
Class Loader
Program is created in an editor
and stored on disk in a file
ending with .java.
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
.
.
.
.
.
.
Bytecode Verifier Bytecode verifier confirms
that all bytecodes are valid
and do not violate Java’s
security restrictions.
Phase 4
Primary
Memory
.
.
.
.
.
.
Interpreter
Interpreter reads bytecodes
and translates them into a
language that the computer
can understand, possibly
storing data values as the
program executes.
Phase 5
16
Lỗi Chương Trình
errors
errors
Edit and
save program
Compile program
Execute program and
evaluate results
17
Lỗi Chương Trình
1 chương trình có 3 kiểu lỗi:
Lỗi biên dịch (compile-time errors): liên quan đến cú
pháp.
Lỗi xuất hiện trong quá trình thực thi chương trình (run-
time errors), chương trình kết thúc. Ví dụ: chia 1 số cho 0.
logical errors: Kết quả sai.
18
Giới thiệu Java
Lịch sử Java
Các dạng ứng dụng của Java
Quá trình dịch chương trình Java
Máy ảo Java – Java Virtual Machine (JVM)
Java Development Kit (JDK)
Một số môi trường phát triển tích hợp (IDE)
19
Java Virtual Machine - JVM
JVM (máy ảo Java) là một phần mềm mô phỏng một máy
tính thật, được xem như một máy tính thu nhỏ.
Có tập các lệnh logic để xác định hoạt động của máy
tính.
Nó thiết lập lớp trừu tượng cho:
Phần cứng bên dưới
Hệ điều hành
Mã đã biên dịch
JVM cung cấp môi trường bên trong để thực thi chương trình
Java (dạng bytecode).
JVM thông thường được cung cấp dưới dạng phần mềm.
JRE - Java Runtime Environment
2020
Giới thiệu Java
Lịch sử Java
Các dạng ứng dụng của Java
Quá trình dịch chương trình Java
Máy ảo Java – Java Virtual Machine (JVM)
Java Development Kit (JDK)
Một số môi trường phát triển tích hợp (IDE)
21
Java Development Kit (JDK)
Môi trường phát triển và thực thi do Sun Microsystems cung
cấp (
Bao gồm phần mềm và công cụ giúp compile, debug và
execute ứng dụng.
JDK 1.0 - 1996
JDK 1.1 - 1997
JDK 1.2 (Java 2) - 1998
JDK 1.3 - 2000
Java 1.4 - 2002
Java 5 (1.5) – Tiger - 2004
Java 6 - 2006
Cài đặt…
22
Java Development Kit (JDK)
Compiler (trình biên dịch)
Syntax: javac [option] source
Source : files ends with an extension of .java
options :
-classpath…..
23
Java Development Kit (JDK)
Interpreter (trình thông dịch)
Syntax: java [option] classname [arguments]
classname : files ends with an extension of .class
options can include
-classpath ……
2424
Giới thiệu Java
Lịch sử Java
Các dạng ứng dụng của Java
Quá trình dịch chương trình Java
Máy ảo Java – Java Virtual Machine (JVM)
Java Development Kit (JDK)
Một số môi trường phát triển tích hợp (IDE)
25
Một số IDE (Integrated Development Environment )
Giúp phát triển ứng dụng một cách đơn giản, nhanh chóng
và hiệu quả.
Java Studio của Sun
Borland JBuilder của Borland
Eclipse của IBM
JCreator của Xinor
…..
26
Nội dung
Giới thiệu Java
Chương trình Java đầu tiên
Cơ bản về biến và đối tượng
Các cấu trúc điều khiển
Mảng
Một số lớp trong java
27
Cấu trúc một chương trình Java
Trong ngôn ngữ lập trình Java:
Một chương trình được tạo bởi một hay nhiều lớp
Một lớp chứa một hay nhiều phương thức
Một phương thức chứa các câu lệnh chương trình
Một chương trình ứng dụng Java luôn luôn chứa một phương thức
gọi là main. class header
method body
// Những ghi chú về lớp
method header
// Những ghi chú về lớp
28
/*
* 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) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
1. Package declaration
Used to organize a collection of
related classes.
2. Import statement
Used to reference classes.
3. Class declaration
A Java source file can have
several classes but only one
public class is allowed.
declaration order
Cấu trúc một chương trình Java
29
1. Single Line Comment
// insert comments
here
2. Block Comment
/*
* insert comments
here
*/
3. Documentation Comment
/**
* insert
documentation
*/
/*
* 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) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
Cấu trúc một chương trình Java
Comments
30
Chú thích (Comments)
Comments trong một chương trình gọi là inline documentation
Chúng được sử dụng để giải thích mục đích của chương trình và miêu
tả những bước xử lý trong chương trình.
Những comment không ảnh hưởng đến một chương trình làm việc
như thế nào
Java có 3 dạng comment:
// Chú thích một dòng
/* Chú thích trên nhiều dòng: chú thích dòng 1
chú thích dòng 2 ... */
/** Chú thích dạng tài liệu */
31
/*
* 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) {
// print a message
System.out.println("Welcome to
Java!");
}
}
class Extra {
/*
* class body
*/
}
•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.
Cấu trúc một chương trình Java
Class
32
/*
* 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) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
Cấu trúc một chương trình Java
• 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
33
/*
* 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[]) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
Cấu trúc một chương trình Java
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[]
34
/*
* 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) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
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()
35
Chương trình java đầu tiên
Yêu cầu: Viết chương trình xuất chuỗi “Welcome to Java
Programming!” ra màn hình.
Phân tích:
- Cần tác vụ xuất Sử dụng gói của java import java….*
- Cần tạo 1 lớp có chức năng xuất chuỗi này (lớp Welcome) . Vì
chức năng của chương trình đơn giản -> lớp này chỉ có 1 hành vi
main(…), nội dung hành vi là xuất chuỗi được yêu cầu.
Cách làm 1: Viết code bằng 1 editor, về dấu nhắc Command
Prompt biên dịch, chạy chương trình.
Cách làm 2: Nhờ 1 IDE như Jcreator, JPadPro, Jbuilder, … cho
phép vừa viết code vừa thực thi.
36
1 // Welcome1.java
2 // Text-printing program.
3
4 public class Welcome1 {
5
6
7 public static void main( String args[] )
8 {
9 System.out.println("Welcome to Java Programming!");
10
11 }
12
13 }
Welcome to Java Programming!
37
Chương trình Java đầu tiên
javac Welcome1.java
Nếu không có lỗi sẽ tạo ra file Welcome1.class
java Welcome1
Output
38
Welcome to Java Programming!
1 // Fig. 2.3: Welcome2.java
2 // Printing a line of text with multiple statements.
3
4 public class Welcome2 {
5
6
7 public static void main( String args[] )
8 {
9 System.out.print( "Welcome to " );
10 System.out.println( "Java Programming!");
11
12 }
13
14 }
System.out.print keeps the
cursor on the same line, so
System.out.println continues
on the same line.
Bài tập
Viết chương trình in ra thông tin của bạn, thông tin bao gồm:
MaSV, Họ tên, Ngày sinh, Lớp, Điểm trung bình…
vd: MaSV: 12345
Họ tên: Nguyen Thanh Thuong
Ngày sinh: 12-10-1989
Lớp: 08CTH123
Điểm TB: 7.9
Viết chương trình xuất ra các hình dưới đây:
39 40
Nội dung
Giới thiệu Java
Chương trình Java đầu tiên
Cơ bản về biến và đối tượng
Các cấu trúc điều khiển
Mảng
Một số lớp trong java
41
Định danh-Tên
Bắt đầu bằng ký tự, ký tự gạch dưới (underscore ‘_’ ) hay ký tự ‘$’
Sau đó là các ký tự ký số hay ‘_’, ‘$’ , không dùng các ký tự khác
như: khoảng trống, ký hiệu phép toán
Java phân biệt chữ hoa, chữ thường - Total, total, và TOTAL là
những định danh khác nhau
Theo qui ước, người lập trình sử dụng kiểu chữ khác nhau cho những
kiểu định danh khác nhau, chẳng hạn như:
Kiểu chữ hoa đầu cho tên lớp- HelloWorld
Kiểu chữ hoa cho hằng – MAXIMUM
Những từ khóa không được sử dụng và một định danh có thể có độ
dài bất kỳ.
42
Từ khóa
Những từ khóa trong Java:
abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
false
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while
43
Từ khóa
Từ khóa cho các kiểu dữ liệu cơ bản : byte, short, int, long, float,
double, char, boolean
Từ khóa cho phát biểu lặp: do, while, for, break, continue
Từ khóa cho phát biểu rẽ nhánh: if, else, switch, case, default,
break
Từ khóa đặc tả đặc tính một method: private, public, protected,
final, static, abstract, synchronized, volatile, strictfp
Hằng (literal): true, false, null
Từ khóa liên quan đến method: return, void
Từ khoá liên quan đến package: package, import
Từ khóa cho việc quản lý lỗi: try, catch. finally, throw, throws
Từ khóa liên quan đến đối tượng: new, extends, implements, class,
instanceof, this, super
44
Khoảng trắng
Khoảng trống, dòng trống, và tab được gọi là khoảng trắng
Khoảng trắng được sử dụng để tách rời những từ và ký hiệu trong
một chương trình
Nhiều hơn một khoảng trắng sẽ được bỏ qua
Một chương trình java hợp lệ có thể được định dạng trong nhiều
cách
Xem ví dụ: Lincoln2.java
Xem ví dụ Lincoln3.java
45
Lỗi
Một chương trình có thể có 3 kiểu lỗi
Compile-time errors: Trình biên dịch sẽ tìm thấy những lỗi cú
pháp và những lỗi cơ bản khác khi biên dịch chương trình
Nếu compile-time errors tồn tại, một bản dịch có thể thực hiện
được của chương trình không được tạo.
Run-time errors: một lỗi có thể xuất hiện trong suốt quá trình
thực thi chương trình, chẳng hạn như chia 1 số cho 0, làm cho
chương trình kết thúc bất thường.
Logical errors: Chương trình có thể chạy nhưng đưa ra những kết
quả không đúng, có thể do việc sử dụng công thức.
46
Ví dụ về Compilation Errors
public class ShowSyntaxErrors {
public static void main(String[] args)
{
i = 30;
System.out.println(i+4);
}
}
47
Ví dụ về Runtime Errors
public class ShowRuntimeErrors {
public static void main(String[] args) {
int i = 1 / 0;
}
}
48
Ví dụ về Logic Errors
public class ShowLogicErrors {
public static void main(String[] args)
{
// Cong so1 voi so2
int so1 = 3;
int so2 = 5;
so2 += so1 + so2;
System.out.println("so2 bang " + so2);
}
}
49
Phương thức println
Trong chương trình welcome2, chúng ta đã gọi phương thức
println để xuất ra một chuỗi ký tự.
Đối tượng System.out tương ứng với một thiết bị cuối (màn hình)
để nhận kết quả được đưa ra.
System.out.println ("Whatever you are, be a good one.");
object method
name information provided to the method(parameters)
50
Phương thức print
Phương thức print tương tự như phương thức println, ngoại trừ
nó không di chuyển đến dòng kế tiếp.
Do đó, bất kỳ cái gì được xuất ra sau khi câu lệnh print thực thi sẽ
xuất hiện trên cùng một dòng
Xem ví dụ: Countdown.java
51
Toán tử Nối chuỗi
Toán tử nối chuỗi (+): được sử dụng để nối một chuỗi vào cuối một
chuỗi khác
“Hello " + “You"
Nó cũng có thể được sử dụng để nối một số vào một chuỗi
Một hằng chuỗi không thể được ngắt thành 2 dòng trong chương
trình.
Xem ví dụ: Facts.java
52
Toán tử Nối chuỗi
Toán tử (+) cũng được sử dụng cho phép tính cộng
Chức năng của toán tử + phụ thuộc vào kiểu thông tin nó thực hiện
Nếu 2 toán hạng là chuỗi hoặc nếu một là chuỗi và một là số, thì
chức năng của toán tử + là nối chuỗi.
Nếu 2 toán hạng là số, nó thực hiện chức năng cộng 2 số.
Xem Addition.java
53
Ví dụ nối chuỗi
String message = "Welcome " + "to " + "Java";
// ⇒ message = "Welcome to Java"
String s = "Chuong" + 2;
// ⇒ s trở thành Chuong2
String s1 = "Hello" + 'B';
// s1 trở thành HelloB
54
Chuỗi thoát (Escape Sequence)
Vài chuỗi thoát sử dụng trong java:
Xem Roses.java
55
Kiểu dữ liệu
byte
char
boolean
short
int
long
float
double
Array
Class
Interface
Java là ngôn ngữ có kiểu rõ ràng, nghĩa là một biến phải có khai báo
kiểu. Java cung cấp 2 loại kiểu dữ liệu:
56
Kiểu dữ liệu cơ bản (Primitive)
Kích thước và miền giá trị của các kiểu dữ liệu kiểu số:
Type Default Size
(bytes)
Range Description
byte 0 1 -128..127 số nguyên
short 0 2 -32768..32767 số nguyên
int 0 4 -2 tỉ mốt.. 2 tỉ mốt số nguyên
long 0 8 - 9 tỉ tỉ .. 9 tỉ tỉ số nguyên
float 0.0 4 +/- 1.45 E-45 .. +/-3.4 E+38,
+/- infinity, +/-0, NAN
số thực
(Not A Number
double 0.0 8 +/- 1.79E-324 .. +/-3.4 E+308,
+/- infinity, +/-0, NAN
số thực
char \u0000 2 \u0000 .. \uFFFF ký tự Unicode
57
Kiểu dữ liệu tham chiếu (reference)
Trong Java có 3 loại kiểu dữ liệu tham chiếu:
58
Kiểu Ký tự (char)
Biến kiểu char lưu giữ một ký tự
Hằng ký tự được giới hạn bởi cặp dấu nháy đơn ‘ ‘:
'a' 'X' '7' '$' ',' '\n'
Ví dụ:
char topGrade = 'A';
char terminator = ';', separator = ' ';
Sự khác nhau giữa biến kiểu ký tự nguyên thủy và đối tượng
String
59
Chuỗi ký tự
Chuỗi ký tự có thể được miêu tả như một hằng chuỗi (string literal)
bằng cách đặt chuỗi ký tự trong cặp dấu nháy đôi “ “
Examples:
"This is a string literal."
"123 Main Street"
"X"
Mỗi một chuỗi ký tự là một đối tượng trong Java, được định nghĩa
bởi lớp String
Mỗi một chuỗi tương ứng với một đối tượng String
60
Chuyển kiểu dữ liệu
Trong chuyển kiểu dữ liệu, dữ liệu từ một kiểu này được
chuyển sang một kiểu dữ liệu khác.
Ví dụ chuyển số thực sang số nguyên
float c = 34.89675f;
int b = (int)c + 10;
Chuyển dữ liệu chuỗi sang số
Integer.parseInt(chuỗi dạng số nguyên)
Float.parseFloat(chuỗi dạng số thực)
Double.parseDouble(chuỗi dạng số thực)…
61
Chuyển kiểu tự động và ép kiểu
Có 2 loại chuyển kiểu dữ liệu: chuyển tự động và ép kiểu.
Chuyển kiểu tự động chỉ xảy ra khi:
2 kiểu dữ liệu tương thích với nhau
Kích thức kiểu đích lớn hơn kiểu nguồn.
Ép kiểu được sử dụng cho chuyển kiểu tường minh. Thông tin có
thể bị mất trong quá trình chuyển kiểu.
62
Những luật chuyển đổi kiểu dữ liệu
Tất cả giá trị kiểu byte và short được chuyển đổi thành kiểu int.
Nếu một toán hạng kiểu long, thì toàn bộ biểu thức được chuyển
đổi thành kiểu long.
Nếu một toán hạng kiểu float thì toàn bộ biểu thức được chuyển
đổi thành kiểu float.
Nếu một toán hạng kiể