Cú pháp của phương thức là: public final boolean readBoolean throws I0Exception - Phương thức readByie đọc một byte va cé giá trị trả về là byte đọc được.. Cú pháp của phương thức là: p
Trang 1Chương 4: Sơ lược vẻ luồng và cơ sở dữ liệu m¡ [MP Chuong 4:
So: luge vé ludng va co sở dữ liệu
Nhập uò xuất một cơ sở dữ liệu đơn giản
Trong chương này, chúng tôi sẽ minh hoạ một số chương trình về thao tác cơ sở dữ liệu Bạn đọc nên đọc kỹ và thử lại để
hiểu rõ hơn Khi đã nắm bắt được các vấn để về thao tác cơ sở dữ liệu, bạn hãy thử phát triển một số chương trình cho cơ sở đữ liệu
Employee[] staff = new Employee[3];
staff[0] = new Employee("Cracker’, 75000,1987, 12, 15);
staff[1] = new Employee("Hacker", 50000,1989, 10, 1),
staff[2] = new Employee("Tester’ , 40000,1990, 3, 15);
try
{
Trang 2[MỊ? ;› Chương 4: Sơ lược về luồng và cơ sở dữ liệu
System.out.printin("Print the employee records:");
for (int i=0; i < staff.length; i++)
System.out.printIn(staff[i]);
System.out.printin(‘\n’);
//Save all employee records to the file employee.dat
PrintWriter out = new PrintWriter(
new FileWriter(*employee.dat'));
writeData(staff, out);
out.close();
//Retrieve all records into a new array
BufferedReader in = new BufferedReader(
new FileReader(“employee.dat"));
Employee[] newStaff = readData(in);
in.close();
System.out.printin(*Print the newly
read employee records:");
for (int i=0; i < newStaff.length; i++)
Trang 3Chuong 4: So luge vé ludng va co sd dif liu
Veatch
public static void main(String[] args)
static void writeData(Employee[] ee, PrintWriter out)
throws IOException
{
out.printin(ee.length);
for (int i=0; i < ee.length; i++) ee[i].writeData(out);
Wistatic void writeData
static Employee[] readData(BufferedReader in)
throws IOException
{
int n = Integer.parselnt(in.readLine());
Employee[] ee = new Employee[n);
for (int i=0; i <n; i++) ,
static Employee[] readData
)//public class DataFile1
Trang 4public Employee(String n, double s,
int year, int month, int day)
{
name = n;
salary = S;
GregorianCalendar calendar
= new GregorianCalendar(year, month-1, day);
// GregorianCalendar uses 0 = January
Trang 5Chương 4: Sơ lược về luồng và cơ sở dữ liệu
Trang 6Chương 4: Sơ lược về luồng và cơ sở dữ liệu + (calendar.get(Calendar.MONTH) + 1) + '!'
V//public void readData
private String name;
private double salary;
private Date hireDay;
V/class Employee
Két qua thuc thi chuong trinh DataFilel.java:
Print the employee records:
Employee[name=Cracker,salary=75000.0,hireDay=Tue Dec 15 00:00:00 CET
1987]
Trang 7Chương 4: Sơ lược về luồng và cơ sở dữ liệu 77 M° Employee{name=Hacker,salary=50000.0, hireDay=Sun Oct 01 00:00:00 CEST
1989]
Employee[name=Tester,salary=40000.0,hireDay=Thu Mar 15 00:00:00 CET
1990]
Print the newly read employee records:
Employee[name=Cracker,salary=76000.0,hireDay=Tue Dec 15 00:00:00 CET
Trang 8staff[1] = new Employee("Hacker* , 50000,1989, 10, 1);
staff[2] = new Employee("Tester’ , 40000,1990, 3, 15);
try
{
System.out.printin("Print the employee records:");
for (int i=0; i < staff.length; i++)
System.out.printIn(staff[i]);
System.out.println(n");
//Save all employee records to the file employee.dat
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("employee.dat'));
out.writeObject(staff);
out.close();
//Retrieve all records into a new array
ObjectInputStream in = new ObjectinputStream(
new FileInputStream(“employee.dat"));
Employee[] newStaff = (Employee[])in.readObject();
in.close();
Trang 9Chuong 4: So luge vé luéng và cơ sở dữ liệu
System.out.printin(“Print the newly read
Vipublic static void main(String[] args)
\/public class DataFile2
class Employee implements Serializable
{
public Employee() {}
public Employee(String n, double s, int year,
int month, int day)
Trang 10M 80 Chương 4: Sơ lược về luồng và cơ sở dữ liệu // GregorianCalendar uses 0 = January
Trang 11Chương 4: Sơ lược về luồng và cơ sở dữ liệu
private String name;
private double salary;
private Date hireDay;
V//class Employee implements Serializable
class Manager extends Employee
{
public Manager(String n, double s, int year,
int month, int day)
double baseSalary =super.getSalary();
return baseSalary + bonus;
Trang 12M' s Chương 4: Sơ lược về luỗng và cơ sở dữ liệu )
private double bonus;
\//class Manager extends Employee
Két qua thuc thi chuong trinh DataFile2 java:
Print the employee records:
Manager[name=Cracker,salary=80000.0,hireDay=Tue Dec 15 00:00:00 CET 1987][bonus=5000.0]
Employee[name=Hacker,salary=50000.0,hireDay=Sun Oct 01 00:00:00 CEST
Trang 13Chương 4: Sơ lược về luồng và cơ sở dữ liệu 83 MỊI° Manager[name=Cracker,salary=80000.0,hireDay=Tue Dec 15 00:00:00 CET
Employee harry = new Employee("Hacker" , 50000,1989, 10, 1);
Manager boss = new Manager("0racker", 80000,1987, 12, 15);
Trang 14
Qu? 84 Chương 4: Sơ lược về luỗng và cơ sở dữ liệu
for (int i=0; i < staff.length; i++)
System.out.printIn(staff[i]);
System.out.printlnft);
//Save all employee records to the file employee.dat
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream ("employee.dat"));
out.writeObject(staff);
out.close();
//Retrieve all records into a new array
ObjectInputStream in = new ObjectinputStream(
System.out.printin("Print the newly
read employee records:”);
for (int i=0; i < newStaff.length; i++)
System.out.printin(newStaff[i]);
)/ty
catch(Exception e)
Trang 15Chương 4: Sơ lược về luồng và cơ sở dữ liệu 85 MP?
{
e.printStackTrace();
//catch
//public static void main(String[] args)
V/public class DataFile3
class Employee implements Serializable
Trang 16[MỊ? ss Chương 4: Sơ lược về luồng và cơ sở dữ liệu
private String name;
private double salary;
Trang 17Chương 4: Sơ lược về luồng và cơ sở dữ liệu
private Date hireDay;
class Employee implements Serializable
class Manager extends Employee
private Employee secretary;
Vclass Manager extends Employee
Trang 18M' 88 Chương 4: So lược về luồng và cơ sở dữ liệu
Kết quả thực thi chương trinh DataFile3 java:
Print the employee records:
Manager[name=Cracker,salary=80000.0,hireDay=Tue Dec 15 00:00:00 CET 1987][secretary=Employee[name=Hacker,salary=50000.0,hireDay=Sun Oct 01
Print the newly read employee records:
Manager[name=Cracker,salary=80000.0,hireDay=Tue Dec 15 00:00:00 CET 1987][secretary=-Employee[name=Hacker,salary=55000.0,hireDay=Sun Oct 01
Trang 19
Chương 5ð: Các phương thức đọc và ghỉ 89 M
5.1 Các phương thức đọc các dữ liệu nhập
- Phương thức readBooleøn() đọc một giá trị kiểu boolean, giá
trị này được biểu dién trong mét byte Nếu byte này là 0 thì giá trị tương ứng là false, néu byte nay khdc 0 thì giá trị tương ứng là
true Giá trị trả về của phương thức readBoolean() 1a gid tri nhi phân đọc được, nghĩa là false hodc true
Cú pháp của phương thức là:
public final boolean readBoolean() throws I0Exception
- Phương thức readByie() đọc một byte va cé giá trị trả về là byte đọc được
Cú pháp của phương thức là:
public final byte readByte() throws I0Exception
- Phương thức readUnsignedByte() đọc một byte và có giá trị
trả về là số nguyên ¿m£ đọc được; 24 bit cao của số nguyên int nay đều bằng 0, vậy số nguyên im này là số dương
Cú pháp của phương thức là:
public final int readUnsignedByte() throws I0Exception
- Phương thức readChar( đọc một ký tự Unicode 16 bit va cé
giá trị trả về là ký tự đọc được:
Cú pháp của phương thức là:
public final char readChar() throws IOException
- Phuong thite readFully() dye một số byte mong muốn
Cú pháp của phương thức là:
Trang 20
QAP 20 Chương 5: Các phương thức đọc và ghi
public final void
readFully(byte[] buffer) throws IOException
public final void
readFully(byte[] buffer, int offset, int count)
throws IOException
- Phuong thtic readDouble() doc mét double có 64 bit và có
gid tri tra vé 14 double doc duge
Cú pháp của phương thức là:
public final double readDouble() throws IOException
- Phuong thie readFloat() doc mét float cé 32 bit và có giá trị
tra vé 1a float doc duge
Cú pháp của phương thức là:
public final float readFloat() throws IOException
- Phuong thie readInt() doc mét sé nguyén kiéu int c6 32 bit
và có giá trị trả về là số nguyên ¿m đọc được
Cú pháp của phương thức là:
public final int readint() throws IOException
- Phuong thtic readLong() doc mét sé nguyén kiéu long c6 64 bit và có giá trị trả về là số nguyên /ong đọc được
Cú pháp của phương thức là:
public final long readLong() throws IOException
- Phương thức reœdShort() đọc mét sé nguyén kiéu short cé
16 bit và có giá trị trả về la sO nguyén short doc được
Cú pháp của phương thức là:
public final short readShort() throws IOException
- Phương thức readŨnsignedShortQ đọc 16 bit và có giá trị
trả về là số nguyên ¿n¿ đọc được; 16 bit cao của số nguyên ¿n này
đều bằng 0, vay int này là số dương.
Trang 21Chwong 5: Các phương thức đọc và ghi a A?
Cú pháp của phương thức là:
public final int readUnsignedShort() throws IOException
- Phương thức reødLine() đọc một chuỗi byte mà chữ cuối là
ký tự xuống hàng và có giá trị trả về là một chuỗi; đó là chuỗi các
byte đọc được, không có ký tự xuống hàng Nếu không có by£e nào
đọc được, thi gid tri tra vé 1a null
Cú pháp của phương thức là:
public final String readLine() throws I0Exception
- Phương thức reedUTF() đọc một chuỗi ký tự Unicode trong luéng nhap di liệu và có giá trị trả về là chuỗi ký tự đọc được, UDF là viết tắt của Unicode Transfer Format Nếu không có ký tự nào đọc được, thì giá trị trả vé 1a null
Cú pháp của phương thức là:
public final String readUTF() throws IOException
- Phương thức:
final int read(byte[] buffer) throws IOException
viết toàn bộ by/e từ luỗng nhập vào vùng dém byte array buffer
Giá trị trả về là số by£e đọc được Nếu không có byfe nào đọc được,
thì giá trị trả về là -1
- Phương thức:
public final int read (byte[] buffer,int offset, int count)
throws IOException
viết count số by£e từ luồng nhập vào vùng dém byte array buffer,
bat dau tit vi tri offset Gia tri tra vé 1a 86 byte doc duge Néu không có byte nao đọc được, thì giá trị trả về là -1
- Phương thức available() ding để xác định số lượng byíe của một tệp đã nhập; khi cée byte được đọc trên luồng nhập, số lượng
byte sẽ giảm tương ứng
Trang 22
92 Chương ð: Các phương thức đọc và ghi
- Phương thức uoid ciose() dùng để đóng các luồng nhập hoặc xuất; nếu ta vẫn đọc hoặc ghi, thì ngoại lệ 7OException sẽ xuất
hiện
- Phương thức s&ipBy£es() dùng để bỏ qua một sé byte mong
muốn và giá trị trả về là số byfe bị bỏ qua
Cú pháp của phương thức là:
int skipBytes(int count) throws IOException
S6 byte bi bé qua bang véi count, kiéu int
- Phuong thtic skip() ding dé bd qua mét sé byte mong muén
và giá tri tra vé 14 sé byte bi bé qua
Cú pháp của phương thức là:
long skipBytes(long count) throws IOException
Số byte bi bé qua bằng véi count, kiéu long
Trang 23Chương 5: Cac phuong thiic doc va ghi 93 (pal
file_in = new FilelnputStream(args{0]);
data_in = new DatalnputStream(file_in);
Trang 25Chương 5: Các phương thức đọc và ghỉ os f°
5.2 Các phương thức viết các dữ liệu xuất
- Phương thức wri£eBoolean() viết một giá trị val cha một
boolean, dt liéu xudt (output) 14 mot byte; val 1a false néu byte nay
la 0, val 1a true néu byte 1a 1
Cú pháp của phương thức là:
void writeBoolean(boolean val) throws IOException
- Phương thức writeByte() viét một byte, dit ligu xuat (output)
1a mét byte, gid trị của byte nay 1a byte thấp nhất của số nguyên
val
Cú pháp của phương thức là:
void writeByte(int val) throws IOException
- Phương thức writeBytes() viết một chuỗi by¿e, dữ liệu xuất
(output) là một chuỗi byíe, giá trị cia moi byte nay 1a byte thap
của mỗi mã Unicode 16 bit của chuỗi sứr
Cú pháp của phương thức là:
void writeBytes(String str) throws 10Exception
- Phương thie writeChar() viét mot ky tu Unicode 16 bit, dữ
liệu xuất (output) là 16 bit thấp của sé nguyén val
Cú pháp của phương thức là:
void writeChar(int val) throws IOException
- Phương thức writeChars() viết một chuỗi ký tự Unicode
Cú pháp của phương thức là:
void writeChars(String str) throws IOException
- Phương thtic writeDouble() viét một double cé 64 bit
Cú pháp của phương thức là:
void writeDouble(double val) throws IOException
- Phuong thie writeFloat() viết một floa‡ có 32 bit
ile as
Trang 26
96 Chuong 5: Cac phuong thtic doc va ghi
Cú pháp của phương thức là:
void writeFloat(float val) throws IOException
- Phuong thức :øriteÏn£() viết một số nguyên kiéu int có 33
Cú pháp của phương thức là:
void writelnt(int val) throws IDException
- Phương thức rieLongQ viết một số nguyên kiểu long có
64 bit
Cú pháp của phương thức là:
void writeLong(long val) throws IOException
- Phương thức œri£eShort(Q viết một số nguyên kiểu short có
16 bit, như vậy chỉ có 16 bit thấp của số nguyên val dude viét
Cú pháp của phương thức là:
void writeShort(int val) throws IOException
- Phuong thtic writeUTF() viết một chuỗi ký tự Unicode
Cú pháp của phương thức là:
void writeUTF(String str) throws IOException
- Phương thitc void flush() két thúc xuất và xóa vùng đệm
- Phương thức:
void write(int oneByte) throws IOException
viết 8 bit cấp thấp nhất của số nguyên oneByte vào luỗng xuất
- Phương thức:
void write(byte[] buffer) throws IOException
viét toan bé byte cia ving dém byte array buffer vao luéng xuat
- Phương thức:
void write(byte[] buffer,int offset, int count)
Trang 27Chuang 5: Céc phuong thiic doc va ghi s7 [MỸ
void write(int ch) throws IOException
viết 16 bit cấp thấp nhất của ch vào luồng xuất
- Phương thức:
void write(char[] charArray)
viết toàn bộ mảng ký tự cbarArray vào luồng xuất
- Phương thức:
void write(char[] charArray, int offset, int count)
viét count ky ty từ mảng ký tự charArray bắt dau tu vi tri offset, vào luồng xuất
- Phương thức:
void write(String str)
viết chuỗi sứr vào luồng xuất
- Phương thức:
void write(String str, int offset, int count)
viết chudi count ky ty tit chudi str, bắt đầu từ vị tri offset, vao luéng xuat
Trang 28file_out = new FileOutputStream(args[0]);
data_out = new DataOutputStream(file_out);
Trang 29Chương ð: Các phương thức đọc và ghi 99 rg
data_out.writelnt(678);
c:\javawork>javac Output java
c:\javawork>java Output! Output txt
ta có tệp Ou£pu£1.txt (đọc bởi Word 98 & VNI):
Trang 30file_in = new FilelnputStream(args[0]);
data_in = new DatalnputStream(file_in);
Trang 31Chương 5ð: Các phương thức đọc va ghi
c:\javawork>java Output2 Output txt>Output2.txt
ta cé tép Output2.txt (doc bởi Word 98 & VND:
Trang 32Chương ð: Các phương thức đọc va ghi
Và ta tìm lại các đữ liệu trong chuong trinh Outputl java
Trang 33Chương 6: Các phương thức về số nguyên kiểu int hoặc kiểu long 103 ga?
public double doubleValue()
có giá trị trả về là double, bằng cách ép kiểu giá tri int cua déi
tượng thành giá trị double
- Phương thức:
public float floatValue()
có giá trị tra va 1a float, bing cach ép kiểu giá tri int cha doi
tượng thành gia tri float
- Phương thức:
public int intValue()
có giá trị trả vé 1a int, bằng cách ép kiểu giá trị của đối tượng
thanh gid tri int
- Phương thức:
public long longValue()
có giá trị trả về là long, bằng cách ép kiéu gid tri int cha đối tượng
thành giá trị ong
Ví dụ:
Integer iobjet = new Integer(1234567890);
double d = iobjet.doubleValue();
Trang 34PA? 104 Chương 6: Các phương thức về số nguyên kiểu int hoặc kiểu long float f = iobjet.floatValue();
int i = jobjet.intValue();
long L = iobjet.longValue();
6.1.2 Đối tượng Integer
- Su tao dung (constructor) Integer() tao dung đối tượng Integer tit mét int hay mét chudi
- Sự tạo đựng:
public Integer(int val)
tạo dựng đối tượng Integer bang tri sé val
- Sự tạo dung:
public Integer(String str) throws NumberFormatException
tạo dựng đối tượng Infeger bằng biểu diễn dạng chuỗi (string
Tepresentation) của số nguyên thập phân (cơ số 10)
Ví dụ:
Integer a = new Integer(123); // using integer
Integer b = new Integer(“123”); // using string
Ghỉ chú:
Các thé hién (instance) cia lép Integer khong thé ding trong các phép tính số học Vi du:
Integer ¡1 = new Integer(1);
Integer i2 = new Integer(2);
int i3 = i1 + i2; // illegal
int i3 = ¡1.intValue() + i2.intValue();
6.1.3 Các phương thức chuyển đổi kiểu
- Phương thức uaiueOƒft) xây dựng một đối tượng Integer bing
cách dùng sự biểu diễn dạng chuỗi của nó,
Trang 35Chương 6: Các phương thức về số nguyên kiểu int hoặc kiểu long 105 ae
Integer i1 = Integer valueOf(str),// parse number in radix 10
Integer i2 = Integer valueOf(str,46// parse number in radix 16
Trang 36° 106 Chương 6: Các phương thức về số nguyên kiểu int hoặc kiểu long
- Phương thức £oSiring() xây dựng sự biểu diễn dạng chuỗi của một số nguyên ¿m hay một đối tượng Infeger
Cú pháp của phương thức là:
public String toString()
public static String toString(int num)
public static String toString(int num, int radix)
Phuong thtte public String toString0 có giá trị trả về là sự biểu diễn dạng chuỗi của giá trị im của một đối tugng Integer
Phương thtic public static String toString(int num) cé gia tri
trả về là sự biểu diễn dạng chuỗi của số nguyén num
Phuong thc public static String toString(int num, int radix)
có giá trị trả về là sự biểu diễn dang chuỗi của số nguyên nưm với
co sé radix.
Trang 37Chương 6: Các phương thức về số nguyên kiểu int hoặc kiểu long 107 MỊ?
Ví dụ:
Integer num = new Integer(25);
String str1 = num.toString(); // from Integer objet
String str2 = Integer.toString(25); // from radix 10 int
String str3 = Integer.toString(25,8); // from octal int
String str4 = “The three numbers are “ + str1 +“, “+ str2 +”, “+ str3; Xét chương trinh Int1 java:
int octNum = Integer.parselnt('025”,8);
System.out.printin("i: " + i + *, octNum: * + octNum);
Integer i1 = Integer.valueOf(str);
Trang 38IMỊ
108 Chương 6: Các phương thức về số nguyên kiểu int hoặc kiểu long Integer i2 = Integer.valueOf(str, 8);
i1: 123456, i2: 42798, i3: 1193046
str6: The three numbers are 123456, 123456, 11110001001000000, 361100,
1e240
Trang 39Chương 6: Các phương thức về số nguyên kiéu int hoặc kiểu long 109
- Phương thức /oBinarySiring() xây dựng sự biểu diễn nhị phân của một số nguyên irứ
Cú pháp của phương thức là:
public static String toBinaryString(int num)
Phương thức này không tương đương với toString(num, 2), vi
toString(num, 2) xử lý num như một số nguyên có dấu Nếu nưm
là một số âm thì toString() xt ly trị số tuyệt đối của nưmvà thêm dấu — vào sự biểu diễn nhị phân
- Phương thức foHexString0 xây dựng dạng biểu điễn thập
lục phân (hexadecimal string representation) của một số nguyên int
Cú pháp của phương thức là:
public static String toHexString(int num)
Phương thức này không tương đương với toString(num, 16),
vi toString(num, 16) xử lý num như một số nguyên có dấu Nếu num là một số âm thì £oString0 xử lý trị số tuyệt đối của numvà thêm dấu — vào dạng biểu diễn thập lục phân
- Phương thức toOctalString0 xây dựng dạng biểu diễn bát phân (octal string representation) của một số nguyên in
Cú pháp của phương thức là:
public static String toOctalString(int num)
Phương thức này không tương đương với toString(nưm, 8), vì
toString(num, 2) xử lý num như một số nguyên có đấu Nếu nưm
là một số âm thi toString() xt lý trị số tuyệt đối của num va them dấu - vào dạng biểu diễn bát phân
- Phương thức equdis() kiểm tra sự bằng nhau của hai đối
tượng
Cú pháp của phương thức là:
Public boolean equals(Objet obj)
Trang 40MP: 10_ Chương 6: Các phương thức về số nguyên kiểu int hoặc kiểu long Lénh il.equals(i2) c6 gid tri tra vé 1A true (hoae false) néu
hai đối tượng ¿1, ¿2 bằng nhau (hoặc khác nhau)
Ví dụ:
Integer ¡1 = new Integer(1);
Integer i1 = new Integer(1);