cac lop tien ich trong java

56
LẬP TRÌNH JAVA LẬP TRÌNH JAVA Bi 7 Bi 7 : Các lớp tiện ích : Các lớp tiện ích

Upload: do-cong-thanh

Post on 16-Apr-2015

33 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cac Lop Tien Ich Trong Java

LẬP TRÌNH JAVALẬP TRÌNH JAVA

Bai 7Bai 7: Các lớp tiện ích: Các lớp tiện ích

Page 2: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 2

Muc tiêuMuc tiêu Kêt thuc bai hoc ban co thê năm đươc:

Sử dụng các lớp wrapper nguyên thủy Làm việc với các xâu (String) Giải thích sự khác biệt giữa các lớp String và StringBuffer

Trình bày được về các lớp tiện ích khác như Math, System.

Page 3: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 3

Nôi dungNôi dung

7.1 Các lớp bao (Wrapper class) 7.2 Xâu (String va StringBuffer) 7.3 Lớp System 7.4 Mảng

Page 4: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 4

7.1 Các lớp bao 7.1 Các lớp bao Các kiểu dữ liệu nguyên thủy không có

các phương thức liên quan đến nó. Mỗi kiểu dữ liệu nguyên thủy có một lớp

tương ứng gọi là lớp bao: Các lớp bao sẽ “gói” dữ liệu nguyên thủy và

cung cấp các phương thức thích hợp cho dữ liệu đó.

Mỗi đối tượng của lớp bao đơn giản là lưu trữ một biến đơn và đưa ra các phương thức để xử lý nó.

Các lớp bao là một phần của Java API

Page 5: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 5

7.1 Các lớp bao 7.1 Các lớp bao

Page 6: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 6

7.1 Các lớp bao 7.1 Các lớp bao Chuyển đổi kiểu dữ liệu Sử dụng toString() để chuyển các giá

trị số thành xâu. Sử dụng parse<type>() và valueOf() để

chuyển xâu thành các giá trị số Sử dụng các phương thức chuyển đổi rõ

ràng để chuyển giữa các kiểu dữ liệu số

Page 7: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 7

7.1 Các lớp bao 7.1 Các lớp bao Chuyển đổi kiểu dữ liệu

Page 8: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 8

7.1 Các lớp bao 7.1 Các lớp bao Các hằng số Boolean

Boolean FALSE Boolean TRUE

Byte byte MIN_VALUE byte MAX_VALUE

Character int MAX_RADIX char MAX_VALUE int MIN_RADIX char MIN_VALUE Unicode classification

constants Double

double MAX_VALUE double MIN_VALUE double NaN double NEGATIVE_INFINITY double POSITIVE_INFINITY

Float float MAX_VALUE float MIN_VALUE float NaN float NEGATIVE_INFINITY float POSITIVE_INFINITY

Integer int MIN_VALUE int MAX_VALUE

Long long MIN_VALUE long MAX_VALUE

Short short MIN_VALUE short MAX_VALUE

Page 9: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 9

7.1 Các lớp bao 7.1 Các lớp bao Ví du

float f = Float.parseFloat("3.14159");); // 3.14159int i System.out.println(f= (new Float(f)).intValue();

String s = (new Integer(i)).toString();System.out.println(s); // 3double d = (new

Integer(Integer.MAX_VALUE)).doubleValue();

System.out.println(d); // 2.147483647E9

Page 10: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 10

7.1 Các lớp bao 7.1 Các lớp bao Ví dudouble number = Double.parseDouble("42.76");

String hex = Integer.toHexString(42);

double value = new Integer("1234").doubleValue();

String input = "test 1-2-3";

int output = 0;

for (int index = 0;index < input.length();index++)

{

char c = input.charAt(index);

if (Character.isDigit(c))

output = output * 10 + Character.digit(c, 10);

}

System.out.println(output); // 123// 123

Page 11: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 11

Nôi dungNôi dung

7.1 Các lớp bao (Wrapper class) 7.2 Xâu (String va StringBuffer) 7.3 Lớp System 7.4 Mảng

Page 12: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 12

7.2 Xâu 7.2 Xâu Một String được tạo thành từ một dãy các

ký tự nằm trong dấu nháy kép:String a = "A String";

String b = ""; Đối tượng String có thể khởi tạo theo

nhiều cách:String c = new String();

String d = new String("Another String");

String e = String.valueOf(1.23);

String f = null;

Page 13: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 13

7.2 Xâu 7.2 Xâu Ghép xâu:

Toán tử + có thể nối các String:String a = "This" + " is a " + "String";

//a = “This is a String”

Các kiểu dữ liệu cơ bản sử dụng trong lời gọi println() được chuyển đổi tự động sang kiểu Strings

System.out.println("answer = " + 1 + 2 + 3);

System.out.println("answer = " + (1+2+3));

Hai câu lệnh trên có in ra cùng một kết quả?

Page 14: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 14

7.2 Xâu 7.2 Xâu Các phương thức của xâu:

String name = "Joe Smith";name.toLowerCase(); // "joe smith"name.toUpperCase(); // "JOE SMITH""Joe Smith ".trim(); // "Joe Smith""Joe Smith".indexOf('e'); // 2"Joe Smith".length(); // 9"Joe Smith".charAt(5); // 'm'"Joe Smith".substring(5); // "mith""Joe Smith".substring(2,5); // "e S"

Page 15: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 15

7.2 Xâu 7.2 Xâu So sánh hai xâu: So sánh oneString == anotherString sẽ gây

nhập nhằng:String s1 = “Hello”;

String s2 = “Hello”;

(s1==s2) trả về true

String s1 = new String (“Hello”);

String s2 = new String (“Hello”);

(s1==s2) trả về false

Hello

s1

s2

Hello

s1

s2

Hello

Page 16: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 16

7.2 Xâu 7.2 Xâu So sánh hai xâu:

Một xâu có thể so sánh xem có tương đương với một xâu khác

oneString.equals(anotherString) Kiểm tra tính tương đương Trả về true hoặc false

oneString.equalsIgnoreCase(anotherString)

Kiểm tra KHÔNG xét đến ký tự hoa, thường Trả về true hoặc falseString name = "Joe";

if ("Joe".equals(name))name += " Smith";

boolean same = "Joe".equalsIgnoreCase("joe");

Page 17: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 17

7.2 Xâu 7.2 Xâu Lấy các ký tự trong chuỗi:

Không sử dụng message[0]

Mà dùng message.charAt(index)

Chỉ số (index) bắt đầu từ 0

W e l c o m e t o J a v a

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

message

Indices

message.charAt(0) message.charAt(14) message.length() is 15

Page 18: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 18

7.2 Xâu 7.2 Xâu String Conversions:

Nội dung của một chuỗi không thể thay đổi mỗi khi chuỗi được tạo. Nhưng có thể convert một chuỗi thành một chuỗi mới bằng cách sử dụng các phương thức sau

"Welcome".toLowerCase() "Welcome".toUpperCase() " Welcome ".trim() "Welcome".replace('e','A') "Welcome".replaceFirst('e','A') "Welcome".replaceAll('e','A')

Page 19: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 19

7.2 Xâu 7.2 Xâu Tìm ký tự và chuỗi con:

Sử dụng các phương thức sau: public int indexOf(int ch)

public int lastIndexOf(int ch)

public int indexOf(int ch, int fromIndex)

public int lastIndexOf(int ch, int endIndex)

public int indexOf(String str)

public int lastIndexOf(String str)

public int indexOf(String ch, int fromIndex)

public int lastIndexOf(String str, int

endIndex)

Page 20: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 20

7.2 Xâu 7.2 Xâu Tìm ký tự và chuỗi con:

Ví dụ:

"Welcome to Java!".indexOf('W') returns 0.

"Welcome to Java!".indexOf('x') returns -1.

"Welcome to Java!".indexOf('o', 5) returns 9.

"Welcome to Java!".indexOf("come") returns 3.

"Welcome to Java!".indexOf("Java", 5) returns

11.

"Welcome to Java!".indexOf("java", 5) returns -

1.

Page 21: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 21

7.2 Xâu 7.2 Xâu Chuyển đổi ký tự và số thành chuỗi:

char[] chars = "Java".toCharArray();

String str = new String(new char[] {'J','a','v','a'});

Lớp String cung cấp một số phương thức static valueOf để chuyển đổi một ký tự, mảng ký tự, và các giá trị số thành chuỗi.

Những phương thức này có cùng tên valueOf với tham số khác nhau có kiểu char, char[], double, long, int, và float.

String str = String.valueOf(5.44);

String str = String.valueOf(new char[] {'J','a','v','a'});

Page 22: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 22

7.2 Xâu 7.2 Xâu StringBuffer

Kiểu bất biến và kiểu biến đổi Một kiểu có thể là bất biến hoặc có thể

thay đổi Đối tượng của kiểu bất biến không thay đổi

giá trị sau khi chúng được tạo ra Ngược lại, đối tượng của kiểu biến đổi có

thể thay đổi giá trị sau khi chúng được tạo ra.

String là kiểu bất biến, StringBuffer là kiểu biến đổi.

Page 23: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 23

7.2 Xâu 7.2 Xâu StringBuffer String:

Các xâu của lớp String được thiết kế để không thay đổi giá trị.

Khi các xâu được ghép nối với nhau một đối tượng mới được tạo ra để lưu trữ kết quả.

Ghép nối xâu thông thường rất tốn kém về bộ nhớ.

Page 24: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 24

7.2 Xâu 7.2 Xâu StringBuffer

String s = new String(“hello”);String t = s;s = new String(“goodbye”);

Page 25: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 25

7.2 Xâu 7.2 Xâu StringBuffer StringBuffer:

Cung cấp các đối tượng xâu có thể thay đổi giá trị Sử dụng StringBuffer khi:

Dự đoán các ký tự trong xâu có thể thay đổi.

Khi xử lý các xâu một cách linh động, ví dụ như đọc dữ liệu text từ một tệp tin.

Cung cấp các cơ chế hiệu quả hơn cho việc xây dựng, ghép nối các xâu

Page 26: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 26

7.2 Xâu 7.2 Xâu StringBuffer Tính biến đổi: Nếu một đối tượng bị

biến đổi, thì tất cả các quan hệ với đối tượng sẽ nhận giá trị mới.

Page 27: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 27

7.2 Xâu 7.2 Xâu StringBuffer

public StringBuffer()

Xây dựng một string buffer rỗng có dung lượng = 16.

public StringBuffer(int length)

Xây dựng một string buffer rỗng có dung lượng = length.

public StringBuffer(String str)

Xây dựng một string buffer với nội dung là chuỗi str. Dung lượng khởi tạo bằng 16 + str.length().

Page 28: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 28

7.2 Xâu 7.2 Xâu StringBuffer Nếu tạo xâu thông qua vòng lặp thì

sử dụng StringBuffer

StringBuffer buffer = new StringBuffer(15);buffer.append("This is ") ;buffer.append("String") ;buffer.insert(7," a") ;buffer.append('.');System.out.println(buffer.length()); // 17System.out.println(buffer.capacity()); // 32String output = buffer.toString() ;System.out.println(output); // "This is a String."

Page 29: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 29

7.2 Xâu 7.2 Xâu Lớp String:

Constructor: String() String(byte[] bytes) String(byte[] bytes, int offset, int length) String(char[] value) String(char[] value, int offset, int length) String(String original) String(StringBuffer buffer)

Một số phương thức: char charAt(int index) boolean equals(Object anObject) int indexOf(String str) int length() boolean matches(String regex) String substring(int beginIndex, intendIndex) String toUpperCase() String trim()

Page 30: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 30

7.2 Xâu 7.2 Xâu Lớp StringBuffer:

Constructors: StringBuffer() StringBuffer(int length) StringBuffer(String str)

Một số phương thức: StringBuffer append(…) StringBuffer insert(…) StringBuffer delete(int start, int end) int length() StringBuffer reverse() String substring(int start, int end) String toString()

Page 31: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 31

Nôi dungNôi dung

7.1 Các lớp bao (Wrapper class) 7.2 Xâu (String va StringBuffer) 7.3 Lớp System 7.4 Mảng

Page 32: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 32

7.3 Lớp System 7.3 Lớp System Không cần/được khởi tạo đối tượng

Lớp System là lớp final, các phương thức khởi tạo được khai báo là private.

Tất cả các thuộc tính và phương thức của System đều được khai báo là static.

Page 33: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 33

7.3 Lớp System 7.3 Lớp System java.lang.System chứa nhiều hàm

tiện ích hữu dụng Kiểm soát vào ra (I/O) chuẩn

Các luồng InputStream in, PrintStream out và err là các thuộc tính của lớp System.

Có thể thiết lập lại nhờ các hàm setIn(), setOut() và setErr()

arraycopy(): Sao chép mảng hoặc tập con với hiệu năng cao.

Page 34: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 34

7.3 Lớp System 7.3 Lớp System currentTimeMillis(): Trả về thời

gian hiện tại theo millisecond exit(): Kết thúc hoạt động của Java

Virtual Machine gc(): Yêu cầu bộ thu gom rác hoạt

động Các phương thức liên quan đến thuộc

tính của hệ thống: Lấy các thông tin thuộc tính như phiên bản của Java Runtime Environment version, thư mục cài đặt Java,...

Page 35: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 35

7.3 Lớp System 7.3 Lớp System

import java.util.Properties;public class PropertiesTest {

public static void main(String[] args) {System.out.println(

System.getProperty("path.separator"));System.out.println(

System.getProperty("file.separator"));System.out.println(

System.getProperty("java.class.path"));System.out.println(

System.getProperty("os.name"));System.out.println(

System.getProperty("os.version"));

System.out.println(System.getProperty("user.dir"));

System.out.println(System.getProperty("user.home"));

System.out.println(System.getProperty("user.name"));}

}

Page 36: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 36

7.3 Lớp System 7.3 Lớp System

Page 37: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 39

7.3 Lớp System 7.3 Lớp System Các tham số dòng lệnh

Có thể truyền chuỗi cho phương thức main từ dòng lệnh khi chạy chương trình.

Khi phương thức main được gọi, trình biên dịch Java tạo 1 mảng chứa các tham số dòng lệnh và truyền tham chiếu mảng cho args.class TestMain {

public static void main(String[] args) {

...

}

}

java TestMain arg0 arg1 arg2 ... argn

Page 38: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 40

7.3 Lớp System 7.3 Lớp System Các tham số dòng lệnh

Các chuỗi được truyền cho chương trình chính được chứa trong args - là một mảng các chuỗi. Các phần tử: args[0], args[1], ..., args[n], tương ứng với arg0, arg1, ..., argn trong dòng lệnh.

args.length là số chuỗi được truyền

Page 39: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 41

7.3 Lớp System 7.3 Lớp System Các tham số dòng lệnh

class CommandLineArguments {

public static void main(String args[]) {

System.out.println(args[0]);

System.out.println(args[1]);

System.out.println(args[2]);

} // end of main

} // end of class

java CommandLineArguments 1 2 abcde

Page 40: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 42

7.3 Lớp System 7.3 Lớp System Các tham số dòng lệnh

Kiểm tra sự có mặt của tham số

class CommandLineArguments {

public static void main(String args[]) { if (args.length>0) System.out.println(args[0]); if (args.length>1) System.out.println(args[1]); if (args.length>2) System.out.println(args[2]);

} // end of main

} // end of class

Page 41: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 43

Nôi dungNôi dung

7.1 Các lớp bao (Wrapper class) 7.2 Xâu (String va StringBuffer) 7.3 Lớp System 7.4 Mảng

Page 42: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 44

7.4 Mảng7.4 Mảng Tập hợp hữu hạn các phần tử cùng

kiểu Phải được khai báo trước khi sử

dụng Khai báo:

Cú pháp: kieu_dlieu[] ten_mang = new kieu_dlieu[KT_MANG]; kieu_dlieu ten_mang[] = new kieu_dlieu[KT_MANG];

Ví dụ: boolean bit[] = new boolean[6];reference Array or ObjectvariableName

Page 43: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 45

7.4 Mảng7.4 Mảng Khai báo, khởi tạo giá trị ban đầu:

Cú pháp: kieu_dl[] ten_mang = {ds_gia_tri_cac_ptu};

Ví dụ: int[] number = {10, 9, 8, 7, 6};

Nếu không khởi tạo nhận giá trị mặc định tùy thuộc vào kiểu dữ liệu.

Luôn bắt đầu từ phần tử có chỉ số 0 Mỗi khi mảng được tạo, kích thước của

nó được ấn định, không thể thay đổi.

Page 44: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 46

7.4 Mảng7.4 Mảng

Tên của mảng (tất cả các thành phần trong mảng có cùng tên, c)

Chỉ số (truy nhập đến các thành phần của mảng thông qua chỉ số)

c[ 0 ]

c[ 1 ]

c[ 2 ]

c[ 3 ]

c[ 4 ]

c[ 5 ]

c[ 6 ]

c[ 7 ]

c[ 8 ]

c[ 9 ]

c[ 10 ]

c[ 11 ]

-45

6

0

72

1543

-89

0

62

-3

1

6453

78

c.lengthc.length: cho biết đô dài của mảng c

Page 45: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 47

7.4 Mảng7.4 Mảng Khởi tạo mảng: Sử dụng vòng lặp:for (int i = 0; i < myList.length; i++) myList[i] = i;

Khai báo, tạo, khởi tạo trong một lệnh:double[] myList = {1.9, 2.9, 3.4, 3.5};

Lưu ý: chỉ trong 1 lệnh, nhiều hơn 1 lệnh là sai:

double[] myList;myList = {1.9, 2.9, 3.4, 3.5};

Page 46: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 48

7.4 Mảng7.4 Mảng Khởi tạo mảng:double[] myList = {1.9, 2.9, 3.4, 3.5};

Câu lệnh trên tương đương với các câu lệnh sau:

double[] myList = new double[4];

myList[0] = 1.9;

myList[1] = 2.9;

myList[2] = 3.4;

myList[3] = 3.5;

Page 47: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 49

7.4 Mảng7.4 Mảng Ví dụ:int array[]; // khai báoarray = new int[10]; // tạo mảng

int array[] = {32,27,64,18,95,14,90,70,60,37};

Page 48: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 50

7.4 Mảng7.4 Mảng Ví dụ:

int MAX = 5;boolean bit[] = new boolean[MAX];float[] value = new float[2*3];int[] number = {10, 9, 8, 7, 6};System.out.println(bit[0]); // prints “false”

System.out.println(value[3]); // prints “0.0”

System.out.println(number[1]); // prints “9”

for (int i=0;i<number.length;i++){System.out.println(number[i]);

}

Page 49: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 51

7.4 Mảng7.4 Mảng Khai báo mảng :

Cách khai báo Mô tả Cú pháp Ví dụ

Chỉ đơn thuần khai báo

Chỉ đơn thuần khai báo mảng

Datatype identifier[] char ch[ ];khai báo mảng ký tự

có tên ch

Khai báo và tạo mảng

Khai báo và cấp phát bộ nhớ cho các phần tử mảng sử dụng toán tử “new’

Datatype identifier[]= new datatype [size ]

char ch[] = newchar [10 ];Khai báo một mảng

ch và lưu trữ 10 ký tự

Khai báo, kiến tạo và khởi tạo

Khai báo mảng,cấp phát bộ nhớ cho nó và gán các giá trị ban đầu cho các phần tử của mảng

Datatype identifier[]= {value1,value2…valueN};

char ch []= {‘A’,’B’,’C’,’D’};khai báo mảng ch và

lưu 4 chữ cái kiểu ký tự

Page 50: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 52

7.4 Mảng7.4 Mảng Truyền mảng cho phương thức:

Java sử dụng truyền tham trị để truyền các tham số cho

phương thức. Có nhiều sự khác nhau quan trọng khi truyền

tham trị của biến có kiểu dữ liệu cơ sở và biến mảng.

Với tham số kiểu dữ liệu cơ sở, giá trị thực được truyền.

Thay đổi giá trị của tham số cục bộ trong phương thức

không làm thay đổi giá trị của biến bên ngoài phương thức.

Với tham số kiểu mảng, giá trị của tham số chứa một tham

chiếu tới mảng; tham chiếu này được truyền cho phương

thức. Bất kỳ sự thay đổi nào xuất hiện trong thân phương

thức sẽ làm thay đổi mảng gốc được truyền.

Page 51: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 53

7.4 Mảng7.4 Mảng Truyền mảng cho phương thức:

swapFirstTwoInArray(a)

swapFirstTwoInArray(array)

Pass by value (Reference value)

a Reference:

a[0] a[1]

array Reference

swap(a[0], a[1])

swap( n1, n2)

Pass by value

a[0] 1 2

n1 n2 1 2

a[1]

Page 52: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 54

7.4 Mảng7.4 Mảng Copy mảng :

Contents of list1

list1

Contents of list2

list2

Before the assignment list2 = list1;

Contents of list1

list1

Contents of list2

list2

After the assignment list2 = list1;

Garbage

Page 53: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 55

7.4 Mảng7.4 Mảng Copy mảng :

Sử dụng một vòng lặp:

int[] sourceArray = {2, 3, 1, 5, 10};

int[] targetArray = new int[sourceArray.length];

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

targetArray[i] = sourceArray[i];

Page 54: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 56

7.4 Mảng7.4 Mảng Copy mảng :

Tiện ích arraycopy:

arraycopy(sourceArray, src_pos, targetArray,

tar_pos, length);

Ví dụ:

System.arraycopy(sourceArray, 0, targetArray, 0,

sourceArray.length);

Page 55: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 57

7.4 Mảng7.4 Mảng Mảng nhiều chiều:

Bảng với các dòng và cột Thường sử dụng mảng hai chiều Ví dụ khai báo mảng hai chiều b[2][2]int b[][] = { { 1, 2 }, { 3, 4 } };

1 và 2 được khởi tạo cho b[0][0] và b[0][1] 3 và 4 được khởi tạo cho b[1][0] và b[1][1]

int b[3][4];

Page 56: Cac Lop Tien Ich Trong Java

11/04/23 Bộ Môn CNPM - ĐHBK Hà Nội 58

7.4 Mảng7.4 Mảng Mảng nhiều chiều:

b[ 1 ][ 0 ] b[ 1 ][ 1 ] b[ 1 ][ 2 ] b[ 1 ][ 3 ]

Row 0

Row 1

Row 2

Column 0

Column 1

Column 2

Column 3

Chỉ số hàng

Tên mảng

Chỉ số côt

b[ 0 ][ 0 ] b[ 0 ][ 1 ] b[ 0 ][ 2 ] b[ 0 ][ 3 ]

b[ 2 ][ 0 ] b[ 2 ][ 1 ] b[ 2 ][ 2 ] b[ 2 ][ 3 ]