24/05/2018, 20:34

Các khái niệm cơ sở

Văn bản mã nguồn JAVA của chương trình Là tệp văn bản Text, Có thể soạn thảo bằng bất cứ bộ soạn thảo văn bản nào. Quy ước đuôi là .java Phân biệt chữ IN HOA, chữ thường - Case ...

Văn bản mã nguồn JAVA của chương trình

Là tệp văn bản Text,

Có thể soạn thảo bằng bất cứ bộ soạn thảo văn bản nào.

Quy ước đuôi là .java

Phân biệt chữ IN HOA, chữ thường - Case sensitive

Chú thích : giống C++

// chú thích cuối dòng

/* nhiều dòng

chú thích */

Dịch và chạy chương trình.

Gọi chương trình dịch : TEXT --> Byte-code.

javac <tên tệp. java> <tên tệp đích. class>

Quy ước tệp mã byte-code có đuôi .class

Mã byte-code không phải là mã máy.)

JVM - Java Virtual Machine sẽ thông dịch -> portability

Cho chạy: java <tên tệp mã byte-code>

Không cần gõ đuôi class

Tên class chính = tên tệp (.java) = tên tệp byte-code( .class)

Ví dụ

Chương trình "Hello World !".

class Hello {

public static void main(String[] arguments){

System.out.println("hello World !");

}

}

Soan thảo tệp Hello.java.

Biên dịch : javac Hello.java

Sẽ tạo thành tệp byte-code Hello.class

Cho chạy : java Hello

Java có 8 kiểu dữ liệu nguyên thuỷ. Đó là :

byte, short, int, long, float, double, char, boolean.

Các kiểu số nguyên

Kiểu byte, short, int, long là các số nguyên

8-, 16-, 32-, 64-bit.

Kiểu Kích thướcbyte Miền giá trị
ByteShortIntlong 1248 -128..127-32768..32767-2147483648..2147483647-9223372036854775808..9223372036854775807

Cách viết các giá trị :

Cơ số 10 - Thập phân - decimal,

Cơ số 16 - hexadecimal (bắt đầu bằng 0x hoặc 0X),

Cơ số 8 - octal (bắt đầu bằng 0).

Long decimal kết thúc bằng l hoặc L .

Các kiểu số thực.

Kiểu Byte Miền giá trị Chữ số có nghĩa
Floatdouble 48 +/- 3.4E+38 +/- 1.4 E -45+/- 1.79 E +308 +/- 4.94 E-324 6-714-15

Kiểu float = 32 bit, phải kết thúc bằng f hoặc F.

Kiểu double = 64-bit, phải kết thúc bằng d hoặc D.

Mặc định là double.

4 dạng sau :

Ví dụ Quy tắc
12.34E-2 f.34 E -10 d123 E +4 fNaN <Phần nguyên>. <phần lẻ> < phần mũ> <suffix>. <phần lẻ> < phần mũ> <suffix><Phần nguyên> < phần mũ> <suffix>

Giải thích :

suffix là f, F, d, D như đã nêu trên, có thể vắng mặt.

Phần mũ là chữ cái e hoặc E , dấu + hoặc - và một số nguyên. Có thể có hoặc không. Bắt buộc phải có nếu dùng dạng thứ 3.

Ví Dụ 1000000.0 = 1.0E6

NaN = "not a number,"

Kiểu kí tự

char = kí tự 16-bit Unicode. Chứa bộ mã kí tự ASCII,

Có thêm nhiều kí tự của các thứ tiếng khác nhau.

Một giá trị kí tự 'A'.

Thể hiện các kí tự đặc biệt : mã thoát là kí tự gạch xiên :

Bảng mã thoát của các kí tự đặc biệt

Mã thoát Kí tự đặc biệt
 Backspace
Tab
Linefeed
f Form feed
Carriage return
" Double quote
' Single quote
Backslash

Kiểu lôgic

boolean : true, false.

Các phép toán.

số học - arithmetic

so sánh - relational,

lô gíc - logical,

thao tác bit-manipulation,

chuyển đổi kiểu - caste,

chọn theo điều kiện if - selection,

Toán tử gán - assignment operators.

Bảng các toán tử của Java.

Operator Type Operator Description Example
Arithmetic + Addition a + b
- Subtraction a - b
* Multiplication a * b
/ Division a / b
% Modulus a % b
Relational > Greater than a > b
< Less than a < b
>= Greater than or equal a >= b
<= Less than or equal a <= b
!= Not equal a != b
== Equal a == b
Logical ! Not !a
&& AND a && b
|| OR a || b
Bit-manipulation ~ Complement ~a
& AND a & b
| OR a | b
^ Exclusive or a ^ b
<< Left-shift a << b
>> Right-shift a >> B
>>> Zero-filled right-shift a >>> b
Assignment = Assignment a = b
++ Increment and assign a++
-- Decrement and assign a--
+= Add and assign a += b
-= Subtract and assign a -= b
*= Multiply and assign a *= b
/= Divide and assign a /= b
%= Take modulus and assign a %= b
|= OR and assign a |= b
&= AND and assign a &= b
^= XOR and assign a ^= b
<<= Left-shift and assign a <<= b
>>= Right-shift and assign a >>= b
>>>= Zero-filled left-shift and assign a >>>= b
Caste (type) Convert to type (char) b
Instance instanceof Is instance of class? a instanceof b
Allocation new Create a new object of a class new A()
Selection ? : If...Then selection a ? b : c

String không phải là một kiểu nguyên thuỷ trong Java.

Là một lớp đã được triển khai sẵn trong package java.

Khai báo và gán trị

String <tên biến> ;

đối tượng String.

Giá trị string : nằm trong cặp dấu nháy kép (").

String HoTen = "Nguyen Van A";

String xaurong = "";

Trong một xâu có thể dùng mã thoát (dấu gạch xiên ).

Ví dụ : "Tác phẩm " Thằng ngốc " của ..." = Tác phẩm "Thằng ngốc" của ...

" Các môn học : 1 - Toán 2 - Tin ..." = Các môn học :

1 - Toán

2 - Tin ...

Các phép toán

In ra một String

System.out.println(" Ho va ten :" );

System.out.println(HoTen);

Nối xâu : +

System.out.println(" Ho va ten :"+ HoTen);

sẽ in ra dòng chữ : Ho va ten : Nguyen Van A

Độ dài xâu :

length( ) cho độ dài = số kí tự trong xâu.

String HoTen = "Nguyen Van A";

Int dodaiten = HoTen.length() ; //= 12

Một số phương thức khác.

toLowerCase() ,

toUpperCase().

Ví dụ

String tenthuong = HoTen.toLowerCase();

// tenthuong = nguyen van a

String tenhoa = HoTen.toUpperCase();

// tenhoa = NGUYEN VAN A

equals( ).

xau1.equals(xau2));

Phép so sánh có phân biệt in thường, in hoa.

String xau1 = "Ha noi";

String xau2 = "Ha Noi";

System.out.println( "giong nhau = " + xau1.equals(xau2));

Các câu lệnh rẽ nhánh.

IF ... THEN ;

IF ... THEN ... ELSE ;

SWITCH ... CASE .

Java có sẵn đối tượng Calendar trong package java.util để xử líthời gian và ngaỳ tháng.

Chương trình minh hoạ.

import java.util.*;

class NgayThangApp{

public static void main(String[] arguments) {

//get current time, date

Calendar now = Calendar.getInstance();

int hour = now.get(Calendar.HOUR_OF_DAY);

int minute = now.get(Calendar.MINUTE);

int day = now.get(Calendar.DAY_OF_MONTH);

int month = now.get(Calendar.MONTH) + 1;

int year = now.get(Calendar.YEAR);

if (hour < 12)

System.out.println(" Good morning ! ");

else if (hour < 17)

System.out.println(" Good afternoon ! ");

else

System.out.println(" Good evening ! ");

// show time

System.out.print(" It is ");

if (minute != 0)

System.out.print(" "+ minute + " minutes past ");

System.out.print(hour + " o'clock ");

//show month

switch (month) {

case 1 : System.out.print("January");

break;

case 2 : System.out.print("Febrary");

break;

case 3 : System.out.print("March");

break;

case 4 : System.out.print("Avril");

break;

case 5 : System.out.print("May");

break;

case 6 : System.out.print("June");

break;

case 7 : System.out.print("July");

break;

case 8 : System.out.print("August");

break;

case 9 : System.out.print("Septem.");

break;

case 10 : System.out.print("Octb");

break;

case 11 : System.out.print("Novem.");

break;

case 12 : System.out.print("Decem.");

break;

}

System.out.println(" "+ day + " , " + year );

}

}

Xây dựng vòng lặp

Vòng lặp FOR

For (int number = 0; number <1000; number ++) {

If (number % 10 == 0) System.out.println("#: "+ number);

}

Ba phần trong câu lệnh FOR.

khởi tạo, kiểm tra điều kiện, tăng/giảm biến đếm.

Cách nhau dấu chấm phẩy (;).

Có thể xây dựng vòng lặp kép

for (i=0, j=0 ; i* j <1000 ; i++ , j += 2 ) {

System.out.println (i + " * " + j + " = " + i*j);

}

Vòng lặp WHILE

While ( index <= 1000) {

Index += 10 ;

System.out.println(" index = " + index);

}

Vòng lặp DO ... WHILE

Do {

Index += 10 ;

System.out.println(" index = " + index);

} while ( index < 1000);

Kết thúc sớm vòng lặp - lệnh BREAK.

While ( index <= 1000) {

index += 10 ;

if (index == 500) break;

System.out.println(" index = " + index);

}

Đặt tên cho vòng lặp.

Đặt tên và dấu hai chấm ngay trước lệnh bắt đầu vòng lặp.

Mục đích : để kết thúc sớm vòng lặp ở vòng ngoài.

Ví dụ

class Vonglap {

public static void main( String argument[]) {

int count;

int total = 0;

externalloop :

while ( total < 1000 ) {

for (count = 0; count < 10; count ++) {

total = total + count;

if (total > 100) break externalloop;

System.out.println(" total = " + total);

}

}

}

}

Khai báo và khởi tạo

<kiểu phần tử> [] <tên biến mảng> ;

hoặc

<kiểu phần tử > <tên biến mảng> [] ;

Ví dụ :

String Ten [];Int maso[] ;Boolean ketqua[]; Hoặc String[] hoten;Int [] maso;Boolean [] ketqua;

Khai báo kèm khởi trị = danh sách các giá trị nằm trong cặp ngoặc nhọn { }.

Số phần tử mảng = kích thước mảng sẽ được cố định bằng số giá trị có trong danh sách khởi tạo.

Ví dụ :

String Ten[] = {"Hung ", "Dung","Cuong", "Thang"};

Không thể thay đổi kích thước mảng về sau.

Cấp phát vùng nhớ đủ cho kích thước mảng trước khi gán trị.

new với kiểu phần tử và tham số là kích thước mảng.

= new <kiểu phần tử> [ kích thước mảng ] ;

Ví dụ :

Int maso = new int[100];

Mọi phần tử mảng sẽ được khởi trị mặc định như sau :

- nếu kiểu số thì bằng giá trị 0;

- nếu kiểu kí tự char thì bằng giá trị kí tự không ' '

- nếu kiểu boolean thì bằng giá tri false

- String và các đối tượng khác thì bằng null.

Sử dụng mảng.

Lưu ý đánh số từ 0.

Mảng maso như trên sẽ có các phần tử maso[0] đến maso[99].

Ví dụ :

Maso[10] = 1234;

System.out.println( Ten[3]);

Mảng nhiều chiều.

Tương tự như mảng một chiều.

Ví dụ.

Boolean[] [] selectedPoint = new boolean[50] [50];

SelectedPoint [4][10] = true;

SelectedPoint [7] [5] = true;

Sắp xếp một mảng .

Version JAVA 2.0

Lớp Array trong gói java.util có sẵn phương thức để sắp mảng. Để sắp xếp mảng cần :

- import java.util ;

- Tạo mảng.

- Dùng phương thức sort() của lớp Array để sắp xếp ( thứ tự mặc định là tăng dần).

Ví dụ. Chương trình Name.java

import java.util.*;

class Name {

public static void main( String argument[]) {

String names [] = {"Hung","Dung","Anh","Cuong","Tien"};

System.out.println(" thu tu ban dau :");

for (int i=0; i<names.length; i++)

System.out.println( i + ": " + names[i]);

Arrays.sort(names);

System.out.println(" thu tu sau khi sap xep la : ");

for (int i=0; i<names.length; i++)

System.out.println( i + ": " + names[i]);

}

}

Bao gồm cả các kiểu nguyên thuỷ và các lớp.

Chuyển đổi tự nhiên

ép kiểu = chuyển đổi kiểu của một biến một cách cưõng bức, phải nêu tường minh.

Còn có thể :

- chuyển đổi một đối tượng thành một đối tượng khác (phải có quan hệ kế thừa)

- dùng đối tượng để tạo ra biến kiểu nguyên thuỷ tương ứng

- từ biến kiểu nguyên thuỷ tạo ra đối tượng.

Ép kiểu

Xếp các kiểu số theo thứ bậc :

Byte < short < int < long < float < double

  • Chuyển đổi kiểu tự nhiên :

biểu thức hỗn hợp -> kết quả sẽ có kiểu cao nhất.

kiểu thấp hơn sẽ được tự động chuyển thành kiểu cao hơn.

Việc này không làm mất thông tin.

- Casting - Ep kiểu

Là chuyển đổi không tự nhiên

kiểu cao hơn -> kiểu thấp hơn.

Thông tin sẽ bị mất mát đi một phần.

Phải ấn định kiểu mới một cách hiển :

Ví dụ :

Float source = 7.06F ;

Int destination = (int) source ;

Chuyển đổi một biến kiểu nguyên thuỷ thành đối tượng và ngược lại.

Là hai thứ rất khác nhau. Không thể Casting đơn giản.

Package java.lang cung cấp các lớp bao gói - Wrapper class : Boolean, Byte, Char, Double, Float, Integer, Long, Short để tạo các đối tượng ứng với các kiểu nguyên thuỷ trên. Lưu ý chữ cái đầu tiên là chữ in HOA.

Các lớp bao gói cho phép chuyển đổi kiểu nguyên thuỷ thành đối tượng và ngược lại.

Ví dụ

- Tạo các đối tượng kiểu nguyên thuỷ

Integer intObj = new Integer (1234);

- Chuyển đối tượng kiểu nguyên thuỷ thành biến.

Int ival = intObj.intValue();

// ival = 1234.

Chuyển đổi một xâu kí số thành giá trị số.

String count = "25";

Int valcnt = Integer.parseInt(count);

0