Bài giảng Công nghệ Java - Chương 2: Công nghệ Java - Trần Quang Diệu

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 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); }

ppt84 trang | Chia sẻ: thucuc2301 | Lượt xem: 773 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Công nghệ Java - Chương 2: Công nghệ Java - Trần Quang Diệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
11/27/20201CÔNG NGHỆ JAVA CH2. CÁC THÀNH PHẦN CƠ BẢN11/27/20202Nội dungChú thíchKhối lệnh và câu lệnhTập kí tự dùng trong JavaTừ khóa và tênKiểu dữ liệuHằngBiếnChuyển đổi kiểu dữ liệuĐịnh dạng nhập xuấtBiểu thức và toán tửCác câu lệnh điều khiển11/27/20203Chú 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 */11/27/20204Chú thích (2)Chú thích javadoc: dùng để tài liệu hóa các lớp public hay protectedBắt đầu bằng /**Kết thúc bằng */11/27/20205Chú thích (3)Bắt đầuKết thúcMụ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ỏ qua11/27/20206Câ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));}11/27/20207Câ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;}11/27/20208TênQui 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óaTên không được chứa dấu cáchJava phân biệt chữ hoa và chữ thường11/27/20209Tập kí tự dùng trong JavaJava được xây dựng dựa trên bộ kí tự sau:26 chữ cái hoa: AZ, 26 chữ cái thường: az10 chữ số: 09Cá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ự Unicode11/27/202010Từ khóa (1)là những từ có ý nghĩa xác địnhThường dùng để khai báo các kiểu dữ liệu, viết các toán tử và câu lệnhChú ý: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ường11/27/202011Từ khóa (2)Từ khóaÝ nghĩaabstractDùng để khai báo lớp, hàm trừu tượng.booleanKiểu dữ liệu logicbreakĐược sử dụng để kết thúc vòng lặp hoặc cấu trúc switch. byteKiểu dữ liệu số nguyên.caseĐược sử dụng trong lệnh switch. charKiểu dữ liệu kí tự. catchĐược sử dụng trong xử lý ngoại lệ. classDùng để khai báo lớp. constKhai báo biến theo sau là biến hằngcontinueĐượ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.11/27/202012Từ khóa (3)Từ khóaÝ nghĩadoubleKiểu dữ liệu số thực. elseKhả năng lựa chọn thứ 2 trong câu lệnh If. extendsChỉ rằng một lớp được kế thừa từ một lớp khác. falseGiá trị logic.finalDù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.finallyPhần cuối của khối xử lý ngoại lệ. floatKiểu số thực. forCâu lệnh lặp. gotoNhảy tới dòng lệnh bất kì đã được đặt nhãnifCâu lệnh lựa chọn. implementsChỉ rằng một lớp triển khai từ một giao diện. importKhai báo sử dụng thư viện. 11/27/202013Từ khóa (3)Từ khóaÝ nghĩainstanceofKiể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. intKiểu số nguyên.interfacesử dụng để khai báo giao diện.longKiểu số nguyên.nativeKhai báo phương thức được viết bằng ngôn ngữ C++. newTạo một đối tượng mới. nullMột đối tượng không tồn tại. packageDù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. returnTrả giá trị về shortKiểu số nguyên. 11/27/202014Từ khóa (4)Từ khóaÝ nghĩastaticDùng để khai báo biến, thuộc tính tĩnh. superTruy xuất đến lớp cha. switchLệnh lựa chọn. synchronizedMộ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 đó. throwNém ra ngoại lệ. throwsKhai báo phương thức ném ra ngoại lệ. trueGiá trị logic. trySử dụng để bắt ngoại lệ. voidDùng để khai báo một phương thức không trả về giá trị. whileDùng trong cấu trúc lặp. 11/27/202015Kiểu dữ liệuMỗi biến phải có 1 kiểu dữ liệuKiểu dữ liệu xác định miền giá trị cho biến11/27/202016Kiểu dữ liệu nguyên thủylà các dữ liệu được xác định trong ngôn ngữ11/27/202017Kiểu dữ liệu dẫn xuấtTham 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:11/27/202018Giá trị mặc địnhLỗi hay gặp phải khi lập trình là sử dụng biến chưa khởi tạoJava hỗ trợ khởi tạo các giá trị mặc định cho các biến.11/27/202019HằngTừ 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 finalHàm final không thể viết chồngLớp final không thể là lớp confinal int MAX = 10;11/27/202020Biế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 thi11/27/202021Biến (2)Tên biến phải là duy nhất trong 1 phạm viCác biến cần được khai báo trước khi sử dụngKhai 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;11/27/202022Biến (3)Kiểu biến:Kiểu dữ liệu nguyên thủyTên của 1 lớpMộ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 đó.11/27/202023Biến (4)Các loại biến trong Java:Biến đối tượngBiến lớpBiến cục bộ11/27/202024Biến đối tượngDùng để định nghĩa thuộc tính, trạng thái cho 1 đối tượngCó thể là biến toàn cục của 1 đối tượngKhai báoType variable;11/27/202025Biến lớpTươ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ượngCú phápstatic Type variable;11/27/202026Biến cục bộĐược khai báo và sử dụng trong thân phương thứcBắt buộc phải gán giá trị trước khi sử dụngJava không có biến toàn cục, biến đối tượng hoặc biến lớp được dùng để truyền thông tin toàn cục11/27/202027Phạm vi của biếnBiến toàn cục: có thể truy cập bất cứ đâu trong toàn bộ chương trìnhBiế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 variableint 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;}}11/27/202028Chuyể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ácCó 2 dạng ép kiểu:Ép kiểu ngầm địnhÉp kiểu tường minh11/27/202029Chuyển đổi kiểu dữ liệu (2)11/27/202030Ép kiểu ngầm địnhKhi 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íchKiểu đích phải lớn hơn kiểu nguồn11/27/202031Ép kiểu tường minhKhi cần chuyển sang kiểu có độ chính xác cao hơn11/27/202032Chuyển đổi kiểu dữ liệuCó 3 dạng chuyển đổi kiểu dữ liệuChuyển đổi cho các kiểu dữ liệu cơ bảnChuyển đổi kiểu cho các đối tượng: các lớp chuyển đổi phải kế thừa nhauChuyể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);11/27/202033Khởi tạo biếnIntegersbyte 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;11/27/202034Nhập xuất dữ liệuNhập xuất dữ liệu là tác vụ mức hệ thốngGói java.io chứa các lớp cho việc xuất nhập.Cần tham khảo gói này.Java cung cấp class System mô tả hệ thốngSystem.out là đối tượng xuất mặc định (màn hình)System.in là đối tượng nhập mặc định ( bàn phím)System.err là đối tượng xuất lỗi (màn hình) Methods xuất dữ liệu ra màn hình: System.out.print(Dữ liệu xuất); System.out.println(Dữ liệu xuất); Dữ liệu xuất có thể là : ký tự, số, chuỗi,11/27/202035Xuất dữ liệu (tt)11/27/202036Đị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ạng11/27/202037Đị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 ở consoleVí dụ:public static void main(String[] args) {int i = 10;System.out.printf("gia tri cua i la %d", i);}11/27/202038Lớp ScannerCho phép người dùng đọc giá trị của một vài kiểuMộ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 InputStream11/27/202039Dãy Escape11/27/202040Các phương thức hữu dụng trong Character.class11/27/202041Các toán tử số học11/27/202042Phép toán 1 ngôi11/27/202043Toán tử quan hệ và bằng nhaukết quả trả về luôn là một giá trị boolean11/27/202044Các phép toán điều kiện11/27/202045Các toán tử làm việc với bit11/27/202046Toá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 (!)11/27/202047Toán tử gánCú 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;11/27/202048Một số toán tử khác (1)11/27/202049Một số toán tử khác (2)11/27/202050Biể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);11/27/202051Tính kết hợp của các phép toán11/27/202052Biểu thứcLà 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ácCác loại biểu thức:Biểu thức logicBiểu thức số họcBiểu thức gán11/27/202053Các câu lệnh điều khiểnKiểuTừ khóaDecision makingif-else, switch-caseLoopingfor, while, do-whileException handlingtry-catch-finally, throwBranchingBreak, continue, label:, return11/27/202054Các câu lệnh điều khiển quyết định11/27/202055Cấu trúc rẽ nhánh if (1)conditionfalsestatementtrue Cú pháp:if (expression) { statement(s) } 11/27/202056Cấu trúc rẽ nhánh if (2)11/27/202057Cấ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);}???11/27/202058Cấu trúc rẽ nhánh phức: switch (1)11/27/202059Cấ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);}11/27/202060So sánh giữa if và switchDemo11/27/202061Các câu lệnh điều khiển lặp11/27/202062Vòng lặp for (1)11/27/202063Vò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 form11/27/202072Lệ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 form11/27/202073Lệnh continueDùng để nhảy qua(skip) vòng lặp (for, while, do-while,)Lệnh continue cũng có 2 dạng:Unlabeled formLabeled form11/27/202074Unlabeled formpublic 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 > 3 g) 9 >3) ? 5 : -3Trong java có phát biểu goto hay không ?Mảng là gì ? Mảng in-line là gì ? int a[] = new int { 1,2,3,9,0}; đúng hay sai?System.out.println( 12 & 9); sẽ xuất trị bao nhiêu?Phân tích dòng code: if (5&7>0 && 5|3) System.out(“Hello”) ;int m= System.in.read(); nếu gõ vào phím ‘C’, trị biến m là bao nhiêu?11/27/202081Bài tậpViết các chương trình sau:Xuất bảng cửu chương từ 2 đến 9.Xuất trị bình phương, lập phương từ 1 đến 10.Tạo 1 mảng số int dạng in-line 10 phần tử, xuất mảng này tăng dần.Nhập 1 mảng int các số mang trị là mã của các ký tự nhập từ bàn phím. Xuất mảng này dạng chữ rồi xuất mã của chúng.Xuất 100 số Fibonacci đầu tiên. Dãy Fibonacci : 1,1,2,3,5,8, 2 số đầu là 1, các số sau bằng tổng 2 số trước nó.11/27/202082Bài tậpMô 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ất11/27/202083Bài tậpClass 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);}11/27/202084Bài tậppublic class StringAnalyzer {private String origin;private String delimiter;public StringAnalyzer(String origin, String delimiter) { . . . . . . }public boolean hasMoreElement(){ . . . . . . } public String getNextElement(){ . . . . . .}}

Các file đính kèm theo tài liệu này:

  • pptsession02_cac_thanh_phan_co_ban_9069_2001623.ppt
Tài liệu liên quan