39
Ch03 變變變變變變 JAVA 變變變變變變 (I)

Ch03 變數資料型態

  • Upload
    bailey

  • View
    88

  • Download
    0

Embed Size (px)

DESCRIPTION

Ch03 變數資料型態. JAVA 程式語言入門 (I). 大綱. 變數命名規則 基本資料型態 常數設定. Java 的命名語法 - 規則. 名稱是一個合法的「識別字」( Identifier ),識別字是使用英文字母開頭,不限長度的 Unicode 統一字碼字元的字串,包含字母、數字和底線 ” _ ” 。例如:一些合法的名稱範例,如下所示: T, n, size, z100, long_name, helloWord, Test, apple 名稱區分英文字母的大小寫,例如: apple 、 Apple 和 APPLE 屬於不同變數。 - PowerPoint PPT Presentation

Citation preview

Page 1: Ch03  變數資料型態

Ch03 變數資料型態

JAVA 程式語言入門 (I)

Page 2: Ch03  變數資料型態

大綱 變數命名規則 基本資料型態 常數設定

112/04/20 2

Page 3: Ch03  變數資料型態

3

Java 的命名語法 - 規則 名稱是一個合法的「識別字」( Identifier ),識

別字是使用英文字母開頭,不限長度的 Unicode統一字碼字元的字串,包含字母、數字和底線” _” 。例如:一些合法的名稱範例,如下所示:T, n, size, z100, long_name, helloWord, Test, apple

名稱區分英文字母的大小寫,例如:apple、 Apple和 APPLE 屬於不同變數。

名稱不能使用 Java 語法的「關鍵字」( Keyword )、保留字的布林值 true或 false和null 。

名稱在「範圍」( Scope )中必需是唯一的,例如:在程式中可以使用相同的變數名稱,不過各變數名稱需要在不同的範圍。

112/04/20

Page 4: Ch03  變數資料型態

4

變數的命名 變數名稱不能為關鍵字或保留字 變數名稱的第一個字元可以為 Unicode 字元 (如 : 中文字 ) 、英文字母、 底線符號(_) 或者金錢符號 ($、 £ 、 ¥ ) ,第二個字元以後,可以使用前述字元及數字字元

避免在變數名稱中使用 $ 在相同變數領域,不能重複宣告一個變數

名稱

112/04/20

Page 5: Ch03  變數資料型態

5

Java 關鍵字和保留字Java的關鍵字abstract assert boolean break byte

case catch char class continue

default do double else extends

final finally float for if

implements import instanceof int interface

long native new package private

protected public return short static

strictfp super switch synchronized this

throw throws transient try void

volatile while

Java的保留字const goto true false null112/04/20

Page 6: Ch03  變數資料型態

6

識別字的種類 - 說明 Java 的命名語法是使用識別字命名,事實

上除了變數的命名外,在程式中還需要使用在常數、變數、類別和函數(即方法)命名,這些名稱都屬於識別字,同樣的,這些名稱不可以是 Java 的關鍵字或保留字。

112/04/20

Page 7: Ch03  變數資料型態

7

識別字的種類 - 命名原則 為了程式撰寫的一致性和易於閱讀, Java

習慣的命名原則,如下表所示:識別字種類 習慣命名原則 範例常數 使用英文大寫字母和底線”_”符號 MAX_SIZE、MIN_SIZE

變數 英文小寫字母開頭,如果 2個英文字組成,第 2個英文字以大寫開頭

size、screenSize、myAccountNumber

類別 英文大寫字母開頭,如果是 2個英文字組成,第 2個英文字也使用大寫開頭

LargeRoom、SmallRoom

函數(方法) 英文小寫字母開頭,如果是 2個英文字組成,第 2個英文字使用大寫開頭

pressButton、scrollScreen

112/04/20

Page 8: Ch03  變數資料型態

8

變數的宣告 - 說明 變數的目的是儲存程式執行中的一些暫存

資料,程式設計者只需記住變數名稱,而且知道名稱表示一個記憶體位置中的資料,至於這個記憶體位置到底有哪裡?並不用傷腦筋,因為這是編譯程式的工作。

簡單的說,程式語言的變數是使用有意義的名稱代表數字的記憶體位址。

112/04/20

Page 9: Ch03  變數資料型態

9

宣告變數宣告變數的用意:設定變數所佔的記憶體大小

不會發生資料因無心而蓋掉的錯誤  (相同名稱的變數不能重複宣告 )

112/04/20

Page 10: Ch03  變數資料型態

10

變數的宣告 - 語法 Java 變數宣告的語法,如下所示:

資料型態 變數名稱 ; 宣告格式使用資料型態開頭,後面跟著變

數名稱,目的是「配置一個宣告資料型態的變數」。

Java 擁有 8 種基本資料型態byte、 int、 short、 long、 float、 double、 char和 boolean

112/04/20

Page 11: Ch03  變數資料型態

11

宣告變數語法:

宣告多個變數:  

int j;

資料型別 變數名稱

int i, j, k;

以逗號隔開

112/04/20

Page 12: Ch03  變數資料型態

12

變數的宣告 - 初值 變數宣告單純只是表示保留記憶體空間,

至於儲存的資料是什麼?可以在宣告時指定初始值,或是使用指定敘述在程式碼設定變數值。在 Java 宣告變數且指定變數初值,如下所示:int score = 85;

int i = 20;

112/04/20

Page 13: Ch03  變數資料型態

13

指定敘述 - 語法 「指定敘述」( Assignment Statement )是在程

式中存取指定變數的值,如果在宣告變數時沒有指定變數的初值,就可以使用指定敘述即” =” 等號指定變數值或更改變數值,其語法如下所示:變數 = 運算式 ;

在指定敘述的左邊是變數名稱,右邊是「運算式」( Expression ),運算式可以是 Java 運算子和運算元組成的任何運算式。

簡單的說,指定敘述是「將右邊運算式的運算結果指定給左邊的變數」。

112/04/20

Page 14: Ch03  變數資料型態

14

指定敘述 - 範例 指定敘述的範例,如下所示:

balance = 6000; 上述程式碼指定變數 balance 的內容,運

算式是數值 6000

112/04/20

Page 15: Ch03  變數資料型態

15

變數設值 語法:

宣告並設值:

i = 24;

將 24設定給變數 i

int a = 123;int j = 520, k = 240;

112/04/20

Page 16: Ch03  變數資料型態

16

變數設值方法中所宣告的變數稱「自動變數」

自動變數在宣告之後必須設值(初始化) 才能使用,否則程式會在編譯時產生錯誤

112/04/20

Page 17: Ch03  變數資料型態

17

常數「常數」( Constant)就是用來表示某個值的符號。數值常數:

  例: 12, 9.6, -456, -999.9字元常數:用單引號「‘」一前一後包起來。

  例:‘ j’ , ‘3’ , ‘我’字串常數:以雙引號「”」一前一後包起來。

  例:“沒喝過 Java,但我會用 Java”

112/04/20

Page 18: Ch03  變數資料型態

18

常數與變數常數的書寫方式決定常數所代表的值;

 變數的值是由程式設計者決定。一個常數值符( literal)就表示一個數值,變數所代表的數值是可以變更的。

j = 36;

把數值 36存放到稱為 j 的某個小區塊記憶體內

112/04/20

Page 19: Ch03  變數資料型態

19

常數的宣告與使用 「常數」( Named Constants )是指一個

變數在設定初始值後,就不會變更其值,簡單的說,就是在程式中使用一個名稱代表一個固定值。

Java 的常數宣告和指定初值的變數宣告相同,只需在前面使用 final 關鍵字,如下所示:final double PI = 3.1415926;

112/04/20

Page 20: Ch03  變數資料型態

20

練習一輸入程式碼 , 如下:討論其錯誤結果 , 並修正它public class Ex02_02{ public static void main (String args []) { int a = 123; int i; int j = 520, k = 240; System.out.println(“a = “+a); System.out.println(“i = “+i); System.out.println(“j = “, +j); System.out.println(“k = “, +k); }}

112/04/20

Page 21: Ch03  變數資料型態

21

Java 語言是「強調型態」( Strongly Typed )程式語言,在變數儲存的值需要指定資料型態。資料型態的目的是告訴編譯程式宣告的變數準備儲存什麼

樣的資料,而且不論如何存取變數值,都不能更改變數的資料型態。

Java 的資料型態分為「基本」( Primitive )和「參考」( Reference )兩種資料型態,如下:基本資料型態:變數有 byte、 short、 int、 long、 float、

double、 char和 boolean共 8 種資料型態。參考資料型態:變數值是一個記憶體位置,這個位置值是

物件儲存的位置。有字串 (String) 、陣列 (Array) 、物件(Object)

Java 的資料型態

112/04/20

Page 22: Ch03  變數資料型態

22

基本資料型別基本資料型態 可用之型別關鍵字

整數 byte、 short、 int、 long

浮點數 float、 double

字元 char

布林值 boolean

112/04/20

Page 23: Ch03  變數資料型態

23

整數

型別關鍵字

名稱 佔用記憶體

數值範圍

byte 位元組 8 bits -128 ~ 127 ( -27 ~ 27-1 )

short 短整數 16 bits -32768 ~ 32767 ( -215 ~ 215-1 )

int 整數 32 bits -2147483648 ~ 2147483647( -231 ~ 231-1 )

long 長整數 64 bits -263 ~ 263-1

112/04/20

Page 24: Ch03  變數資料型態

24

整數 八進位和十六進位的整數表示法:

長整數表示法:

int j = 012; //八進位的變數值設定 ,是以數字 0為開頭int k = 0x2a; //十六進位的變數值設定int m = 0x1B0C; //十六進位的變數值設定

long a = 123; //以一般整數設定給長整數變數long b = 123L; //以長整數設定給長整數變數

112/04/20

Page 25: Ch03  變數資料型態

25

整數 超出 int的範圍,應在尾端加上 l 或L :

long型別的數值不可設定給 int型別的變數:

long a = 123456789123; //錯誤long b = 123456789123L; //正確

int c = 123L; //錯誤的設值

112/04/20

Page 26: Ch03  變數資料型態

26

浮點數型別關鍵字 名稱 佔用記憶體 數值範圍float 單精數 32 bits 1.4E-45 ~ 3.4E+38

-1.4E-45 ~ -3.4E+38

double 倍精數 64 bits 4.9E-324 ~ 1.79E+308-4.9E-324 ~ -1.79E+308

• float 的準確度到小數點下 7 位數, double 到 15 位數,超出部份會被去掉例: 987654321.123456789f (float) 9.8765432E8 987654321.123456789 (double) 9.876543211234568E8 (四捨五入)

112/04/20

Page 27: Ch03  變數資料型態

27

浮點數 浮點數預設型別為 double,所以只要數值中出現小數點或 E 時 ,皆視為 double

double型別的值不能設定給 float型別的變數

float ft1 = 1.23f;float ft2 = 1.234F;float ft3 = 1.234; //錯誤float ft3 = 10E2; //錯誤

112/04/20

Page 28: Ch03  變數資料型態

28

字元 使用 Unicode,每個字元佔 2 bytes,其中包括中文 ,日文 ,韓文 ,德文 , 法文等 .

字元以單引號(’)包起來表示

宣告字元變數使用 char關鍵字

char c = ‘A’;char d = ‘ ’字 ;

112/04/20

Page 29: Ch03  變數資料型態

29

字元字元變數的設值可以使用一般整數設定

 ,範圍為 0~65535 ( 0xffff)

Unicode表示法,以‘ \uXXXX’表示一個字元其中 X為十六進位的數字,且必須為 4 位數

char c = 26131;

char c = ‘\u74CF’;

112/04/20

Page 30: Ch03  變數資料型態

30

練習二1. 分別找出上述二例所代表的字元 c = 26131; d =‘\u74CF’2. 練習用數值輸入字元‘ A’3. 找出自己姓名的 Unicode,並出現下列

結果 王 = 29579 大 = 22823 瑾 = 29822

112/04/20

Page 31: Ch03  變數資料型態

31

布林值布林值也叫真假值,不是真( true),

 就是假( false)宣告布林變數使用 boolean關鍵字,設定其值時只能使用 true 或 false,或者運算結果為 true 或 false 的運算式boolean b1 = true;

boolean b2 = 18 > 17;

18 大於 17 ,故得true

112/04/20

Page 32: Ch03  變數資料型態

32

不同型別的值與變數 自動型別轉換的限制

同資料型態,小體積的型別值可以設定給大體積的型別變數,反之則否。

例 :int 可設定給 longboolean型別不同於其它基本型別,不能和其它基本型別相互成為設定值。

char型別可以視為 int型別,但所有整數型別皆不能視為 char型別。

所有整數型別皆可以設定給所有浮點數型別,反之則否。

112/04/20

Page 33: Ch03  變數資料型態

33

不同型別的值與變數 自動型別轉換圖解

byte short int long

doublefloat

char

8 bits 16 bits 32 bits 64 bits

112/04/20

Page 34: Ch03  變數資料型態

34

自訂常數 自訂常數的語法

宣告自訂常數時,一定要設定初始值才算合法。 常數不一定要在宣告時就設定初始值,但一旦設定初值後,就不能更改.

若要變更所有的值時,只要變更初設值即可。 常數名稱比數值容易了解。 避免不小心被更動。(若不小心在程式的其他地方變更其值時,會出現編譯錯誤訊息)

final 型別關鍵字 常數名稱 = 常數數值 ;

final float pi = 3.14159f;

112/04/20

Page 35: Ch03  變數資料型態

35

練習三1. 已知 int 型別可以表現的最大值為 2147483647 。

寫一程式,將 int 型別的最大值設定給變數 a ,再將 a+1 設定給變數 b ,然後將 b 的值印出來

2. 圓周長的公式是 2*PI*r, PI 是圓周率 3.1415,r 是半徑 10, 20, 50 ,請設計 Java 程式使用常數定義圓周率,然後計算各半徑的圓周長

3. 請建立 Java 程式將下列的八和十六進位值轉換成十進位顯示:

0277、 0xcc、 0xab、 0333、 0555、 0xff

112/04/20

Page 36: Ch03  變數資料型態

SCJP模擬試題 (1)Given:

1. public class A {

2. public static void main(String[] argv) {

3. long x, y = 100;

4. // insert code here

5. System.out.println("x = " + x);

6. }

7. }

Which, inserted at line 4, will compile?(choose three or four)

A. x = 120;

B. x = 9123456789;

C. y = 200;

D. x = 120; y = 200;

E. x = y;

112/04/20 36

Page 37: Ch03  變數資料型態

SCJP模擬試題 (2)Given :1. public class B {

2. public static void main(String[] argv) {

3. final int MYGOD, MYCAR = 0;

4. double false = 128.5;

5. char c = 45, r&d = '\u0003';

6. final String s = "\\\"Hi" + '!';

7. short 3flower = MYCAR;

8. MYGOD = 5;

9. System.out.println("s = " + s);

10. }

11. }

Which lines will cause compilation error?(Choose all that apply.)

A. Line 3

B. Line 4

C. Line 5

D. Line 6

E. Line 7

112/04/20 37

Page 38: Ch03  變數資料型態

SCJP模擬試題 (3)Given :

1. public class StrPrint {

2. public static void main (String[] argv) {

3. String str;

4. System.out.printIn ("str = " + str);

5. }

6. }

What is the result?

A. str = ""

B. str = null

C. str =

D. Compile fails.

E. An Exception is thrown at runtime.

112/04/20 38

Page 39: Ch03  變數資料型態

SCJP模擬試題 (4) Which are Primitive data types?(Choose all that apply.)

A. Char

B. String

C. bit

D. int

E. boolean

F. Short

G. long

112/04/20 39