You are on page 1of 49

Trường Cao Đẳng CNTT TP.

HCM
Khoa Công Nghệ Thông Tin

LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG

1
Trường Cao Đẳng CNTT TP.HCM
Khoa Công Nghệ Thông Tin

Chương 1
ÔN TẬP

1. MẢNG
2. ARRAYLIST
3. CHUỖI(STRING)

2
1. KIỂU DỮ LIỆU CỦA MẢNG

• Khái niệm mảng


➢Mảng là tập hợp nhiều phần tử có cùng tên, cùng
kiểu dữ liệu và mỗi phần tử trong mảng được truy
xuất thông qua chỉ số của nó trong mảng
• Khai báo mảng
<kiểu dữ liệu> <tên mảng>[];
<kiểu dữ liệu>[] <tên mảng>;
Ví dụ:
int arrInt[];
hoặc int[] arrInt;
int[] arrInt1, arrInt2, arrInt3;
3
1. KIỂU DỮ LIỆU CỦA MẢNG
Cấp phát bộ nhớ cho mảng
➢ Không giống như trong C, C++ kích thước của mảng được xác
định khi khai báo. Chẳng hạn như:
int arrInt[100]; // Khai báo này trong
//Java sẽ bị báo lỗi.
➢ Để cấp phát bộ nhớ cho mảng trong Java ta cần dùng từ khóa
new
➢ Chẳng hạn để cấp phát vùng nhớ cho mảng trong Java ta làm
như sau:
int []arrInt = new int[100];
int [] arrint;;
intrray = new int[100];
1. KIỂU DỮ LIỆU CỦA MẢNG
Khởi tạo mảng
Chúng ta có thể khởi tạo giá trị ban đầu cho các phần tử
của mảng khi nó được khai báo.
Ví dụ:
int arrInt[] = {1, 2, 3};
char arrChar[] = {‘a’, ‘b’, ‘c’};
String arrStrng[] = {“ABC”, “EFG”, ‘GHI’};
1. KIỂU DỮ LIỆU CỦA MẢNG
Truy cập mảng
Chỉ số mảng trong Java bắt đầu từ 0. Vì vậy phần tử đầu tiên
có chỉ số là 0, và phần tử thứ n có chỉ số là n-1. Các phần tử
của mảng được truy xuất thông qua chỉ số của nó đặt giữa
cặp dấu ngoặc vuông ([]).
Ví dụ:
int arrInt[] = {1, 2, 3};
int x = arrInt[0]; // x sẽ có giá trị là 1.
int y = arrInt[1]; // y sẽ có giá trị là 2.
int z = arrInt[2]; // z sẽ có giá trị là 3.
Lưu ý: Trong C chuỗi được xem như là một mảng ký tự.
Nhưng trong Java chuỗi được định nghĩa trong lớp String
1. VÍ DỤ MẢNG

Nhập và xuất giá trị các phần tử của một mảng các số
nguyên:
class ArrayDemo
{
public static void main(String args[])
{
int arrInt[] = new int[10];
int i;
for(i = 0; i < 10; i = i+1)
arrInt[i] = i;
for(i = 0; i < 10; i = i+1)
System.out.println("This is arrInt[" + i +"]: " + arrInt[i]);
}
}
1. VÍ DỤ MẢNG

Tìm phần tử có giá trị nhỏ nhất (Min) và lớn nhất


(Max) trong một mảng.
class MinMax2
{ public static void main(String args[])
{ int nums[] = { 99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49 };
int min, max;
min = max = nums[0];
for(int i=1; i < 10; i++)
{
if(nums[i] < min) min = nums[i];
if(nums[i] > max) max = nums[i];
}
System.out.println("Min and max: " + min + " " + max);
}
}
1. VÍ DỤ MẢNG
Nhập và xuất giá trị của các phần tử trong một
mảng hai chiều.
class TwoD_Arr
{ public static void main(String args[])
{ int t, i;
int table[][] = new int[3][4];
for(t=0; t < 3; ++t)
{ for(i=0; i < 4; ++i)
{ table[t][i] = (t*4)+i+1;
System.out.print(table[t][i] + “ ");
}
System.out.println();
}
}
}
Trường Cao Đẳng CNTT TP.HCM
Khoa Công Nghệ Thông Tin

ARRAYLIST

1
2. ARRAYLIST
Lớp ArrayList là một cấu trúc dạng mảng khắc phục
được các nhược điểm của cấu trúc mảng. Ta không
cần biết một ArrayList cần có kích thước bao nhiêu khi
tạo nó, nó sẽ tự giản ra hoặc co vào khi các đối tượng
được đưa vào hoặc lấy ra. Thêm vào đó, ArrayList còn
là cấu trúc có tham số kiểu, ta có thể tạo
ArrayList<String> để lưu các phần tử kiểu String
2. Khai Báo Lớp ArrayList

Lớp java.util.ArrayList được khai báo như sau:


Public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess,
Cloneable, java.io. Serializable
2. Các Constructor Lớp ArrayList

Constructor Mô Tả

ArrayList() Nó được sử dụng để khởi tạo một danh sách


mảng trống.

ArrayList(Collection c) Nó được sử dụng để xây dựng một danh


sách mảng được khởi tạo với các phần tử
của collection c.

ArrayList(int capacity) Nó được sử dụng để xây dựng một danh


sách mảng mà có dung lượng ban đầu được
chỉ định.
2. Các Phương Thức Của Lớp ArrayList
Phương Thức Mô Tả
boolean add(Object o) Nó được sử dụng để nối thêm phần tử được chỉ
định vào cuối một danh sách.
void add(int index, Nó được sử dụng để chèn các phần tử được chỉ
Object element) định tại các chỉ số vị trí quy định trong một
danh sách.

boolean Nó được sử dụng để nối tất cả các phần tử


addAll(Collection c) trong collection được chỉ định vào cuối của
danh sách này, theo thứ tự chúng được trả về
bởi bộ lặp iterator.
boolean addAll(int index, Nó được sử dụng để chèn tất cả các phần tử
Collection c) trong collection được chỉ định vào danh sách
này, bắt đầu từ vị trí đã chỉ định.
2. Các Phương Thức Của Lớp ArrayList
Phương Thức Mô Tả
void retainAll(Collection c) Nó được sử dụng để xóa những phần tử không
thuộc collection c.

void removeAll(Collection Nó được sử dụng để xóa những phần tử thuộc


c) collection c và thuộc list hiện tại khỏi list hiện tại.

int indexOf(Object o) Nó được sử dụng để trả về chỉ mục trong danh


sách với sự xuất hiện đầu tiên của phần tử được
chỉ định, hoặc -1 nếu danh sách không chứa phần
tử này.

int lastIndexOf(Object o) Nó được sử dụng để trả về chỉ mục trong danh


sách với sự xuất hiện cuối cùng của phần tử được
chỉ định, hoặc -1 nếu danh sách không chứa phần
tử này.
2. Các Phương Thức Của Lớp ArrayList
Phương Thức Mô Tả
Object[] toArray() Nó được sử dụng để trả về một mảng chứa tất
cả các phần tử trong danh sách này theo đúng
thứ tự.
Object[] Nó được sử dụng để trả về một mảng chứa tất
toArray(Object[] a) cả các phần tử trong danh sách này theo đúng
thứ tự.
Object clone() Nó được sử dụng để trả về một bản sao của
ArrayList.
void clear() Nó được sử dụng để xóa tất cả các phần tử từ
danh sách này.
void trimToSize() Nó được sử dụng để cắt dung lượng của thể
hiện ArrayList này là kích thước danh sách
hiện tại.
2. Khởi Tạo ArrayList Trong Java

Có 2 kiểu khởi tạo


ArrayList list=new ArrayList();// Kiểu cũ

ArrayList<String> list=new ArrayList<String>()//Kiểu mới


2. Ví Dụ 1 ArrayList Trong Java
2. Ví Dụ 2 ArrayList Trong Java
Trường Cao Đẳng CNTT TP.HCM
Khoa Công Nghệ Thông Tin

CHUỖI (STRING)

2
3. CHUỖI (STRING)

Chuỗi là tập các kí tự đứng liền Nhau được giới hạn


trong dấu nháy kép như: ”helloword”, ”hoc.itop.vn”…
Java cung cấp lớp String để làm việc với đối tượng dữ
liệu chuỗi cùng các thao tác trên đối tượng dữ liệu này.
3. KHAI BÁO VÀ KHỞI TẠO CHUỖI

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


Khai báo một xâu rỗng
Ví dụ: String str1 = new String( );
//khởi tạo str1 là một xâu trống
Khai báo và khởi tạo một xâu bằng một chuỗi cho
trước.
Ví dụ: String str2 = new String(“Hello word”);
//khởi tạo str2 bằng “Hello word”
3. KHAI BÁO VÀ KHỞI TẠO CHUỖI

➢ Khai báo và khởi tạo một xâu bằng một mảng kí tự cho
trước.
Ví dụ: char ch[ ] = {‘a’,’b’,’c’,’d’,’e’};
String str3 = new String[ch];
Kết quả str3 là xâu “abcde”
➢ Khai báo và khởi tạo một xâu bằng cách chọn một vài
kí tự trong một mảng kí tự cho trước.
Ví dụ: char ch[ ]={‘a’,’b’,’c’,’d’,’e’};
String str4=new String[ch,0,2];
Kết quả str4 là xâu “ab” , vì khởi tạo này sẽ khởi tạo
xâu str4 là lấy 2 kí tự từ vị trí thứ 0.
3. CÁC THAO TÁC TRÊN CHUỖI

Thao tác nối chuỗi


Nối chuỗi bằng toán tử +
Ví dụ:
String str1=new String(“Hello word”);
System.out.printf(“toi muon noi ”+str1);
Kết quả của đoạn mã trên sẽ in ra dong chữ: “toi
muon noi Hello word”
3. CÁC THAO TÁC TRÊN CHUỖI

Chú ý: java có khả năng tự chuyển bất cứ dữ liệu


kiểu số nào khi cộng vào String.
Ví dụ: int n=100;
float m=100.123;
System.out.printf(“so nguyen la ”+n+”so thuc la
“+m);
Kết quả sẽ in ra chuỗi số: “so nguyen la 100 so
thuc la 100.123” có nghĩa là java sẽ chuyển n và m
thành kiểu string rồi sau đó sẽ nối vào chuỗi phía
trước.
3. CÁC THAO TÁC TRÊN CHUỖI
Nối chuỗi bằng phương thức concat()
Ví dụ: String str1,str2,str3;
str1=”Welcome”;
str2=”hoc.itop.vn”;
str3=str1.concat(str2);
str4=str2.concat(str1);
Kết quả:
. str3 sẽ bằng “Welcome hoc.itop.vn”
. str4 se bằng “hpc.itop.vn Welcome”
3. CÁC THAO TÁC TRÊN CHUỖI

Một số hàm xử lý chuỗi trong java


Substring
ví dụ:
String str1=new String(“hoc.itop.vn”);
String str2=str1.substring(0,3);
Kết quả:
str2 bằng “hoc”. có nghĩa là phương thức
substring sẽ lấy 3 kí tự trong xâu str1 bắt đầu từ
kí tự thứ 0 đến ký tự thứ 3.
3. CÁC THAO TÁC TRÊN CHUỖI

length: trả về độ dài chuỗi


ví dụ:
String str1=new String(“hoc.itop.vn”);
int n=str1.length( );
Kết quả:
n=11 nghĩa là phương thức length( ) sẽ trả về độ
dài xâu kí tự
3. CÁC THAO TÁC TRÊN CHUỖI

charAt
ví dụ:
String str1=new String(“itop.vn”);
char ch=str1.charAt(3);
Kết quả là: ch=’p’ nghĩa là phương thức charAt( 3) sẽ
trả về kí tự thứ 3 tính từ vị trí thư 0 trong xâu str1
3. CÁC THAO TÁC TRÊN CHUỖI
equals: phương thức này so sánh 2 chuỗi. kết quả
trả về có kiểu boolean
Ví dụ:
String str1=new String(“hello”);
String str2=new String(“ITOP”);
Boolean k=str1.equals(str2);
Kết quả:
Trả về là k=false nghĩa là phương thức equals sẽ
so sánh từng kí tự trong 2
3. CÁC THAO TÁC TRÊN CHUỖI

compareTo: so sánh 2 chuỗi lần lượt thứ tự từng kí tự


của 2 chuỗi nghĩa là:
int a = str1.compareTo(str2);
a=0 nếu s2=s1s
a>0 nếu s2>s1
a<0 nếu s2<s1
ví dụ:
String str1=new String(“kc”);
String str2=new String(“kavcb”);
int a=str1.compareTo(str2);
Kết quả là a>0 vì “kc”<”kavcb”
3. CÁC THAO TÁC TRÊN CHUỖI

toCharArray: là phương thức đổi chuỗi thành mảng kí


tự.
ví dụ:
String str1==new String(“itop.vn”);
char [ ] ch=str1.toCharArray( );
Kết quả là mảng ch={‘i’,’t’,’o’,’p’,’.’,’v’,’n’}
3. CÁC THAO TÁC TRÊN CHUỖI
indexOf
ví dụ: String str1=new String(“hoc.itop.vn”);
String str2=new String(“op”);
String str3=new String(“ab”);
int n=str1.indexOf(str2);
int m=str1.indexOf(str3);
Kết quả là n=7 và m=-1 nghĩa là phương thức này sẽ
trả về vị trí của chuỗi str2 và str3 trong chuỗi str1.nếu
không tìm thấy sẽ trả về giá trị -1
3. CÁC THAO TÁC TRÊN CHUỖI

startsWith( ): trả về giá trị kiểu boolean


Ví dụ:
String str1=”hoc.itop.vn”;
String str2=”hoc”;
boolean k=str1.startsWith(str2);
Kết quả là: k=true nghĩa là phương thức này sẽ kiểm
tra xem chuỗi một có bắt đầu bằng chuỗi 2 hay không
3. CÁC THAO TÁC TRÊN CHUỖI

endsWith( ): cũng như hàm startsWith( ) kết quả trả


về là kiểu boolean.
Ví dụ:
String str1=”hoc.itop.vn”;
String str2=”com”;
boolean k=str1.endsWith(str2);
Kết quả là: k=false nghĩa là hàm này sẽ kiểm tra xem
chuỗi str1 có kết thúc là chuỗi str2 hay không.
3. CÁC THAO TÁC TRÊN CHUỖI
copyValueOf( ): phương thức này trả về một chuỗi
được rút ra từ một mảng kí tự.
Ví dụ:
char ch[ ]={‘a’,’b’,’c’,’d’,’e’);
String str1=String.copyValueOf(2,2);
Kết quả là: str1=”cd” nghĩa là xâu str1 được rút ra từ
mảng ch bằng cách lấy 2 phần tử của mảng và lấy từ
vị trí thứ 2.
toUpperCase( ): phương thức này sẽ trả về chữ hoa
của chuỗi
Ví dụ:
Kết quả là
String str1=”hello”;
str2=”HELLO”;
String str2=str1.toUpperCase( );
3. CÁC THAO TÁC TRÊN CHUỖI

toLowerCase( ): phương thức này sẽ trả về chữ


thường của chuỗi
Ví dụ:
String str1=”hello”;
String str2=str1.toLowerCase( );
Kết quả là str2=”hello”;
3. CÁC THAO TÁC TRÊN CHUỖI

Chuyển kiểu dữ liệu từ String sang số


Các phương thức chuyển kiểu dữ liệu từ String
sang số nằm trong gói thư viện java.lang ta có
bảng các phương thức như sau:

Ví dụ:
String str1=new String(“124”);
int n=Integer.parseInt(str1);
Kết quả là n=124
3. VÍ DỤ CHUỖI
Nhập ký tự từ bàn phím:
import java.io.*;
class InputChar
{ public static void main(String args[])
{ char ch = ‘’;
try{
ch = (char) System.in.read();
}
catch(Exception e){
System.out.println(“Nhập lỗi!”);
}
System.out.println(“Ky tu vua nhap:” + ch);
}
}
3. VÍ DỤ CHUỖI
Nhập dữ liệu số
import java.io.*;
class inputNum
{ public static void main(String[] args)
{ int n=0;
try { BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
String s;
s = in.readLine();
n = Integer.parseInt(s);
}
catch(Exception e){
System.out.println(“Nhập dữ liệu bị lỗi !”);
}
System.out.println(“Bạn vừa nhập số:” + n);
}
}
3. VÍ DỤ CHUỖI

Tạo đối tượng chuỗi


class StringDemo
{
public static void main(String args[])
{
// Tao chuoi bang nhieu cach khac nhau
String str1 = new String("Chuoi trong java la nhung Objects.");
String str2 = "Chung duoc xay dung bang nhieu cach khac nhau.";
String str3 = new String(str2);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
}
3. VÍ DỤ CHUỖI

// Chuong trinh minh hoa cac thao tac tren chuoi ky tu


class StrOps
{ public static void main(String args[])
{ String str1 = "Java la chon lua so mot cho lap trinh ung dung Web.";
String str2 = new String(str1);
String str3 = "Java ho tro doi tuong String de xu ly chuoi";
int result, idx;
char ch;
System.out.println("str1:" + str1);
System.out.println("str2:" + str2);
System.out.println("str3:" + str3);
System.out.println("Chieu dai cua chuoi str1 la:" + str1.length());
// Hien thi chuoi str1, moi lan mot ky tu.
System.out.println();
for(int i=0; i < str1.length(); i++)
System.out.print(str1.charAt(i));
3. VÍ DỤ CHUỖI
System.out.println();
if(str1.equals(str2))
System.out.println("str1 == str2");
else
System.out.println("str1 != str2");
if(str1.equals(str3))
System.out.println("str1 == str3");
else
System.out.println("str1 != str3");
result = str1.compareTo(str3);
if(result == 0)
System.out.println("str1 = str3 ");
else
if(result < 0)
System.out.println("str1 < str3");
else
System.out.println("str1 > str3");
3. VÍ DỤ CHUỖI

// Tao chuoi moi cho str4


String str4 = "Mot Hai Ba Mot";
idx = str4.indexOf("Mot");
System.out.println("str4:" + str4);
System.out.println(
"Vi tri xuat hien dau tien cua chuoi con 'Mot' trong str4: " + idx);
idx = str4.lastIndexOf("Mot");
System.out.println("Vi tri xuat hien sau cung cua
chuoi con 'Mot' trong str4:" + idx);
}
}
3. VÍ DỤ CHUỖI

Chương trình nhập vào một chuỗi và in ra chuỗi


nghịch đảo của chuỗi nhập.
import java.lang.String;
import java.io.*;
public class InverstString
{ public static void main(String arg[])
{ System.out.println("\n *** CHUONG TRINH IN CHUOI
NGUOC *** ");
try
{ System.out.println("\n *** Nhap chuoi:");
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
// Class BufferedReader cho phép đọc text từ luồng nhập ký
//tự, tạo bộ đệm cho những ký tự để hỗ trợ cho việc đọc
//những ký tự, những mảng hay những dòng.
3. VÍ DỤ CHUỖI

// Doc 1 dong tu BufferReadered ket thuc bang dau ket thuc dong.
String str = in.readLine();
System.out.println("\n Chuoi vua nhap la:" + str);
// Xuat chuoi nghich dao
System.out.println("\n Chuoi nghich dao la:");
for (int i=str.length()-1; i>=0; i--)
{
System.out.print(str.charAt(i));
}
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
3. VÍ DỤ CHUỖI

Lấy chuỗi con của một chuỗi


class SubStr
{
public static void main(String args[])
{
String orgstr = "Mot Hai Ba Bon";
// Lay chuoi con dung ham
// public String substring(int beginIndex, int
// endIndex)
String substr = orgstr.substring(4, 7);
System.out.println("Chuoi goc: " + orgstr);
System.out.println("Chuoi con: " + substr);
}
}
3. VÍ DỤ CHUỖI
Mảng các chuỗi
class StringArray
{ public static void main(String args[])
{ String str[] = {"Mot", "Hai", "Ba", "Bon" };
System.out.print("Mang goc: ");
for(int i=0; i < str.length; i++)
System.out.print(str[i] + " ");
System.out.println("\n");
// Thay doi chuoi
str[0] = "Bon"; str[1] = "Ba";
str[2] = "Hai"; str[3] = "Mot";
System.out.print("Mang thay doi:");
for(int i=0; i < str.length; i++)
System.out.print(str[i] + " ");
System.out.print("\n");
}
}
FAQ

49

You might also like