Tài liệu học tập Lập trình Java cơ bản

I. LỊC H SỬ HÌNH THÀNH VÀ PHÁT TRIỂN JAVA:

- Java là một ngôn ngữ lập trình c ấp cao theo hướng đối tượng do James Gosling và

một số đồng nghiệp ở Sun Microsy stems phát triển (với tên gọi ban đầu là Oak). Đây

cũng là một phần trong dự án Green (các phần mềm điều khiển thiết bị điện tử dân

dụng) của Sun.

- Năm 1995 Oak trở thành Java với phiên bản 1.0. Sau đó, Java không ngừng được

phát triển và lần lượt các phiên bản mới được Sun phát hành. Năm 2005, Sun phát

hành Java 1.5.0.

II. ĐẶC ĐIỂM NGÔN NGỮ JAVA:

Đơn giản:

- Java phát triển trên nền tảng C++, nhưng đơn giản hơn C++ rất nhiều như: không kế

thừa bội, không sử dụng biến con trỏ , cấu trúc “struct” và “union” cũng được loại bỏ

khỏi Java,.

Hướng đối tượng:

- Java được thiết kế xoay quanh mô hình hướng đối tượng. Vì vậy trong Java, tiêu

điểm là dữ liệu và các phương pháp thao tác lên dữ liệu đó. Dữ liệu và các phương

pháp mô tả trạng thái và cách ứng xử của một đối tượng trong Java.

Phân tán (Distributed):

- Java là ngôn ngữ thông dụng trong việc xây dựng các ứng dụng trên mạng nói chung

và ứng dụng web nói riêng.

Trung lập kiến trúc hệ thống:

- Đây là khả năng một chương trìn h được viết tại một máy nhưng có thể chạy được

bất kỳ đâu.

Bảo mật cao:

- Java cung cấp một số lớp để kiểm tra bảo mật và an toà n hệ thống.

Khả năng đa tuyến:

- Chương trình Java sử dụng kỹ thuật đa tiến trình (Multithread) để thực thi các công

việc đồng thời. Chúng cũng cung cấp giải pháp đồng bộ giữa các tiến trình.

 

pdf112 trang | Chuyên mục: Java | Chia sẻ: dkS00TYs | Lượt xem: 2469 | Lượt tải: 1download
Tóm tắt nội dung Tài liệu học tập Lập trình Java cơ bản, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
type trên Windows 
hay cat trên Linux.
import java.io.*;
public class TestPrintWriter{
public static void main(String args[]){ 
PrintWriter pw=null; 
// write data to file
try{
pw = new PrintWriter(new FileOutputStream(
 "mydata.dat"),true);
for(int i=0;i<10;i++){
pw.print( " " + (int)(Math.random ()*100)); 
}
}
 catch(IOException ex){
System.out.println(ex.getMessage ());
}
finally{
 try{
if(pw!=null)
pw.close ();
}
 catch(Exception ex){ 
}
} 
} 
}
Lập trình Java Xử lý luồng tập tin
Trang 102
Kết xuất của TestPrintWriter.java
7) Luồng đệm:
- Java tăng tốc nhập / xuất dựa vào các luồng đệm (buffered stream), giảm bớt số lần 
đọc và ghi.
- Dùng luồng đệm giúp ta có thể đọc / ghi mỗi lần một khối byte hay ký tự thay vì đọc 
từng byte hoặc từng ký tự.
Các lớp luồng đệm trong java:
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- BufferedWriter
Các phương thức khởi tạo luồng đệm:
public BufferedInputStream(InputStream in)
public BufferedOutputStream(OutputSream out)
public BufferedReader(Reader out)
public BufferedWriter(Writer out)
- Lớp luồng đệm thừa kế phương thức các lớp cha. Ngoài việc sử dụng phương thức từ 
lớp cha, BufferedReader còn có phương thức readLine () chịu trách nhiệm đọc nội 
dung.
Ví dụ:
- Chương trình mẫu minh họa xem tập tin trong vùng văn bản. Khi người dùng gõ tên 
tập tin vào trường văn bản và nhấp nút View, tập tin sẽ hiển thị trong vùng văn bản.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class ViewFile extends JFrame implements 
ActionListener{
private JTextArea contentView;
private JTextField txtInput;
private JButton btnView;
Lập trình Java Xử lý luồng tập tin
Trang 103
public ViewFile(){
setTitle ("View File");
JPanel p = new JPanel();
p.setLayout (new FlowLayout (FlowLayout.LEFT));
p.add (new JLabel ("File name"));
p.add (txtInput= new JTextField (20));
p.add(btnView = new JButton("View"));
//register listener
btnView.addActionListener(this);
contentView = new JTextArea(20,30);
JScrollPane pane = new JScrollPane(contentView);
getContentPane().add(pane,BorderLayout.CENTER);
getContentPane().add(p,BorderLayout.NORTH);
 }
public void actionPerformed(ActionEvent e){
if(e.getSource()== btnView)
showFile();
}
public void showFile(){
BufferedReader inFile=null;
String filename = txtInput.getText().trim();
String inLine;
try{
inFile = new BufferedReader(new FileReader(
 filename));
 boolean firstLine=true;
while((inLine=inFile.readLine())!=null){
if(firstLine){
firstLine=false;
contentView.append(inLine);
}
 else
contentView.append("\n" + inLine);
}
}
Lập trình Java Xử lý luồng tập tin
Trang 104
 catch(Exception ex){
System.out.println(ex.toString());
}
finally{
try{
if(inFile!=null)
inFile.close();
}
 catch(Exception ex){
 }
}
} 
public static void main(String args[]){
ViewFile frm = new ViewFile();
frm.setDefaultCloseOperation(
 JFrame.EXIT_ON_CLOSE);
frm.pack ();
frm.setVisible (true);
}
}
Kết xuất của ViewFile. java
8) Lớp StreamTonkenizer:
- Để phân tích cú pháp và từ dựng một cách mạnh mẽ và hiệu quả hơn ta cần sử dụng 
lớp StreamTokenizer. 
Lập trình Java Xử lý luồng tập tin
Trang 105
- Lớp StreamTokenizer có khả năng nhận dạng ra các token trên luồng. Nếu hình dung 
tập hợp một chuỗi các ký tự làm nên một câu thì token chính là từng từ, từng dấu 
chấm câu hay con số.
Phương thức khởi tạo sau:
Một số phương thức thường dùng:
pubic int nextToken () throws IOException
- Lấy ra từng token, phương thức trả về một trong những giá trị sau:
§ StreamTokenizer.TT_WORD: token đọc được là một từ
§ StreamTokenizer.TT_NUMBER: token đọc được là một số
§ StreamTokenizer.TT_EOL: đọc đến cuối dòng
§ StreamTokenizer.TT_EOF: đọc đến cuối luồng.
Lớp StreamTokenizer có 2 thuộc tính:
public String sval
- Lấy về giá trị của token nếu token đọc được là TT_WORD
public double nval
- Lấy về giá trị của token nếu token đọc được là TT_NUMBER
public StreamTokenizer(InputStream in)
Lập trình Java Lập trình CSDL với JDBC
Trang 106
Chương 7 ĐA TUYẾN TRÌNH
Sau bài học này, học viên có thể:
- Hiểu được khái niệm về tuyến và cơ chế lập trình đa tuyến
- Tạo được tuyến trong chương trình.
- Xử lý cơ chế đồng bộ (synchronized) giữa các tuyến trình.
I. Khái niệm:
1) Tuyến (Thread):
Là đơn vị nhỏ nhất của đoạn mã có thể thi hành được để thực hiện một công việc riêng 
biệt nào đó. Những chương trình trước đây đều chạy ở một tuyến; nghĩa là vào thời điểm 
xác định chỉ có một câu lệnh được thực thi. 
2) Đa tuyến (MultiThread):
- Là khả năng làm việc với nhiều tuyến 
- Đa tuyến chuyên sử dụng cho việc thực thi nhiều công việc đồng thời 
- Đa tuyến giảm thời gian rỗi của hệ thống đến mức thấp nhất và tăng hiệu suất thi 
hành của chương trình.
Tuyến có thể được tạo ra bằng 2 cách:
- Dẫn xuất từ lớp Thread
- Ứng dụng giao diện Runnable. 
Chu kỳ sống của tuyến:
II. PHƯƠNG PHÁP XÂY DỰNG TUYẾN:
1) Tạo tuyến bằng cách dẫn xuất lớp Thread:
- Lớp Thread chứa phương thức tạo dựng Thread() cũng như nhiều phương thức hữu 
ích có chức năng chạy, khởi động, tạm ngừng, tiếp tục, gián đoạn và ngừng tuyến. 
- Để tạo 1 tuyến ta có thể định nghĩa 1 lớp kế thừa từ lớp Thread và phải định nghĩa lại 
phương thức run() để thông báo cho hệ thống biết cách thực thi tuyến khi nó vận 
hành.
ReadyNew Running Waiting
Dead
Sleep,wait,I/O
Lập trình Java Lập trình CSDL với JDBC
Trang 107
Cấu trúc tạo 1 tuyến:
Thi hành tuyến:
Một số phương thức thường dùng trong lớp tuyến:
public void run()
- Phương thức được hệ thống gọi để thực thi công việc của tuyến, ta phải giành quyền 
phương thức này và cung cấp mã cho tuyến thi hành.
- Phương thức run() không được gọi trực tiếp từ đối tượng Thread.
public void start()
- Khởi động tuyến, qua đó làm cho phương thức run() cũng được kích hoạt.
public static void sleep(long millis) throws 
 InterruptedException
- Đặt tuyến vào trạng thái “ngủ” trong khoảng thời gian xác định bằng mili giây. 
public void stop() 
- Có chức năng ngừng tuyến. 
public void join() throws InterrupteException
- Chờ đợi tuyến này chết đi. 
public void setPriority(int p)
- Ấn định quyền ưu tiên p(xếp từ 1 đến 10) cho tuyến này. 
Ví dụ:
- Chương trình này tạo và chạy 2 tuyến sau:
§ Tuyến thứ nhất in các số nguyên từ 1 đến 10.
§ Tuyến thứ hai in chữ A 10 lần.
package chapter07;
class PrintNum extends Thread{
public void run(){
for(int i=1;i<=10;i++){
System.out.print(" " + i);
try{
ThreadX tx = new ThreadX();
tx.start();
class ThreadX extends Thread{
public void run(){
// cài đặt công việc của tuyến
}
 ...
}
Lập trình Java Lập trình CSDL với JDBC
Trang 108
Thread.sleep(300);
 }catch(Exception ex){}
 }
 }
}
class PrintChar extends Thread{
public void run(){
for(int i=1;i<=10;i++){
System.out.print(" A ");
try{
Thread.sleep(300);
}
 catch(Exception ex){
 }
}
}
}
public class TestThread{
public static void main(String args[]){
PrintNum t1= new PrintNum();
PrintChar t2= new PrintChar();
t1.start();
t2.start();
try{
 t1.join();
t2.join();
}
 catch(Exception ex){
 }
System.out.println("\n Both thread is deaded"); 
}
}
Lập trình Java Lập trình CSDL với JDBC
Trang 109
Kết quả của TestThread.java
2) Tạo tuyến bằng cách ứng dụng giao diện Runable:
- Ở phần trước, ta đã tạo và chạy tuyến thi hành bằng cách khai báo một lớp tuyến mở 
rộng lớp Thread. Phương thức này sẽ có hiệu lực nếu lớp tuyến chỉ kế thừa từ lớp 
Thread, nhưng sẽ vô dụng khi lớp tuyến thừa kế nhiều lớp. Để thừa kế nhiều lớp, ta 
phải ứng dụng giao diện.Java cung cấp giao diện Runnable để thay thế lớp Thread.
Cấu trúc định nghĩa 1 tuyến:
Thi hành tuyến:
Ví dụ:
- Chương trình mẫu định nghĩa một tuyến hiển thị thời gian (hh:mm:ss) trong một 
panel.
- Tập tin ClockPanel.java
package chapter07;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import javax.swing.border.*;
public class ClockPanel extends JPanel implements 
Runnable{ 
private JTextField txtDisplay; 
private Thread t;
RunnableY ry = new RunnableY();
Thread ty = new Thread(ry);
tx.start();
class RunnableY implements Runnable {
 public void run(){
// process Threads
 }
...
}
Lập trình Java Lập trình CSDL với JDBC
Trang 110
public ClockPanel(){
 add(new JLabel("Time is"));
add(txtDisplay= new JTextField(20));
setBorder(new TitledBorder(new 
EtchedBorder(),"Clock")); 
} 
public void run(){
String msg="";
while(true){
Date today = new Date();
msg = today.getHours() + ":" + 
today.getMinutes()+":" + today.getSeconds();
txtDisplay.setText(msg);
try{
Thread.sleep(1000); 
 }catch(Exception ex){
}
}
}
}
// TestClock.java
package chapter07;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
public class TestClock extends JFrame implements 
 ActionListener{
 JButton btnStart,btnStop;
ClockPanel p1 = new ClockPanel();
Thread t;
public TestClock(){
setTitle("Test clock");
getContentPane().add(p1,BorderLayout.NORTH);
JPanel p2 = new JPanel();
Lập trình Java Lập trình CSDL với JDBC
Trang 111
 p2.add(btnStart = new JButton("Start"));
p2.add(btnStop = new JButton("Stop"));
getContentPane().add(p2,BorderLayout.CENTER);
btnStart.addActionListener(this);
btnStop.addActionListener(this);
btnStop.setEnabled(false); 
 }
public void actionPerformed(ActionEvent e){
if(e.getSource()==btnStart){
start();
btnStart.setEnabled(false);
btnStop.setEnabled(true);
}
 else if(e.getSource()==btnStop){
stop();
btnStart.setEnabled(true);
btnStop.setEnabled(false);
}
 }
public void start(){
 t = new Thread(p1);
t.start();
}
public void stop(){
if(t!=null){
t.stop();
}
}
public static void main(String args[]){
TestClock frm =new TestClock();
 frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.pack();
frm.setVisible(true);
}
Lập trình Java Lập trình CSDL với JDBC
Trang 112
}
Kết quả của TestClock.java

File đính kèm:

  • pdfTài liệu học tập Lập trình Java cơ bản.pdf
Tài liệu liên quan