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
81 trang |
Chia sẻ: diunt88 | Lượt xem: 9597 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Lập trình Java toàn tập_P2: Các thành phần trong Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 // Chú thích nhiều dòng: bắt đầu bằng /* kết thúc bằng */ 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 */ Chú thích (3) 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 list) { double xmax = list.get(begin).getX(); int index = begin; for (int j = begin + 1; j = xmax) { xmax = list.get(j).getX(); index = j; } } this.listdiemchot.add(list.get(index)); } 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; } 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 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 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 Từ khóa (2) Từ khóa (3) Từ khóa (3) Từ khóa (4) 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 Kiểu dữ liệu nguyên thủy là các dữ liệu được xác định trong ngôn ngữ 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: 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. 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; 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 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; Hay Type variable = value; 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 đó. 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ộ 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; 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áp static Type variable; 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 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 day return 1; } int second() { int j; // local variable // i va j deu co the truy cap tu day return 2; } } 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 Chuyển đổi kiểu dữ liệu (2) É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 Ép kiểu tường minh Khi cần chuyển sang kiểu có độ chính xác cao hơn 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); Khởi tạo biến Integers byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; other primitive types char aChar = 'S'; boolean aBoolean = true; Đị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 Đị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); } 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 Dãy Escape Các phương thức hữu dụng trong Character.class Các toán tử số học Phép toán 1 ngôi Toán tử quan hệ và bằng nhau kết quả trả về luôn là một giá trị boolean Các phép toán điều kiện Các toán tử làm việc với bit 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 (!) 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ới Variable = Variable operator value; Một số toán tử khác (1) Một số toán tử khác (2) 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); Tính kết hợp của các phép toán 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 Các câu lệnh điều khiển Các câu lệnh điều khiển quyết định Cấu trúc rẽ nhánh if (1) Cú pháp: if (expression) { statement(s) } Cấu trúc rẽ nhánh if (2) 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); } ??? Cấu trúc rẽ nhánh phức: switch (1) 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); } So sánh giữa if và switch Demo Các câu lệnh điều khiển lặp Vòng lặp for (1) Vòng lặp for (2) Ví dụ: public static void main(String[] args) { for(int i=1; i 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 Lệnh break (2) public static void main(String[] args) { int out, in = 0; outer: for (out = 0; out 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 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 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's if (searchMe.charAt(i) != 'p') continue; // process p's numPs++; searchMe.setCharAt(i, 'P'); } System.out.println("Found " + numPs + " p's in the string."); System.out.println(searchMe); } Unlabeled form 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 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 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ị 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 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"); } } 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 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); } 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(){ . . . . . . } } Sumary