java components

81
Java components

Upload: gabriel-valdez

Post on 03-Jan-2016

47 views

Category:

Documents


0 download

DESCRIPTION

Java components. Nội dung. Chú thích Khối lệnh và câu lệnh Tập kí tự dùng trong Java Từ khóa và tên Kiểu dữ liệu Hằng Biến Chuyển đổi kiểu dữ liệu Định dạng nhập xuất Biểu thức và toán tử Các câu lệnh điều khiển. Chú thích (1). Chú thích 1 dòng: bắt đầu bằng dấu // - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Java components

Java components

Page 2: Java components

Nội dung Chú thích Khối lệnh và câu lệnh Tập kí tự dùng trong Java Từ khóa và tên Kiểu dữ liệu Hằng Biến Chuyển đổi kiểu dữ liệu Định dạng nhập xuất Biểu thức và toán tử Các câu lệnh điều khiển

Page 3: Java components

Chú thích (1)

Chú thích 1 dòng: bắt đầu bằng dấu //

Chú thích nhiều dòng: bắt đầu bằng /* kết thúc bằng */

Page 4: Java components

Chú thích (2)

Chú thích javadoc: dùng để tài liệu hóa các lớp public hay protected Bắt đầu bằng /** Kết thúc bằng */

Page 5: Java components

Chú thích (3)

Bắt đầu

Kết thúc

Mục đích

/* */ Đoạn code bị giới hạn là phần ghi chú

// Ghi chú trên 1 dòng, trình biên dịch bỏ qua từ // đến cuối dòng

/** */ Ghi chú dành cho javadoc, trình biên dịch sẽ bỏ qua

Page 6: Java components

Câu lệnh & khối lệnh (1)

Một câu lệnh trong java sẽ được kết thúc bằng dấu chấm phẩy (;) Ví dụ:

private void timgiatriXmax(Integer begin, Integer i, List<Point> list) {double xmax = list.get(begin).getX();int index = begin;

for (int j = begin + 1; j <= i; j++) {if (list.get(j).getX() >= xmax) {xmax = list.get(j).getX();index = j;

}}this.listdiemchot.add(list.get(index));

}

Page 7: Java components

Câu lệnh & khối lệnh (2)

Các câu lệnh đơn có thể nối lại với nhau tạo thành các khối lệnh thuộc 1 lớp.

Bộ lệnh của Java không giới hạn trong cặp dấu ngoặc { và }

Khối lệnh có thể được đặt trong khối lệnh khác.

public class Student {private String name;private GregorianCalendar bithDay;private double mark;

}

Page 8: Java components

Tập kí tự dùng trong Java

Java được xây dựng dựa trên bộ kí tự sau: 26 chữ cái hoa: A…Z, 26 chữ cái thường: a…z 10 chữ số: 0…9 Các kí hiệu toán học: +, -, *, /, %, =, ()… Dấu nối: _ Các kí hiệu đặc biệt khác: :, :, {}, [], ?, \, &, !, #, $,

… Bên cạnh đó Java còn dùng bộ kí tự Unicode

Page 9: Java components

Tên

Qui tắc đặt tên: Tên có thể được bắt đầu bằng một kí tự, hoặc

dấu: $, _ Tên không thể bắt đầu bằng 1 số Không được trùng với từ khóa Tên không được chứa dấu cách Java phân biệt chữ hoa và chữ thường

Page 10: Java components

Từ khóa (1)

là những từ có ý nghĩa xác định Thường dùng để khai báo các kiểu dữ liệu,

viết các toán tử và câu lệnh Chú ý:

Không được dùng từ khóa để đặt tên cho hằng, biến, mảng, hàm, …

Từ khóa phải viết bằng chữ thường

Page 11: Java components

Từ khóa (2)

Từ khóa Ý nghĩaabstract Dùng để khai báo lớp, hàm trừu tượng.

boolean Kiểu dữ liệu logic

break Được sử dụng để kết thúc vòng lặp hoặc cấu trúc switch.

byte Kiểu dữ liệu số nguyên.

case Được sử dụng trong lệnh switch.

char Kiểu dữ liệu kí tự.

catch Được sử dụng trong xử lý ngoại lệ.

class Dùng để khai báo lớp.

const Khai báo biến theo sau là biến hằng

continue Được dùng trong vòng lặp để bắt đầu một vòng lặp mới.

default Được sử dụng trong lệnh switch.

do Được sử dụng trong vòng lặp điều kiện sau.

Page 12: Java components

Từ khóa (3)

Từ khóa Ý nghĩadouble Kiểu dữ liệu số thực.

else Khả năng lựa chọn thứ 2 trong câu lệnh If.

extends Chỉ rằng một lớp được kế thừa từ một lớp khác.

false Giá trị logic.

final Dùng để khai báo hằng số, phương thức không thể ghi đè, hoặc lớp không thể kế thừa.

finally Phần cuối của khối xử lý ngoại lệ.

float Kiểu số thực.

for Câu lệnh lặp.

goto Nhảy tới dòng lệnh bất kì đã được đặt nhãn

if Câu lệnh lựa chọn.

implements Chỉ rằng một lớp triển khai từ một giao diện.

import Khai báo sử dụng thư viện.

Page 13: Java components

Từ khóa (3)

Từ khóa Ý nghĩainstance of Kiểm tra một đối tượng có phải là một thể hiện của một lớp hay không.

int Kiểu số nguyên.

interface sử dụng để khai báo giao diện.

long Kiểu số nguyên.

native Khai báo phương thức được viết bằng ngôn ngữ C++.

new Tạo một đối tượng mới.

null Một đối tượng không tồn tại.

package Dùng để khai báo một gói.

private Đặc tả truy xuất.

public Đặc tả truy xuất.

protected Đặc tả truy xuất.

return Trả giá trị về

short Kiểu số nguyên.

Page 14: Java components

Từ khóa (4)

Từ khóa Ý nghĩastatic Dùng để khai báo biến, thuộc tính tĩnh.

super Truy xuất đến lớp cha.

switch Lệnh lựa chọn.

synchronized Một phương thức độc quyền truy xuất trên một đối tượng.

this Ám chỉ chính lớp đó.

throw Ném ra ngoại lệ.

throws Khai báo phương thức ném ra ngoại lệ.

true Giá trị logic.

try Sử dụng để bắt ngoại lệ.

void Dùng để khai báo một phương thức không trả về giá trị.

while Dùng trong cấu trúc lặp.

Page 15: Java components

Kiểu dữ liệu

Mỗi biến phải có 1 kiểu dữ liệu Kiểu dữ liệu xác định miền giá trị cho biến

Page 16: Java components

Kiểu dữ liệu nguyên thủy

là các dữ liệu được xác định trong ngôn ngữ

Page 17: Java components

Kiểu dữ liệu dẫn xuất

Tham chiếu tới một giá trị hay là tập hợp các giá trị mà biến khai báo.

Các kiểu dữ liệu dẫn xuất:

Page 18: Java components

Giá trị mặc định

Lỗi hay gặp phải khi lập trình là sử dụng biến chưa khởi tạo

Java hỗ trợ khởi tạo các giá trị mặc định cho các biến.

Page 19: Java components

Hằng

Từ khóa final chỉ dẫn đến 1 biến không thể thay đổi giá trị.

Các hàm và lớp cũng có thể được khai báo final Hàm final không thể viết chồng Lớp final không thể là lớp con

final int MAX = 10;

Page 20: Java components

Biến (1)

Biến là một vị trí trong bộ nhớ máy tính mà ở đó giá trị được lưu trữ và có thể được truy xuất sau đó.

Sử dụng để lưu trữ dữ liệu có thể thay đổi trong quá trình thực thi

Page 21: Java components

Biến (2)

Tên biến phải là duy nhất trong 1 phạm vi Các biến cần được khai báo trước khi sử

dụng Khai báo biến bao gồm đặc tả tên biến, và

đặc tả kiểu dữ liệu mà biến đại diện. Cú pháp:

Type variable;HayType variable = value;

Page 22: Java components

Biến (3)

Kiểu biến: Kiểu dữ liệu nguyên thủy Tên của 1 lớp Một mảng

Để khai báo 1 biến mới ta phải khai báo 1 lớp mới, sau đó kiểu biến mới được khai báo kiểu là lớp mới đó.

Page 23: Java components

Biến (4)

Các loại biến trong Java: Biến đối tượng Biến lớp Biến cục bộ

Page 24: Java components

Biến đối tượng

Dùng để định nghĩa thuộc tính, trạng thái cho 1 đối tượng

Có thể là biến toàn cục của 1 đối tượng Khai báo

Type variable;

Page 25: Java components

Biến lớp

Tương tự biến đối tượng nhưng giá trị nằm trong chính lớp đó

Ảnh hưởng toàn cục đến 1 lớp và tất cả các đối tượng trong lớp đó

Thích hợp dùng để trao đổi thông tin giữa các đối tượng khác nhau trong cùng một lớp hau theo dõi trạng thái toàn cục của đối tượng

Cú phápstatic Type variable;

Page 26: Java components

Biến cục bộ

Được khai báo và sử dụng trong thân phương thức

Bắt buộc phải gán giá trị trước khi sử dụng Java không có biến toàn cục, biến đối tượng

hoặc biến lớp được dùng để truyêng thông tin toàn cục

Page 27: Java components

Phạm vi của biến

Biến toàn cục: có thể truy cập bất cứ đâu trong toàn bộ chương trình

Biến cục bộ tồn tại giới hạn và quan hệ chỉ trong phần nhỏ của mã

public class MyClass {int i; // member variable

int first() {int j; // local variable// i va j deu co the truy cap tu dayreturn 1;

}

int second() {int j; // local variable// i va j deu co the truy cap tu dayreturn 2;

}}

Page 28: Java components

Chuyển đổi kiểu dữ liệu (1)

Dùng để chuyển từ một kiểu dữ liệu này sang kiểu dữ liệu khác

Có 2 dạng ép kiểu: Ép kiểu ngầm định Ép kiểu tường minh

Page 29: Java components

Chuyển đổi kiểu dữ liệu (2)

Page 30: Java components

Ép kiểu ngầm định

Khi một kiểu dữ liệu được gán cho 1 biến của 1 kiểu khác tự động chuyển kiểu

Điều kiện: Hai kiểu phải tương thích Kiểu đích phải lớn hơn kiểu nguồn

Page 31: Java components

Ép kiểu tường minh

Khi cần chuyển sang kiểu có độ chính xác cao hơn

Page 32: Java components

Chuyển đổi kiểu dữ liệu

Có 3 dạng chuyển đổi kiểu dữ liệu Chuyển đổi cho các kiểu dữ liệu cơ bản

Chuyển đổi kiểu cho các đối tượng: các lớp chuyển đổi phải kế thừa nhau

Chuyển đổi cho các kiểu dữ liệu cơ bản sang đối tượng và ngược lại: Chỉ chuyển đổi giữa các đối tượng có sẵn trong gói

java.lang tương ứng với các dữ liệu nguyên thủy

(New Type) value;

(New Class) object;

int intObject = new Integer(32);

Page 33: Java components

Khởi tạo biến

Integersbyte largestByte = Byte.MAX_VALUE;short largestShort = Short.MAX_VALUE;int largestInteger = Integer.MAX_VALUE;long largestLong = Long.MAX_VALUE;

real numbersfloat largestFloat = Float.MAX_VALUE;double largestDouble = Double.MAX_VALUE;

other primitive typeschar aChar = 'S';boolean aBoolean = true;

Page 34: Java components

Định dạng nhập xuất (1)

Mã định dạng: bất kì một đầu ra được hiển thị trên màn hình cần phải được định dạng

Page 35: Java components

Định dạng nhập xuất (2)

Hàm printf() trong Java được sử dụng để định dạng kiểu dữ liệu ở console

Ví dụ:public static void main(String[] args) {

int i = 10;System.out.printf("gia tri cua i la %d", i);

}

Page 36: Java components

Lớp Scanner

Cho phép người dùng đọc giá trị của một vài kiểu

Một số phương thức của Scanner với System.in là đối tượng dòng đầu vào:

public static void main(String[] args) {Scanner scaner = new Scanner(System.in);

} Đối tượng InputStream

Page 37: Java components

Dãy Escape

Page 38: Java components

Các phương thức hữu dụng trong Character.class

Useful Methods in the Character Class

Method Description

boolean isLetter(char ch) boolean isDigit(char ch)

Determines whether the specified char value is a letter or a digit, respectively.

boolean isWhiteSpace(char ch) Determines whether the specified char value is white space according to the Java platform.

boolean isUpperCase(char ch) boolean isLowerCase(char ch)

Determines whether the specified char value is upper- or lowercase, respectively.

char toUpperCase(char ch) char toLowerCase(char ch)

Returns the upper- or lowercase form of the specified char value.

toString(char ch) Returns a String object representing the specified character value.

int digit(char ch, int radix) Returns the numeric value of the character in the specified radix.

Page 39: Java components

Các toán tử số học

Page 40: Java components

Phép toán 1 ngôi

Page 41: Java components

Toán tử quan hệ và bằng nhau

kết quả trả về luôn là một giá trị boolean

Page 42: Java components

Các phép toán điều kiện

Page 43: Java components

Các toán tử làm việc với bit

Page 44: Java components

Toán tử luận lý

Các biểu thức có kiểu trả về là boolean, có thể kết hợp lại với nhau bằng các toán tử luận lý như: AND (& hoặc &&) OR (| hoặc ||) XOR (^) NOT (!)

Page 45: Java components

Toán tử gán

Cú pháp:

Ví dụ:

a +=4;

tương đương với

a = a+4;

Variable operator = value;Tương ứng vớiVariable = Variable operator value;

Page 46: Java components

Một số toán tử khác (1)

Page 47: Java components

Một số toán tử khác (2)

Page 48: Java components

Biểu thức & toán tử

Phép toán trên kiểu chuỗi String: Java dùng toán tử + để nối hai chuỗi lại với nhau

Độ ưu tiên của các toán tử

System.out.println(name + " is a " + color);

Page 49: Java components

Tính kết hợp của các phép toán

Page 50: Java components

Biểu thức

Là sự kết nối các biến, các từ khóa hay các kí hiệu để trả về 1 giá trị của 1 kiểu nào đó.

Giá trị của các biểu thức có thể là số, chuỗi hoặc kiểu dữ liệu khác

Các loại biểu thức: Biểu thức logic Biểu thức số học Biểu thức gán

Page 51: Java components

Các câu lệnh điều khiển

Kiểu Từ khóa

Decision making if-else, switch-case

Looping for, while, do-while

Exception handling try-catch-finally, throw

Branching Break, continue, label:, return

Page 52: Java components

Các câu lệnh điều khiển quyết định

Page 53: Java components

Cấu trúc rẽ nhánh if (1)

condition

falsefalse

statement

truetrue

Cú pháp:if (expression) { statement(s) }

Page 54: Java components

Cấu trúc rẽ nhánh if (2)

Page 55: Java components

Cấu trúc rẽ nhánh if (3)

Ví dụ: public static void main(String[] args) {

int testScore = 76;char grade;if (testScore >= 90) {

grade = 'A';}if (testScore >= 80) {

grade = 'B';}if (testScore >= 70) {

grade = 'C';}if (testScore >= 60) {

grade = 'D';}if (testScore >= 50) {

grade = 'E';} else {

grade = 'F';}System.out.println("Grade = "+ grade);

}

???

Page 56: Java components

Cấu trúc rẽ nhánh phức: switch (1)

Page 57: Java components

Cấu trúc rẽ nhánh phức: switch (2)

Ví dụpublic static void main(String[] args) {

int month = 2;int numdays = 0;switch (month) {

case 2:numdays = 28;break;

case 1:case 3:case 5:case 7:case 8:case 10:case 12:

numdays = 31;break;

default: numdays = 30;

}System.out.println("num of day = "+ numdays);

}

Page 58: Java components

So sánh giữa if và switch

Demo

Page 59: Java components

Các câu lệnh điều khiển lặp

Page 60: Java components

Vòng lặp for (1)

Page 61: Java components

Vòng lặp for (2)

Ví dụ:

public static void main(String[] args) {

for(int i=1; i<11; i++){ System.out.println("Count is: " + i);

} }

for ( ; ; ) {

//vòng lặp vô tận

}

Page 62: Java components

For each

Cú pháp:for (iterable_type iterable_element : iterable) { Statements}

public static void main(String[] args) {int[] aray = { 32, 45, 789, 0, 3 };for (int element : aray) {

System.out.print(element+" ");}

}

Page 63: Java components

Vòng lặp while (1)

Page 64: Java components

Vòng lặp while (2)

public static void main(String[] args){ int count = 1; while (count < 11) { System.out.println("Count is: " + count); count++; } }

Ví dụ:

while (true){ // vòng lặp vô tận}

Page 65: Java components

Vòng lặp do…while (1)

Thực thi ít nhất 1 lần

Page 66: Java components

Vòng lặp do…while (2)

Ví dụ:

public static void main(String[] args) { int count = 1; do { System.out.println("Count is: " + count); count++; } while (count <= 11);}

Page 67: Java components

So sánh while và for

Page 68: Java components

Câu lệnh rẽ nhánh

Các loại câu lệnh rẽ nhánh thường gặp: break continue return

continue và break có thể dùng cùng với label hoặc không label: dùng để chỉ định chỗ cho các lệnh

continue và break

Page 69: Java components

Lệnh break (1)

Lệnh break có 2 dạng: unlabeled form: dùng để thoát ra khỏi còng lặp

như switch, for, while, or do-while labeled form: di chuyển tới vùng đặt label

public static void main(String[] args) {int out, in = 0;for (out = 0; out < 10; out++) {

for (in = 0; in < 20; in++) {if (in > 10)

break;}System.out.println("inside the outer loop: out = " + out + ", in = " +

in);}System.out.println("end of the outer loop: out = " + out + ", in = “ + in);

}

Unlabled form

Page 70: Java components

Lệnh break (2)

public static void main(String[] args) {int out, in = 0;outer: for (out = 0; out < 10; out++) {

for (in = 0; in < 20; in++) {if (in > 10)

break outer;}System.out.println("inside the outer loop: out = " + out + ", in = " + in);

}System.out.println("end of the outer loop: out = " + out + ", in = “ + in);

}

Labeled form

Page 71: Java components

Lệnh continue

Dùng để nhảy qua(skip) vòng lặp (for, while, do-while,…)

Lệnh continue cũng có 2 dạng: Unlabeled form Labeled form

Page 72: Java components

Unlabeled form

public static void main(String[] args) {StringBuffer searchMe = new StringBuffer("peter piper picked a peck of pickled peppers");int max = searchMe.length();int numPs = 0;System.out.println(searchMe);for (int i = 0; i < max; i++) {

// interested only in p'sif (searchMe.charAt(i) != 'p')

continue;

// process p'snumPs++;searchMe.setCharAt(i, 'P');

}System.out.println("Found " + numPs + " p's in the string.");System.out.println(searchMe);

}

Unlabeled form

Page 73: Java components

Labeled form

public static void main(String[] args) {// finds a substring(substring) in given string(serchMe)String searchMe = "Look for a substring in me";String substring = "sub";boolean foundIt = false;int max = searchMe.length() - substring.length();test: for (int i = 0; i <= max; i++) {

int n = substring.length(), j = i, k = 0;while (n-- != 0) {

if (searchMe.charAt(j++) != substring.charAt(k++))continue test;

}foundIt = true;break test;

}System.out.println(foundIt ? "Found it" : "Didn't find it");

}

Labeled form

Page 74: Java components

Lệnh return (1)

Lệnh return có 2 dạng: Trả về 1 giá trị:

return ++count; Giá trị trả về phải phù hợp với kiểu trả về của hàm

Không trả vè giá trị nào cả: return; Kiểu trả về của hàm phải là void

Page 75: Java components

Lệnh return (2)

public boolean seachFirst() {int[] array = { 10, 5, 9, 3, 8, 5, 8, 5 };int matchValue = 8;for (int i = 0; i < array.length; i++) {

if (matchValue == array[i])return true;

}return false;}

public void displayDayOfWeek(int day) {if (day == 1) {

System.out.println("Sunday");return;

}if (day == 2) {

System.out.println("Monday");return;

}if (day == 3) {

System.out.println("Tueday");return;

}}Trả về giá trị boolean

Không trả về giá trị

Page 76: Java components

Try-catch-finally (1)

Sử dụng khối try, catch, finally để bắt giữ các ngoại lệ

Khối lệnh có thể ném ngoại lệ

Khối lệnh sẽ thực hiện nếu ngoại lệ xảy ra

Khối lệnh sẽ thực hiện bất chấp ngoại lệ xảy ra hay không

Page 77: Java components

Try-catch-finally (2)

public static void method(String s) {try {

System.out.println(Integer.parseInt(s));} catch (NumberFormatException e) {

System.out.println("wrong fomat");}

}

Page 78: Java components

Bài tập

Mô phỏng các phương thức trong lớp String với mỗi String là một mảng các kí tự (char[]) (MyString)

Mô phỏng StringTokenizer và các phép toán trong đó.

Thực hiện lớp MyDate để lưu trữ ngày tháng năm với 1 số int duy nhất

Page 79: Java components

Bài tập

Class MyString{private char[] content;public MyString(char[] con);public MyString(String s);public int indexOf(char c);public int lastIndexOf(char c);

public int indexOf(String sub);public int lastIndexOf(String sub);public void insert(int index, String sub);public void replace(String old_s, String new_s);public void replaceAll(String old_s, String new_s);

}

Page 80: Java components

Bài tập

public class StringAnalyzer {private String origin;private String delimiter;public StringAnalyzer(String origin, String delimiter) {

. . . . . . }public boolean hasMoreElement(){

. . . . . . } public String getNextElement(){

. . . . . .}

}

Page 81: Java components

Sumary