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 (!)
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ử
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
84 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 486 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Công nghệ java - Chương 2: Các thành phần cơ bản - Trần Quang Diệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
9/27/20211CÔNG NGHỆ JAVACH2. CÁC THÀNH PHẦN CƠ BẢN9/27/20212Nộ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ển9/27/20213Chú 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 */9/27/20214Chú 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 */9/27/20215Chú 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ỏ qua9/27/20216Câ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));}9/27/20217Câ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;}9/27/20218Tê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ường9/27/20219Tậ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ự Unicode9/27/202110Từ 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ường9/27/202111Từ 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.9/27/202112Từ 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. 9/27/202113Từ 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. 9/27/202114Từ 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. 9/27/202115Kiể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ến9/27/202116Kiểu dữ liệu nguyên thủylà các dữ liệu được xác định trong ngôn ngữ9/27/202117Kiể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:9/27/202118Giá 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.9/27/202119Hằ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;9/27/202120Biế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 thi9/27/202121Biế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;9/27/202122Biế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 đó.9/27/202123Biến (4)Các loại biến trong Java:Biến đối tượngBiến lớpBiến cục bộ9/27/202124Biế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;9/27/202125Biế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;9/27/202126Biế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ục9/27/202127Phạ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;}}9/27/202128Chuyể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 minh9/27/202129Chuyển đổi kiểu dữ liệu (2)9/27/202130É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ồn9/27/202131Ép kiểu tường minhKhi cần chuyển sang kiểu có độ chính xác cao hơn9/27/202132Chuyể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);9/27/202133Khở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;9/27/202134Nhậ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,9/27/202135Xuất dữ liệu (tt)9/27/202136Đị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ạng9/27/202137Đị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);}9/27/202138Lớ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 InputStream9/27/202139Dãy Escape9/27/202140Các phương thức hữu dụng trong Character.class9/27/202141Các toán tử số học9/27/202142Phép toán 1 ngôi9/27/202143Toán tử quan hệ và bằng nhaukết quả trả về luôn là một giá trị boolean9/27/202144Các phép toán điều kiện9/27/202145Các toán tử làm việc với bit9/27/202146Toá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 (!)9/27/202147Toá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;9/27/202148Một số toán tử khác (1)9/27/202149Một số toán tử khác (2)9/27/202150Biể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);9/27/202151Tính kết hợp của các phép toán9/27/202152Biể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án9/27/202153Cá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:, return9/27/202154Các câu lệnh điều khiển quyết định9/27/202155Cấu trúc rẽ nhánh if (1)conditionfalsestatementtrue Cú pháp:if (expression) { statement(s) } 9/27/202156Cấu trúc rẽ nhánh if (2)9/27/202157Cấ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);}???9/27/202158Cấu trúc rẽ nhánh phức: switch (1)9/27/202159Cấ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);}9/27/202160So sánh giữa if và switchDemo9/27/202161Các câu lệnh điều khiển lặp9/27/202162Vòng lặp for (1)9/27/202163Vò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 form9/27/202172Lệ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 form9/27/202173Lệ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 form9/27/202174Unlabeled 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?9/27/202181Bà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ó.9/27/202182Bà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ất9/27/202183Bà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);}9/27/202184Bà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:
- bai_giang_cong_nghe_java_chuong_2_cac_thanh_phan_co_ban_tran.ppt