Lập trình Java cho dos
Java : ngôn ngữ vạn năng applets, ứng dụng window ứng dụng DOS (console), beans, servlets, Applet Programming Applet = chương trình Java chạy trong một trang Web. Mở ...
Java : ngôn ngữ vạn năng
applets,
ứng dụng window
ứng dụng DOS (console),
beans, servlets,
Applet Programming
Applet = chương trình Java chạy trong một trang Web.
Mở một trang Web có chứa applet -> applet sẽ được tự động khởi tạo và thực hiện.
Applets tăng cường chức năng trang Web
sinh động,
tương tác,
+ ứng dụng CSDL,
Application Programming
Ưng dung window.
Bộ công cụ Abstract Window Toolkit (AWT)
Tạo ra các chương trình chạy trong Microsoft Windows (98, 95, NT, and CE), Macintosh, UNIX, OS/2, và mọi môi trường window khác
Ưng dụng DOS - console.
dữ liệu vào từ bàn phím
hiển thị kết quả trên (cửa sổ) màn hình.
Xây dựng các JavaBeans
Mô hình Component Object Model (COM).
JavaBeans = software components độc lập với nền HĐH,
Có thể sử dụng lại trong applets, ứng dụng đơn lẻ...
Servlet Programming
Chương trình server nhỏ : một nhiệm vụ, một yêu cầu cụ thể.
Ví dụ : chương trình Common Gateway Interface (CGI) do Web servers cho chạy để thực hiện tìm kiếm Web, xử lí form, cung cấp phản hồi tới NSD Web.
Nhỏ, nhanh, hiệu quả, để hỗ trợ cho ứng dụng Web.
Java Server Toolkit - Servlet API : để xây dựng các servlet.
Có thể sử dụng Java API để viết chương trình CGI,
Sự khác nhau giữa ứng dụng Console và ứng dụng Window
Không có GUI , Window.
Dữ liệu nhập vào từ bàn phím.
Lối vào là phương thức main() với đối là String[].
Khung như sau :
class programClass {
public static void main(String[] args) {
.
.
.
}
}
Đọc mảng args để nhận các tham số dòng lệnh.
xử lí các input từ bàn phím, ....
Nhập từ bàn phím và xuất ra màn hình
I/O cơ bản : đọc từ bàn phím
viết ra màn hình.
Lớp System trong java.lang package cung cấp mọi hỗ trợ cần thiết Biến
System.in -> standard input stream (= bàn phím)
System.out -> standard output stream, (= màn hình)
System.err -> standard error stream, (= màn hình)
Lớp InputStream cung cấp các phương thức cơ bản để đọc dữ liệu.
Lớp BufferedReader có các phương thức
read() ,
readLine() để đọc vào trọn một dòng.
Dưới đây minh hoạ cách dùng các lớp đó.
BufferedReader keyboardInput;
keyboardInput = new BufferedReader(new InputStreamReader(System.in));
String newLine;
while(((newLine = keyboardInput.readLine())!=null)) {
// Process each input line
}
Sửa lại ManApp.java để nhập tên và năm sinh từ bàn phím.
Hai biến String ten, nam sẽ nhận từ bàn phím, họ tên và năm sinh.
Câu lệnh
ns = Integer.parseInt(nam);
chuyển đổi xâu kí số nam -> số nguyên ns.
import java.lang.*;
import java.io.*;
import java.util.*;
class ManInput{
public static void main (String[] arguments) throws IOException {
BufferedReader keyboardInput ;
keyboardInput = new BufferedReader(new InputStreamReader(System.in));
String ten,nam;
int ns;
do { System.out.print("Ho va ten : ");
ten = keyboardInput.readLine();
System.out.print("Nam sinh : ");
nam = keyboardInput.readLine();
}
while ((ten == null) || (nam == null));
keyboardInput.close();
ns = Integer.parseInt(nam);
Man ng1 = new Man(ten,ns);
ng1.hienthi();
}
}
class Man ....
Nhập và xuất qua tệp.
Có thể định hướng lại để nhập vào từ tệp văn bản và xuất ra tệp văn bản như trong chương trình dưới đây.
import java.lang.*;
import java.io.*;
import java.util.*;
class ManFileIO{
public static void main (String[] arguments) throws IOException {
BufferedReader FileInput ;
PrintWriter out ;
FileInput = new BufferedReader(new FileReader("filein.txt"));
out = new PrintWriter(new BufferedWriter(new FileWriter("fileout.txt")));
String ten,nam;
int ns;
do { ten = FileInput.readLine();
nam = FileInput.readLine();
}
while ((ten == null) || (nam==null));
FileInput.close();
ns = Integer.parseInt(nam);
Man ng1 = new Man(ten,ns);
ng1.hienthi();
out.println(ten);
out.println(nam);
out.close();
}
}
class Man ....
Các hằng E và PI
Các hàm số học, lượng giác, hàm mũ, hàm logarit,
Số ngẫu nhiên,
convertions.
Chương trình MathApp.
import java.lang.System;
import java.lang.Math;
public class MathApp {
public static void main(String args[]) {
System.out.println(Math.E);
System.out.println(Math.PI);
System.out.println(Math.abs(-1234));
System.out.println(Math.cos(Math.PI/4));
System.out.println(Math.sin(Math.PI/2));
System.out.println(Math.tan(Math.PI/4));
System.out.println(Math.log(1));
System.out.println(Math.exp(Math.PI));
for(int i=0;i<3;++i)
System.out.print(Math.random()+" ");
System.out.println();
}
}
Két quả như sau :
2.718281828459045
3.141592653589793
1234
0.7071067811865476
1.0
0.9999999999999999
0.0
23.14069263277926
.....
Lớp String, StringBuffer
String = xâu hằng, không thay đổi.
StringBuffer = String thay đổi được nội dung.
Trình biên dịch tự động chuyển đổi String literal -> đối tượng String.
String str = "text";
String str = new String("text");
Nối String : +
String s = "";
s = s + "a" + "b";
length() ;
Các phương thức truy cập kí tự và xâu con
charAt(),
getBytes(),
getChars(),
indexOf(),
lastIndexOf(),
substring().
So sánh và Test
compareTo(),
endsWith(),
equals(),
equalsIgnoreCase(),
regionMatches(),
startsWith().
Các phương thức Copy, Concatenation, Replace
concat(),
copyValueOf(),
replace(),
trim().
Chuyển đổi và tạo đối tượng.
intern(),
toCharArray(),
toLowerCase(),
toString(),
toUpperCase(),
valueOf().
Chương trình StringApp.
import java.lang.System;
import java.lang.String;
public class StringApp {
public static void main(String args[]) {
String s = " Java Unleashed 1.2 ";
System.out.println(s);
System.out.println(s.toUpperCase());
System.out.println(s.toLowerCase());
System.out.println("["+s+"]");
s=s.trim();
System.out.println("["+s+"]");
s=s.replace('J','X');
s=s.replace('U','Y');
s=s.replace('2','Z');
System.out.println(s);
int i1 = s.indexOf('X');
int i2 = s.indexOf('Y');
int i3 = s.indexOf('Z');
char ch[] = s.toCharArray();
ch[i1]='J';
ch[i2]='U';
ch[i3]='2';
s = new String(ch);
System.out.println(s);
}
}
Kết quả in ra như sau:
Java Unleashed 1.2
JAVA UNLEASHED 1.2
java unleashed 1.2
[ Java Unleashed 1.2 ]
[Java Unleashed 1.2]
Xava Ynleashed 1.Z
Java Unleashed 1.2
Chwong trình StringBufferApp.
import java.lang.System;
import java.lang.String;
import java.lang.StringBuffer;
public class StringBufferApp {
public static void main(String args[]) {
StringBuffer sb = new StringBuffer(" is ");
sb.append("Hot");
sb.append('!');
sb.insert(0,"Java");
sb.append(' ');
sb.append("This is ");
sb.append(true);
sb.setCharAt(21,'T');
sb.append(' ');
sb.append("Java is #");
sb.append(1);
String s = sb.toString();
System.out.println(s);
}
}
két quả in ra như sau:
Java is Hot!
This is True
Java is #1.
java.util Package
- Vector-- mảng (mở rộng được) các đối tương.
- Stack.
- BitSet--Vector bit (mở rộng được).
- Dictionary--Danh sách các cặp key-value.
- Hashtable--Một kiểu tự điển triển khai hash table.
Enumeration Interface
Duyệt qua tập có chỉ số các đối tượng hay giá trị :
hasMoreElements() : có còn phần tử nữa hay không.
nextElement() : phần tử tiếp theo.
Duyệt một lần.
Lớp Vector
Chương trình VectorApp.
import java.lang.System;
import java.util.Vector;
import java.util.Enumeration;
public class VectorApp {
public static void main(String args[]){
Vector v = new Vector();
v.addElement("one");
v.addElement("two");
v.addElement("three");
v.insertElementAt("zero",0);
v.insertElementAt("oops",3);
v.insertElementAt("four",5);
System.out.println("Size: "+v.size());
Enumeration enum = v.elements();
while (enum.hasMoreElements())
System.out.print(enum.nextElement()+" ");
System.out.println();
v.removeElement("oops");
System.out.println("Size: "+v.size());
for(int i=0;i<v.size();++i)
System.out.print(v.elementAt(i)+" ");
System.out.println();
}
}
Chương trình khởi tạo đối tượng Vector,
addElement() : thêm các strings "one", "two", "three".
insertElementAt() : chèn vào vị trí ...
size() = kích thước = số phần tử.
elements() : lấy ra mảng phần tử của Vector
hasMoreElements()
nextElement()
removeElement()
elementAt() :
Size: 6
zero one two oops three four
Size: 5
zero one two three four
Lớp Stack.
Constructor mặc định Stack() tạo ra stack rỗng.
push()pop().
search() : tìm kiếm một phần tử cụ thể trong stack
peek() cho nội dung của phần tử top nhưng không lấy ra.
empty() kiểm tra rỗng.
Chương trình StackApp.
import java.lang.System;
import java.util.Stack;
public class StackApp {
public static void main(String args[]){
Stack s = new Stack();
s.push("one");
s.push("two");
s.push("three");
System.out.println("Top of stack: "+s.peek());
while (!s.empty())
System.out.println(s.pop());
}
}
Top of stack: three
three
two
one
Ngày tháng và Lịch.
Date
Constructor mặc định Date() không tham đối -> đối tượng ngày tháng hiện tại của hệ thống
Đã thay thế bằng Calendar, DateFormat, TimeZone.
Calendar
Calendar hỗ trợ chuyển đổi thời gian ngày tháng
Lớp con GregorianCalendar hỗ trợ lịch Gregorian,
Constructor không tham số -> lịch (múi giờ mặc định)
Constructor cho phép ấn định múi giờ và địa điểm.
Thứ trong tuần, tháng, năm, giờ phút giây, mili giây...
getInstance() tạo ra một đối tượng là Lịch địa phương - GregorianCalendar theo mặc định.
GregorianCalendar
GregorianCalendar : lớp con của Calendar.
TimeZone
Lớp múi giờ - TimeZone.
Các phương thức cho phép thâm nhập một danh sách các múi giờ có thể, giờ địa phương, (từ giờ hệ thống) , độ lệch với giờ chuẩn, tạo ra đối tượng múi giờ ...
Simpl eTimeZone
Lớp SimpleTimeZone dẫn xuất từ TimeZone
Chương trình DateApp.
import java.lang.System;
import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class DateApp {
public static void main(String args[]){
Date today = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(today);
System.out.println("Today: ");
displayDateInfo(cal);
cal.clear();
cal.set(2000,0,1);
System.out.println(" New Years Day 2000: ");
displayDateInfo(cal);
}
static void displayDateInfo(GregorianCalendar cal){
String days[] = {"","Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
String months[] = {"January","February","March","April","May",
"June","July","August","September","October","November",
"December"};
String am_pm[] = {"AM","PM"};
System.out.println("Year: "+cal.get(Calendar.YEAR));
System.out.println("Month: "+months[cal.get(Calendar.MONTH)]);
System.out.println("Date: "+cal.get(Calendar.DATE));
System.out.println("Day: "+days[cal.get(Calendar.DAY_OF_WEEK)]);
System.out.println("Hour: "+(cal.get(Calendar.HOUR)+12)%13);
System.out.println("Minute: "+cal.get(Calendar.MINUTE));
System.out.println("Second: "+cal.get(Calendar.SECOND));
System.out.println(am_pm[cal.get(Calendar.AM_PM)]);
TimeZone tz=cal.getTimeZone();
System.out.println("Time Zone: "+tz.getID());
}
}
Ví dụ một kết quả :
Today:
Year: 1998
Month: July
Date: 28
Day: Tue
Hour: 10
Minute: 57
Second: 6
AM
Time Zone: America/Los Angeles
New Years Day 2000:
Year: 2000
Month: January
Date: 1
Day: Sat
Hour: 12
Minute: 0
Second: 0
AM
Time Zone: America/Los Angeles
Lớp Random.
Tạo ra số ngẫu nhiên.
Chwong trình RandomApp.
import java.lang.System;
import java.util.Random;
public class RandomApp {
public static void main(String args[]){
Random r = new Random();
for(int i=0;i<4;++i) System.out.print(r.nextInt()+" ");
System.out.println();
r = new Random(123456789);
for(int i=0;i<4;++i) System.out.print(r.nextDouble()+" ");
System.out.println();
r.setSeed(234567890);
for(int i=0;i<4;++i) System.out.print(r.nextGaussian()+" ");
System.out.println();
}
}
Các lớp bao gói.
Kiểu nguyên thuỷ không phải là đối tượng,
không thâm nhập bằng các phương thức.
Các lớp wrappers cung cấp những chức năng cơ sở : chuyển đổi, tính giá trị, mã băm, so sánh bằng nhau...
Lớp Boolean
getBoolean(), toString(), valueOf(), booleanValue().
Viết đè : toString(), equals(), hashCode() của Object.
Lớp Character
Các phương thức hỗ trợ in hoa, in thường, chuyển đổi.
Các lớp Byte, Short, Integer, Long
Các hằng MIN_VALUE, MAX_VALUE
parseInt(), parseLong() : chuyển đối tượng String -> đối tượng Byte, Short, Integer, Long.
Các lớp Double, Float
Các hằng MIN_VALUE, MAX_VALUE,
POSITIVE_INFINITY, NEGATIVE_INFINITY
NaN (not-a-number).
Ví dụ minh hoạ.
Chương trình WrappedClassApp.
import java.lang.System;
import java.lang.Boolean;
import java.lang.Character;
import java.lang.Integer;
import java.lang.Long;
import java.lang.Float;
import java.lang.Double;
public class WrappedClassApp {
public static void main(String args[]) {
Boolean b1 = new Boolean("TRUE");
Boolean b2 = new Boolean("FALSE");
System.out.println(b1.toString()+" or "+b2.toString());
for(int j=0;j<16;++j)
System.out.print(Character.forDigit(j,16));
System.out.println();
Integer i = new Integer(Integer.parseInt("ef",16));
Long l = new Long(Long.parseLong("abcd",16));
long m=l.longValue()*i.longValue();
System.out.println(Long.toString(m,8));
System.out.println(Float.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
}
Kết quả in ra như sau:
true or false
0123456789abcdef
50062143
1.4E-45
1.7976931348623157E308