chương 3 core java

56
Chương 3 Core Java

Upload: mckile

Post on 09-Jan-2016

54 views

Category:

Documents


2 download

DESCRIPTION

Chương 3 Core Java. Biến ( Variable ). Ví dụ: double salary; int vacationDays; long earthPopulation; boolean done; Form: Variable_type+variable_name+”;”. Qui tắc đặt tên biến. Bắt đầu bằng chữ cái Phải là một chuỗi liên tiếp các chữ, số,kí hiệu Các chữ, số và kí hiệu: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chương 3 Core Java

Chương 3 Core Java

Page 2: Chương 3 Core Java

Biến ( Variable )

Ví dụ:

double salary;

int vacationDays;

long earthPopulation;

boolean done; Form:

Variable_type+variable_name+”;”

Page 3: Chương 3 Core Java

Qui tắc đặt tên biến

Bắt đầu bằng chữ cái Phải là một chuỗi liên tiếp các chữ, số,kí hiệu Các chữ, số và kí hiệu:

- Chữ:‘A’-‘Z’, ‘a’-‘z’,’-‘ ,và các chữ cái Unicode

- Số : ’0’-‘9’ Không sử dụng các kí tự: ‘@’, ‘+’,…

Page 4: Chương 3 Core Java

Qui tắc đặt tên biến

Tên biến có thể có độ dài vô hạn Có thể đặt nhiều biến trên cùng một dòng Tuy nhiên nên khai báo tường minh:

int i, j , k;

-> int i;

int j;

int k;

Page 5: Chương 3 Core Java

Khởi tạo giá trị cho biến

Chỉ sử dụng các biến đã được khởi tạo Thao tác với các biến chưa được khởi tạo sẽ

sinh lỗi

int vacationDays;System.out.println(vacationDays);

// ERROR--variable not initialized Có thể khởi tạo giá trị ngay sau khi khai báo

int vacationDays = 12;

Page 6: Chương 3 Core Java

Khởi tạo biến

Có thể khai báo và khởi tạo biến bất cứ đâu trong chương trình

double salary = 65000.0;

System.out.println(salary);

int vacationDays = 12;

// ok to declare a variable here Nên khai báo và khởi tạo ở đầu chương trình

Page 7: Chương 3 Core Java

Hằng ( Constant)

Khi khai báo và khởi tạo có thêm “final”

final double num = 12.5; Hằng được khai báo một lần Hằng được sử dụng trong toàn bộ các

phương thức của lớp Khai báo hằng để sử dụng ở các lớp cùng

gói

Public static final double num = 12.5;

Page 8: Chương 3 Core Java

Input and Output

Để đọc dữ liệu vào đơn giản nhất chúng ta sử dụng lớp Scanner

Input : Khai báo Input Scanner in = new Scanner(System.in);

Chú ý: khai báo import java.util.*

Page 9: Chương 3 Core Java

Reading Input

Chúng ta có câu lệnh vào ra chuẩn như: System.out.println

Để đọc được input từ consle chúng ta sử dụng lớp Scanner

Để sử dụng các phương thức trong lớp Scanner ta phải tạo ra 1 đối tượng Scanner Scanner in = new Scanner(System.in);

Page 10: Chương 3 Core Java

Chúng ta có các phương thức khác nhau của lớp Scanner

Vd: phương thức nextLine sẽ đọc 1 dòng kí tự khi nhập vào(đọc chuỗi) System.out.print("What is your name? "); String name = in.nextLine();

name sẽ được gán string của dòng nhập vào

Page 11: Chương 3 Core Java

Với phương thức nextLine chúng ta bắt cả các ký tự trắng vào

Nếu muốn không bắt khoảng trắng ta dùng phương thức next String firstName = in.next();

Tức là firstName chỉ chứa 1 từ

Page 12: Chương 3 Core Java

Để đọc vào một số kiểu Integer chúng ta sử dụng phương thức nextInt System.out.print("How old are you? "); int age = in.nextInt();

age nhận giá trị integer

Page 13: Chương 3 Core Java

Để sử dụng các phương thức từ lớp Scanner chúng ta phải import gói java.util

Ví dụ 1 chương trình test Input Ngoài việc sử dụng phương thức Scanner để

đọc dữ liệu chúng ta cũng có thể dùng các lớp khác như Reader, BufferReader được mô tả chi tiết trong gói java.io

Page 14: Chương 3 Core Java

import java.util.*; public class inputTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("What your name:"); String name = in.nextLine(); System.out.print("How old are you?:"); int age = in.nextInt(); System.out.print("Hello,"+ name +".Next year you'll be "+

(age + 1)); } }

Page 15: Chương 3 Core Java

Chương trình thực hiện sẽ cho ra kết quả What your name:Minh How old are you?:22 Hello,Minh.Next year you'll be 23

Page 16: Chương 3 Core Java

Nếu ta sử dụng phương thức hộp thoại thì nó sẽ hiện ra như thế này

Page 17: Chương 3 Core Java

Để sử dụng chúng ta phải import gói javax.swing

VD chương trình trên ta sẽ thay bằng cách sử dụng gói này

Page 18: Chương 3 Core Java

import javax.swing.*; public class inputTest { public static void main(String[] args) { String name = JOptionPane.showInputDialog("What is

your name?"); String input = JOptionPane.showInputDialog("How old

are you?"); int age = Integer.parseInt(input); System.out.println("Hello, " + name + ". Next year, you'll

be " + (age + 1)); System.exit(0); } }

Page 19: Chương 3 Core Java

Các phương thức của gói java.util.Scanner Scanner(InputStream in) String nextLine()

Đọc dòng tiếp theo vào String next()

Đọc từ tiếp theo vào

Page 20: Chương 3 Core Java

int nextInt() double nextDouble()

Đọc và chuyển các ký tự sang kiểu Int và float boolean hasNext()

Kiểm tra xem từ đó đã có trong dữ liệu vào chưa

Page 21: Chương 3 Core Java

boolean hasNextInt() boolean hasNextDouble()

Hàm này kiểm tra xem chuỗi ký tự nhập vào tiếp theo có phải là kiểu Int và float không

Page 22: Chương 3 Core Java

Các phương thức của gói javax.swing.JOptionPane static String showInputDialog(Object message)

Hiện ra bảng hộp thoại cho chúng ta nhập vào

Page 23: Chương 3 Core Java

Chúng ta cần in số x ra thì sẽ sử dụng System.out.print(x)

Vd: double x = 10000.0 / 3.0; System.out.print(x);

Sẽ in ra kết quả là 3333.3333333333335

Page 24: Chương 3 Core Java

Khi chúng ta sử dụng System.out.printf("%8.2f", x);

Có nghĩa là x sẽ in ra có 8 kí tự, trong đó 2 kí tự sau dấu “.”

Kq: 3333.33

Page 25: Chương 3 Core Java

Kiểu dữ liệu

Trong Java, kiểu dữ liệu được chia thành 2 loại Các kiểu dữ liệu nguyên thủy (primitive) Các kiểu dữ liệu tham chiếu (reference)

Page 26: Chương 3 Core Java

Dữ liệu nguyên thủy

Kiểu số bit Giá trị Mô tả

integer int 32 -2,147,483,648 đến +2,147,483,648

Dùng để lưu một số có giá trị lớn đến VD: tổng lương mà cty phải trả cho nv.

short 16 -32768 đến 32767 Dùng để lưu các số có giá trị nhỏ .VD:slg người lđộng

long 64 -9,223,372,036’854,775,808 đến +9,223,372,036’854,775,808

Dùng để lưu một số cố giá trị rất lớn Ví dụ dân số của một nước

byte 8 -128 đến 127 Dùng để lưu trữ một giá tri bằng một byte. Chúng được sử dụng rộng rãi khi xử lý một file văn bản

Page 27: Chương 3 Core Java

Dữ liệu nguyên thủy

Kiểu Số bit Giá trị Mô tả

floating point

float 64 -3.40292347E+38 đến +3.40292347E+38

Dùng để lưu các số thập phân đến 3.40292347E+38 Ví dụ : giá thành sản phẩm

double 32 -1,79769313486231570E+308 đến +1,79769313486231570E+308

Dùng để lưu các số thập phân có giá trị lớn đến1,79769313486231570E+308 VD: giá trị tín dụng của ngân hàng nhà nước.

char 16 ‘\u0000’ to ’u\ffff ’ Dùng để lưu tên hoặc các dữ liệu ký tự .VD:tên ngườI lđộng

boolean 1 “True” hoặc “False” Dùng để lưu các giá trị “Đúng” hoặc “sai”

Page 28: Chương 3 Core Java

Kiểu dữ liệu tham chiếu

Kiểu dữ liệu Mô tả

Mảng(array) Tập hợp các dữ liệu cùng kiểu.VD: tên người

Lớp(Class) Tập hợp các biến và các phương thức

Giao diện(Interface) Một lớp trừu tượng được cho phép cài đặt đa thừa kế trong Java

Page 29: Chương 3 Core Java

Các toán tử

Java cung cấp nhiều dạng toán tử sau: Toán tử số học Toán tử bit Toán tử quan hệ

Page 30: Chương 3 Core Java

Toán tử số học

Bao gồm phép toán 1 ngôi(thứ tự thực hiện từ phải qua trái):+(cộng),-(trừ), phép đổi dấu

Phép toán 2 ngôi (thứ tự thực hiện từ trái qua phải): *(nhân), /(chia),% (chia lấy số dư)

Phép chia nguyên đòi hỏi số chia khác 0 Phép chia số thực cho 0.0 là INF(dương vô

cùng) và -INF(âm vô cùng)

Page 31: Chương 3 Core Java

Toán tử tăng dần và giảm dần Giống như C, C++, Java cũng sử dụng tăng

dần và giảm dần toán tử ( n++ hoặc n--) VD: int n=12; n++; Có 2 dạng của các kiểu toán tử này:

Tiền tố:Thực hiện phép cộng trước rồi thực hiện tính toán với giá trị mới vừa cộng đc

Hậu tố:thực hiện tính toán giá trị cũ của biến rồi mới cộng

Page 32: Chương 3 Core Java

Toán tử quan hệ và Boolean

Kiểm tra mối quan hệ giữa 2 toán hạng, kết quả trả về giá trị boolean, được sử dụng trong cấu trúc điều khiển.

Các toán tử: != ,==, >=, <= ,||, &&

Sử dụng toán tử tam nguyên ?:

Biểu thức:

Đk? Biểu thức1: Biểu thức2

double a=10.00;Int b=10;Boolean k= a==b;-result: false vì khác kiểu

Page 33: Chương 3 Core Java

Toán tử quan hệ và Booleanpublic class SinhVien {

String ten;int tuoi;

SinhVien(String name){ten=name;} public static void main(String[] args) { SinhVien s1= new SinhVien("Ha"); SinhVien s2= new SinhVien("Ha"); SinhVien s3=s2; if(s2==s1) System.out.println("true"); else System.out.println("false"); if(s2==s3) System.out.println("true"); else System.out.println("false");

} }

Page 34: Chương 3 Core Java

Toán tử BIT

Cho phép ta thao tác trực tiếp trên từng bit riêng biệt trong các kiểu dliệu nguyên thủy

Kí hiệu

Ý nghĩa

& and

| or

^ Xor

~ not

<< Phép dịch trái

>> Phép dịch phải

Page 35: Chương 3 Core Java

Hàm và hằng số toán học

Lớp Math bao gồm các loại hàm toán học mà ta thường xuyên sử dụng.

VD: Hàm lượng giác: Math.sin, Math.cos, Math.tan, Math.atan, Math.atan2

Hàm lũy thừa và log: Math.exp, Math.log

Hằng số: Math.PI(3.141592654), Math.E(2.718281828)

double x = 4; double y = Math.sqrt(x);

System.out.println(y);-> result:2

Page 36: Chương 3 Core Java

Ép kiểu

Thực hiện cộng 1 biến integer Với 1 biến float--làm ntn?Ép kiểu: chuyển đổi kiểu dữ liệu này sang kiểu

khácChú ý:nếu ép kiểu ngoài phạm vi của kiểu đích,

kết quả sẽ là 1 số bị cắt xén có giá trị khácEx: (byte) 300 là 44 kiểu boolean ko chuyển sang kiểu dliệu khác

double x = 9.997; int nx = (int) Math.round(x); result:10

double x = 9.997; int nx = (int) x; -result: 9

Page 37: Chương 3 Core Java

Sơ đồ chuyển đổi giữa các kiểu số

Page 38: Chương 3 Core Java

Dấu ngoặc đơn và thứ bậc toán tư Nếu ko có dấu ngoặc đơn, các phép toán

được thực hiện theo thứ bậc Các toán tử ở cùng cấp độ được thực hiện từ

trái sang phải hoăc từ phải qua trái như trong bảng sau

Để thay đổi thứ tự thực hiện thì ta phải dùng dấu ngoặc đơn()

Page 39: Chương 3 Core Java

Phép toán Thứ tự thực hiện

[] . () Trái sang phải

! ~ ++ -- + (unary) – (unary) () (ép kiểu) new Phải sang trái

* / % Trái sang phải

+ - Trái sang phải

<< >> >>> Trái sang phải

< <= > >= instanceof Trái sang phải

== != Trái sang phải

& Trái sang phải

^ Trái sang phải

| Trái sang phải

&& Trái sang phải

|| Trái sang phải

?: Phải sang trái

= += -= *= /= %= &= |= ^= <<= >>= >>>= Phải sang trái

Page 40: Chương 3 Core Java

Kiểu liệt kê

Bạn có thể tự định nghĩa kiểu liệt kê của bạn tron 1 số trường hợp

VD: size quần áo(S,M,L,X)

enum Size{Small, Medium, Large, Extra-Large};Size s= Size.Small;

Page 41: Chương 3 Core Java

STRING String là 1 chuỗi các kí tự char String được coi như là 1 lớp với các phương

thức đi kèm, khai báo 1 String được coi như là khai báo 1 đối tượng

Ví dụ: ( 2 kiểu khai báo) String kyo=“KYO-The Best Samurai”; String kyo=new String(“KYO-The Best

Samura”);

Page 42: Chương 3 Core Java

CODE FOINTS AND CODE UNIT Code points: Là vị trí kí tự trong bảng UTD-16

Ví dụ: String kyo=“KYO-The Best Samurai”; int cp = kyo.codePointAt(5); => cp=104 (kí tự ‘h’)

Code Unit: Là nội dung của kí tự Ví dụ:

String kyo=“KYO-The Best Samurai”;char ch = kyo.charAt(1) =>ch=‘Y’

Page 43: Chương 3 Core Java

SUBSTRINGS Substring: phương thức để tách 1 xâu thuộc

xâu gốc: OriginalString.Substring(x,y); -> xâu trích ra từ

vị trí thứ x->y trong xâu gốc OriginalString Ví dụ:

String kyo=new String("KYO-The Best Samura"); String k=kyo.substring(0,4); => Result: KYO-

Page 44: Chương 3 Core Java

CHỉNH SửA 1 XÂU Ví dụ: Cách sử dụng như trên sẽ thay

String kyo=new String("KYO-The Best Samura");

String kyo=kyo.substring(0,3) + "khua khua"; =>Result : “KYOkhua khua”

Page 45: Chương 3 Core Java

KIểM TRA XEM 2 XÂU CÓ BằNG NHAU HAY KHÔNG? Phương thức:

Bloolean String.equals(String) Chú ý: không dùng kiểu so sánh nội dung xâu

“==“ đây chỉ so sánh tham chiếu

Page 46: Chương 3 Core Java

INPUT VÀ OUTPUT Input : Khai báo Input

Scanner in = new Scanner(System.in);

Chú ý: khai báo import java.util.*

Page 47: Chương 3 Core Java

ARRAY Định nghĩa: Mảng là 1 cấu trúc bao gồm tập

hợp các giá trị cùng kiểu. Ta có thể truy nhập vào từng giá trị riêng lẻ bằng chỉ mục số nguyên.

Giống C, mảng được bắt đầu từ vị trí 0

Page 48: Chương 3 Core Java

VÒNG LặP “FOR EACH” Ta có thể dùng phương pháp sau để duyệt

từng phần tử của mảng: for (int element : a) {

System.out.println(element);

... }

=> Không cần biết độ dài của mảng, tiện lợi hơn so với phương pháp duyệt truyền thống

Page 49: Chương 3 Core Java

SAO CHÉP MảNG Sao chép mảng:

int[] luckyNumbers = smallPrimes; Chú ý: khi thay đổi giá trị của 1 trong 2 mảng thì

giá trị của mảng còn lại cũng thay đổi theo. Vì cả 2 đầu tham chiếu đến 1 vùng nhớ lưu giá trị của mảng.

Phương pháp khác để chỉ sao chép giá trị của mảng không thôi là dung phương thức: System.arraycopy(from, fromIndex, to, toIndex,

count);

Page 50: Chương 3 Core Java

Sắp xếp mảng và Binary Search Phương thức sắp xếp:

Arrays.sort(a) //Phương thức này sử dụng thuật toán Quick sort để sắp xếp.

Phương thức binary search: static int binarySearch(type[] a, type v)

(search v trong a)

Page 51: Chương 3 Core Java

Mảng nhiều chiều Cách khai báo:

double[][] a; a = new double[N][M];

Cách truy nhập từng phần tử: for (int i = 1; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { balances[i][j] = …; } }

Page 52: Chương 3 Core Java

RAGGED ARRAYS (MảNG VụN) Mảng mà các hàng khác nhau sẽ có độ dài khác

nhau. Ví dụ:

1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1

Page 53: Chương 3 Core Java

RAGGED ARRAYS (MảNG VụN) Cách khai báo: (dạng tam giác vuông)

int[][] odds = new int[NMAX + 1][]; for (int n = 0; n <= NMAX; n++) odds[n] = new int[n + 1];

Page 54: Chương 3 Core Java

Control Flow

Giống như ngôn ngữ lập trình C thì trong Java cũng cung cấp các lệnh cho phép điều khiển luồng lệnh thực hiện gồm: Các lệnh điều kiện:

if (condition) statementhoặc if (condition) statement else statement

Lệnh lặp: do { … } while (condition); while (condition) { … } Lệnh forChú ý: Ta có thể khai báo trong câu lệnh for tuy nhiên biến khai báo trong câu lệnh chỉ

có phạm vi trong câu lệnh for Lệnh switch (expression) { case … }

Chú ý: Trong câu lệnh expression thì phải là kiểu số nguyên hoặc một hằng khai báo kiểu EnumVì vậy, sử dụng lệnh kiểu switch( String) { case string1: ….} //ERROR

Page 55: Chương 3 Core Java

Số lớn (Big Numbers)

Nếu sự chính xác của kiểu số nguyên cơ bản và số dấu phẩy động không đủ Sử dụng 2 lớp BigInteger và BigDecimal

Hai lớp này được sử dụng để thao tác với các số có độ dài tùy ý (số lớn)

Để sử dụng 2 lớp này chúng ta cần import gói java.math Import java.math.*

Page 56: Chương 3 Core Java

Lớp BigInteger xử lý các số nguyên Lớp BigDecimal thực hiện tương tự như với số dấu

phẩy động Để chuyển một số nguyên sang một số kiểu

BigInteger ta dùng phương thức valueOf VD: BigInteger a = BigInteger.valueOf(100); Vì chúng ta sử dụng các đối tượng kiểu

BigInteger(hoặc BigDecimal) nên ta thay vì sử dụng các toán tử *, / ta dùng các phương thức multiply hoặc divide đã được định nghĩa trong lớp

Để hiểu thêm về các phương thức trong 2 lớp này bạn tìm hiểu thêm trong thư viện gói java.math