Java語言基礎-類型、變量和表達式.ppt_第1頁
Java語言基礎-類型、變量和表達式.ppt_第2頁
Java語言基礎-類型、變量和表達式.ppt_第3頁
Java語言基礎-類型、變量和表達式.ppt_第4頁
Java語言基礎-類型、變量和表達式.ppt_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、JavaJava程序設計程序設計第二章第二章 類型、變量和表達式類型、變量和表達式2學習目標學習目標掌握八個原始類型掌握八個原始類型理解標識符、變量和常量理解標識符、變量和常量能夠熟練的進行變量和常量的聲明能夠熟練的進行變量和常量的聲明理解顯式和隱式的類型轉(zhuǎn)換理解顯式和隱式的類型轉(zhuǎn)換辨認、描述并使用辨認、描述并使用JavaJava運算符運算符掌握表達式中運算符的執(zhí)行順序掌握表達式中運算符的執(zhí)行順序使用賦值語句,掌握賦值兼容性使用賦值語句,掌握賦值兼容性2.1 2.1 認識程序認識程序什么是程序?,有一個著名的公式說:什么是程序?,有一個著名的公式說:3程序程序=數(shù)據(jù)結構數(shù)據(jù)結構+算法算法”什么

2、是數(shù)據(jù)結構?什么是數(shù)據(jù)結構?簡單的數(shù)據(jù)結構就是眾所周知的整型、實型這樣的簡單的數(shù)據(jù)結構就是眾所周知的整型、實型這樣的數(shù)據(jù)表示,復雜的數(shù)據(jù)結構可以是由簡單的數(shù)據(jù)結數(shù)據(jù)表示,復雜的數(shù)據(jù)結構可以是由簡單的數(shù)據(jù)結構組合而成,如數(shù)組。構組合而成,如數(shù)組。什么是算法?什么是算法?算法就是用什么樣的方法處理給定的數(shù)據(jù)從算法就是用什么樣的方法處理給定的數(shù)據(jù)從而得到所需的結果。而得到所需的結果。2.1 2.1 一個計算圓面積的程序一個計算圓面積的程序面積面積a= a= r r2 2 中,計算過程可以這樣描述中,計算過程可以這樣描述:u第一步:給出圓的半徑;第一步:給出圓的半徑;u第二步:將半徑值帶入圓面積計算公

3、式,計算第二步:將半徑值帶入圓面積計算公式,計算出圓面積,用出圓面積,用a a保存結果。保存結果。4/ 程序程序2-1:一個計算圓面積的程序一個計算圓面積的程序public class ComputeArea public static void main(String args) int r = 10;double area=3.14*r*r;System.out.println(area);52.2變量在程序中表示數(shù)據(jù)有兩種方法,在程序中表示數(shù)據(jù)有兩種方法,u一種是在表達式中直接用原始值來表示,如表一種是在表達式中直接用原始值來表示,如表示數(shù)值示數(shù)值5 5、-6-6、7.867.86等,它

4、們被稱為等,它們被稱為“字面量字面量(literalliteral)u另外一種是用一個特定的名字來間接表示,被另外一種是用一個特定的名字來間接表示,被稱為稱為“變量變量”u間接表示的最大優(yōu)點在于可以重復使用一個名字來表間接表示的最大優(yōu)點在于可以重復使用一個名字來表達某種類型的數(shù)值。達某種類型的數(shù)值。注注u在在JavaJava語言中,所有的變量必須要首先聲明,語言中,所有的變量必須要首先聲明,然后才能使用然后才能使用, ,而且訪問一個未經(jīng)初始化的局部而且訪問一個未經(jīng)初始化的局部變量,將導致編譯錯誤。變量,將導致編譯錯誤。 .1標識符標識符 在在JavaJava編程語言中,標識符

5、是賦予變量、類或方編程語言中,標識符是賦予變量、類或方法的名稱。法的名稱。u標識符可從一個字母、下劃線標識符可從一個字母、下劃線(_)(_)或美元符號或美元符號($)($)開始,隨后可跟除了在開始,隨后可跟除了在JavaJava中作為運算符之外的任中作為運算符之外的任何可見字符所構成的連續(xù)字符串,但不能被空格或何可見字符所構成的連續(xù)字符串,但不能被空格或制表符隔開。制表符隔開。u標識符是大小寫區(qū)別對待的并且未規(guī)定最大長度標識符是大小寫區(qū)別對待的并且未規(guī)定最大長度u標識符不能是關鍵字標識符不能是關鍵字 7表2-1 有效與無效標識符有效標識符無效標識符IdentifieruserNameUser_

6、name_sys_varl$change1User220user nameuser&namestar*michal-jordanc/javaHello+world8練習題練習題下面哪些是合法的標識符:下面哪些是合法的標識符:u $persons $persons u TwoUsers TwoUsers u * *pointpointu thisthisu endlineendline92.2.2 Java2.2.2 Java關鍵字關鍵字 表2-2 Java編程語言中的關鍵字abstractcontinuefornewswitchassert*defaultgoto*packagesynchro

7、nizedbooleandoifprivatethisbreakdoubleimplements protectedthrowbyteelseimportpublicthrowscaseenum*instanceofreturntransient catchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfp*volatileconst*floatnativesuperwhile注:* 未用;* 1.2以后;* 1.4以后; * 1.5以后.3基本基本JavaJava類型類型 11Jav

8、aJava的基本數(shù)據(jù)類型的基本數(shù)據(jù)類型 表2-3 Java的基本數(shù)據(jù)類型類型關鍵字占用字節(jié) 缺省數(shù)值取值范圍邏輯型booleanfalsetrue , false 字符型char2u0000u0000 uFFFF字節(jié)型byte10128 127短整型short2032768 32767整型int402147483648 2147483647長整型long809223372036854775808 9223372036854775807單精度float40.0F-3.4E383.4E38雙精度double80.0D-1.7E3081.7E308122.2.4 2.2.4 變量聲明變量聲明 Jav

9、aJava屬于強類型的程序設計語言。所有變量和表達式在屬于強類型的程序設計語言。所有變量和表達式在編譯時都有明確的類型編譯時都有明確的類型 u 修飾符修飾符 類型類型 變量名變量名 =初值初值,變量名變量名=初值初值 例如:例如:u int x int x 0, y 0, y 1, z = 1;1, z = 1;u float afloat a0f, b=0.1f;0f, b=0.1f;u char c1, c2, c3=char c1, c2, c3=c c; ;u double d1=1.0d;double d1=1.0d;u boolean mycom=true;boolean myco

10、m=true;u Date d1,d2; Date d1,d2;u HelloWorld h1,h2; HelloWorld h1,h2;13為什么要進行變量聲明為什么要進行變量聲明u變量就是一個保存有值的內(nèi)存位置的名字表示變量就是一個保存有值的內(nèi)存位置的名字表示u聲明變量,就是分配內(nèi)存聲明變量,就是分配內(nèi)存u通過類型聲明,可以明確的知道每個變量占據(jù)通過類型聲明,可以明確的知道每個變量占據(jù)內(nèi)存的大??;內(nèi)存的大??;u通過聲明,對非局部變量定義了一個初值;通過聲明,對非局部變量定義了一個初值;u重要的也在于可以重復使用一個名字來表達某重要的也在于可以重復使用一個名字來表達某種類型的數(shù)值。種類型的數(shù)

11、值。14邏輯類型邏輯類型u boolean truth = true; /boolean truth = true; /聲明一個布爾類型的變聲明一個布爾類型的變量,并初始化其值為量,并初始化其值為truthtruth字符類型字符類型u 使用使用charchar類型可表示單個字符。一個類型可表示單個字符。一個charchar代表一個代表一個16-bit16-bit無符號的(不分正負的)無符號的(不分正負的)UnicodeUnicode字符。一個字符。一個charchar文字必須包含在單引號內(nèi)文字必須包含在單引號內(nèi)( ( ) )。u a a u t t 一個制表符一個制表符u u? u? 一個特殊

12、的一個特殊的UnicodeUnicode字符。字符。?應嚴格應嚴格按照四個按照四個1616進制數(shù)字進行替換進制數(shù)字進行替換 15文本類型文本類型charchar和和StringStringStringStringu不是一個基本數(shù)據(jù)類型,它是一個不是一個基本數(shù)據(jù)類型,它是一個類類u具有用雙引號(具有用雙引號(”)引用的多個文字字符)引用的多個文字字符u“The The quick brown fox jumped over the lazy dog.quick brown fox jumped over the lazy dog.”u可按如下情形使用:可按如下情形使用:uString greet

13、ing = String greeting = “Good Morning! nGood Morning! n”;uString err_meg = String err_meg = “ Record not found ! Record not found !”; ;CharChar和和StringString類型變量的聲明和初始化如下所示:類型變量的聲明和初始化如下所示:uchar ch = A; / declares and initializes a char char ch = A; / declares and initializes a char variable variabl

14、e uchar ch1,ch2 ; / declares two char variables char ch1,ch2 ; / declares two char variables u/ declare two String variables and initialize them/ declare two String variables and initialize themuString greeting = Good Morning ! n ;String greeting = Good Morning ! n ;uString err_msg = Record Not Foun

15、d ! ;String err_msg = Record Not Found ! ;uString str1,str2 ; / declare two String variablesString str1,str2 ; / declare two String variables16小測驗小測驗指出下面的錯誤聲明,說明原因指出下面的錯誤聲明,說明原因 char ch = AB; /char ch = AB; /單引號內(nèi)只能包含一單引號內(nèi)只能包含一個字符個字符 char ch1= char ch1= “A A”; /; /雙引號表示界定的是雙引號表示界定的是一個字符串常量一個字符串常量17整數(shù)

16、類整數(shù)類byte, short, int, long byte, short, int, long u2 2 十進制值是十進制值是2 2u0 077 77 首位的首位的0 0表示這是一個八進制的數(shù)值表示這是一個八進制的數(shù)值u0 x0 xBAAC BAAC 首位的首位的0 x0 x表示這是一個表示這是一個1616進制的數(shù)值進制的數(shù)值默認整數(shù)類文字屬默認整數(shù)類文字屬intint類型,除非在其后直接跟著一類型,除非在其后直接跟著一個字母個字母“L L”或者或者“l(fā) l”,L L表示一個表示一個longlong值。值。 ubyte smallOne=7;byte smallOne=7;ushort c

17、ount=10000;short count=10000;uint score=100;int score=100;ulong bigone=999999999L,largeOne;long bigone=999999999L,largeOne;18課堂練習課堂練習下面的哪些答案可以用以表示八進制值下面的哪些答案可以用以表示八進制值8 8。u 010 0 x10 08 0 x8010 0 x10 08 0 x819課堂練習課堂練習寫出下面的輸出結果寫出下面的輸出結果int color=10;System.out.printf(10的的8進制表示是進制表示是%on,color);System.o

18、ut.printf(10的的10進制表示是進制表示是%dn,color);System.out.printf(10的的16進制表示是進制表示是%xn,color);System.out.printf(10的的2進制表示是進制表示是%sn, Integer.toBinaryString(color);System.out.printf(10的的16進制表示是進制表示是%sn, Integer.toOctalString(color);System.out.printf(10的的16進制表示是進制表示是%sn, Integer.toHexString(color);顯示某個字符的顯示某個字符的un

19、icodeunicode編碼編碼char ch=“”;char ch=“”;System.out.printf(%cSystem.out.printf(%c對應的對應的unicodeunicode編碼編碼是是u%sn,ch,u%sn,ch, Integer.toHexString(ch);Integer.toHexString(ch);2021浮點浮點floatfloat和和double double 如果一個數(shù)字文字包括小數(shù)點或指數(shù)部分,或如果一個數(shù)字文字包括小數(shù)點或指數(shù)部分,或者在數(shù)字后帶有字母者在數(shù)字后帶有字母F F或或f f(floatfloat)、)、D D或或d d(doubled

20、ouble),則該數(shù)字文字為浮點。),則該數(shù)字文字為浮點。u 3.14 3.14 一個簡單的浮點值(一個簡單的浮點值(a doublea double)u 4.02E23 4.02E23 一個大浮點值一個大浮點值u 2.718F 2.718F 一個簡單的一個簡單的floatfloat值值u 123.4E+306D 123.4E+306D 一個大的帶冗余一個大的帶冗余D D的的doubledouble值值以下是有關浮點數(shù)類型變量的聲明和初始化:以下是有關浮點數(shù)類型變量的聲明和初始化:u float pi=3.1415926 , score;float pi=3.1415926 , score;u

21、 double weight=123.4E+36D;double weight=123.4E+36D;222.2.5 2.2.5 變量初始化變量初始化八種基本數(shù)據(jù)類型變量的默認值如下:八種基本數(shù)據(jù)類型變量的默認值如下:ubooleanbooleanfalsefalseubytebyte0 0ucharcharu0000u0000,空,空,UnicodeUnicode碼的碼的00000000ushortshort 0 0uintint0 0ulonglong0L0Lufloatfloat0.0f0.0fudoubledouble 0.0 0.0初始化初始化u成員變量自動初始化成員變量自動初始化u

22、局部變量必須在使用之前顯示初始化局部變量必須在使用之前顯示初始化 23課堂練習課堂練習進行下列變量說明進行下列變量說明u初始值為初始值為0 0的的intint變量變量a au初始值為初始值為10001000的的longlong變量變量b bu初始值為初始值為3.43.4的的floatfloat變量變量c cu初始值為初始值為4 4的的charchar變量變量chchu初始值為初始值為truetrue的的booleanboolean變量變量e e24課堂練習課堂練習下面程序的運行結果是什么?下面程序的運行結果是什么?public class Demopublic static void main

23、(String args) int i; System.out.println(i);25課堂練習課堂練習替換下面的代碼段到上述程序,分析現(xiàn)象。替換下面的代碼段到上述程序,分析現(xiàn)象。ufloat f=10.0f;float f=10.0f;udouble d=100.0d;double d=100.0d;uf=d;f=d;uSystem.out.println(f=+f);System.out.println(f=+f);26課堂練習課堂練習u int a=10;int a=10;u char c=a;char c=a;u a=c+a;a=c+a;u System.System.outout.

24、printf(c=%c,a);.printf(c=%c,a);272.2.6 2.2.6 轉(zhuǎn)義字符轉(zhuǎn)義字符 表2-4 其它轉(zhuǎn)義字符轉(zhuǎn)義字符作用Unicode轉(zhuǎn)義字符作用Unicodeuf換頁u”“u0022n換行uu0027r回車u000Db退格u0008t橫向跳格 u000928/ / 程序程序2-22-2:轉(zhuǎn)義字符的應用:轉(zhuǎn)義字符的應用public class EscapeDemo public class EscapeDemo public static void main(String args) public static void main(String args) System.

25、out.println(“ System.out.println(“這是這是u03c0”);u03c0”); System.out.println(“ System.out.println(“下面的數(shù)據(jù)輸出是按照制表位控制的下面的數(shù)據(jù)輸出是按照制表位控制的, ,每每2 2個一行。個一行?!?;); System.out.print(10+“t”+20+“n”+30+“t”+40+“n”); System.out.print(10+“t”+20+“n”+30+“t”+40+“n”); 29課堂練習課堂練習將字符串將字符串”Hello WorldHello World”中添加必要的轉(zhuǎn)義字中添加必要

26、的轉(zhuǎn)義字符,使得輸出該字符串時,直接每行一個詞。符,使得輸出該字符串時,直接每行一個詞。302.2.7 2.2.7 常量常量 字面常量和標識符常量。字面常量和標識符常量。常量用法通常用在開發(fā)中用標識符來表示一個常量用法通常用在開發(fā)中用標識符來表示一個固定值,便于在程序中通過名稱來引用。固定值,便于在程序中通過名稱來引用。 u 聲明同時初始化聲明同時初始化final int MAX_SPEED=200;final int MAX_SPEED=200;u 先聲明,隨后初始化先聲明,隨后初始化final int MAX_SPEED;final int MAX_SPEED;. . . . .MAX_S

27、PEED=200;MAX_SPEED=200;作為一種良好的編碼習慣,常量名的定義一般作為一種良好的編碼習慣,常量名的定義一般均用大寫來表示。均用大寫來表示。 312.2.8 2.2.8 引用類型引用類型除去基本類型之外的所有類型都是引用類型;引用對象的變量除去基本類型之外的所有類型都是引用類型;引用對象的變量就是引用變量。就是引用變量。/下面的例子創(chuàng)建了一個新的類型,如下面的例子創(chuàng)建了一個新的類型,如Card public class Card char suit; String rank; 聲明一個變量聲明一個變量u Card c = new Card(); 訪問成員訪問成員uc.rank

28、 = “K”;322.3 2.3 運算符和表達式運算符和表達式 表達式就是由變量、對象、運算符和方法調(diào)用表達式就是由變量、對象、運算符和方法調(diào)用構成的式子,表達式應該按照構成的式子,表達式應該按照JavaJava語法來構造,語法來構造,才可以被編譯系統(tǒng)理解、執(zhí)行,每個表達式都才可以被編譯系統(tǒng)理解、執(zhí)行,每個表達式都有一個某種類型的結果。有一個某種類型的結果。 u如:如:uint a=0,b=0,max=0;int a=0,b=0,max=0;uumax=ab?a:b;max=ab?a:b;ua+(ab?a:b);a+(ab?a:b);332.3.1 2.3.1 運算符運算符 表2-4 運算符的

29、結合方向Separator () ; , R to L + - + - ! (data type) L to R * / % L to R + - L to R L to R = instanceof L to R = != L to R & L to R L to R | L to R & L to R | R to L ?: R to L = *= /= %= += -= = = &= = |= 34一元運算符即支持前綴形式,也支持后綴形式。一元運算符即支持前綴形式,也支持后綴形式。如:如:uoperator op /operator op /前綴形式前綴形式uop operator /o

30、p operator /后綴形式后綴形式所有的二元運算符都采用中綴表示,運算符在兩所有的二元運算符都采用中綴表示,運算符在兩個操作數(shù)中間。個操作數(shù)中間。uop1 operator op2 /op1 operator op2 /中綴表示中綴表示JavaJava語言中只有一個三元運算符,也采用中綴表語言中只有一個三元運算符,也采用中綴表示。示。 uop1 ? op2 : op3 /op1 ? op2 : op3 /中綴表示中綴表示instanceofinstanceof是是JavaJava編程語言特有的運算符編程語言特有的運算符 352.3.2 2.3.2 算術表達式算術表達式 +加法op1+op

31、25+6-減法op1-op27-2*乘法op1*op23*6/除法op1/op27/2%求余op1%op27%2+自增+op 或 op+a=a+1-自減-op 或 op-a=a-1-取反-opa=-a36自增、自減運算符自增、自減運算符u應用于算數(shù)表達式應用于算數(shù)表達式, ,自增自增( (自減自減) )運算只能應用運算只能應用于整數(shù)類型或于整數(shù)類型或charchar類型數(shù)據(jù)類型數(shù)據(jù)前置與后置的區(qū)別:前置與后置的區(qū)別:u假設假設i = 6i = 6則:則:u表達式表達式(+i)(+i)的值為的值為7 7,運算完畢后,運算完畢后i = 7i = 7u表達式表達式(i+)(i+)的值為的值為6 6,

32、運算完畢后,運算完畢后i = 7i = 737程序程序2 23 3:ArithmeticDemo.javaArithmeticDemo.java根據(jù)根據(jù)JavaJava語言規(guī)范,在進行算術運算中需要注意以下幾個語言規(guī)范,在進行算術運算中需要注意以下幾個問題:問題:u只有整數(shù)類型的數(shù)據(jù)才可以進行取余運算,浮點數(shù)取余無只有整數(shù)類型的數(shù)據(jù)才可以進行取余運算,浮點數(shù)取余無法得出準確的結果。如法得出準確的結果。如10.1%3.310.1%3.3的結果可能為的結果可能為0.200000520.20000052。兩個整數(shù)做除法運算時,結果是截取商數(shù)的整數(shù)部分,小兩個整數(shù)做除法運算時,結果是截取商數(shù)的整數(shù)部分

33、,小數(shù)部分被丟棄。如果需要保留,應該對算術表達式進行強數(shù)部分被丟棄。如果需要保留,應該對算術表達式進行強制類型轉(zhuǎn)換。制類型轉(zhuǎn)換。u1/21/2的結果是的結果是0 0u(float)1/2)(float)1/2)的結果是的結果是0.50.5u(float)(1/2)(float)(1/2)的結果則是的結果則是0 0。 38強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換一種類型就是一些可能的值的集合一種類型就是一些可能的值的集合某些類型比另外一些類型某些類型比另外一些類型“大大”-(-(值更多值更多) )u每一個每一個intint都是一個都是一個longlong,longlong就是較大的類型就是較大的類型u包含子集包

34、含子集longintintlong39強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換(cont.)(cont.)向?qū)挼姆较蚴亲詣拥南驅(qū)挼姆较蚴亲詣拥膗int i=32;/int i=32;/沒有沒有ulong x=32;long x=32;/int to long/int to longulong x=i; /int to long x=i; /int to longlong向窄的方向必須強制說明向窄的方向必須強制說明uint i=32L;/errorint i=32L;/erroruint i=(int)32Lint i=(int)32L;/long to ;/long to intintubyte j=(byt

35、e)i;byte j=(byte)i;類型轉(zhuǎn)換可能丟失信息類型轉(zhuǎn)換可能丟失信息intlongbyteshortfloatdoublecharWidening自動轉(zhuǎn)換強制轉(zhuǎn)換narrowing40強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換u 在賦值的信息可能丟失的地方,編譯器需要程在賦值的信息可能丟失的地方,編譯器需要程序員用類型轉(zhuǎn)換(序員用類型轉(zhuǎn)換(typecasttypecast)的方法確認賦值。)的方法確認賦值。例如,它可以例如,它可以“擠壓擠壓”一個一個longlong值到一個值到一個intint變變量中。顯式轉(zhuǎn)型做法如下:量中。顯式轉(zhuǎn)型做法如下:u long bigValue =99L;long big

36、Value =99L;u int squashed =int squashed =(intint) (bigValuebigValue); ;在上述程序中,期待的目標類型被放置在圓括在上述程序中,期待的目標類型被放置在圓括號中,并被當作表達式的前綴,該表達式必須號中,并被當作表達式的前綴,該表達式必須被更改。一般來講,建議用圓括號將需要轉(zhuǎn)型被更改。一般來講,建議用圓括號將需要轉(zhuǎn)型的全部表達式封閉。否則,轉(zhuǎn)型操作的優(yōu)先級的全部表達式封閉。否則,轉(zhuǎn)型操作的優(yōu)先級可能引起問題。可能引起問題。41算術表達式的結果類型算術表達式的結果類型結果類型 操作數(shù)的類型long操作數(shù)必須是整數(shù)類型,而且至少一個操

37、作數(shù)類型是longint操作數(shù)必須是整數(shù)類型double至少一個操作數(shù)類型是doublefloat至少一個操作數(shù)類型是float ,操作數(shù)不能有類型double42練習題練習題long bigval = 6; long bigval = 6; int smallval = 99L;int smallval = 99L;double z = 12.414Fdouble z = 12.414Ffloat z1 = 12.414;float z1 = 12.414; 下面的代碼段執(zhí)行后下面的代碼段執(zhí)行后uint i = 10;int i = 10;uint n = i+%5;int n = i+%5

38、;ui i和和n n的值分別是多少?的值分別是多少?/6 /6 是一個是一個intint類型,允許類型,允許/99L99L是是longlong類型類型, , 不合法不合法/12.414F12.414F是是floatfloat類型類型, ,允許允許/12.414/12.414是是doubledouble類型類型, ,不合法不合法43設設 int a=1int a=1和和double d=1.0,double d=1.0,寫出下列表達式的結寫出下列表達式的結果果a=46/9a=46/9a=46%9+4a=46%9+4* *4-24-2a=45+43%5a=45+43%5* *(23(23* *3%

39、2)3%2)a=45+1+45a=45+1+45* *50%(-a)50%(-a)d=1.5d=1.5* *3+(+d)3+(+d)d=1.5d=1.5* *3+d+;3+d+;a%=3/a+3a%=3/a+344下列類型轉(zhuǎn)換合法嗎?下列類型轉(zhuǎn)換合法嗎?char c=char c=A A; ;i= (int)c;i= (int)c;boolean b=true;boolean b=true;i=(int)b;i=(int)b;float f=1000.34f;float f=1000.34f;int i=(int)f;int i=(int)f;double d=1000.34;double d

40、=1000.34;i= (int)d;i= (int)d;int i=1000;int i=1000;char c=(char)i;char c=(char)i;int i=1000;int i=1000;boolean b=(boolean)iboolean b=(boolean)i4.3關系和條件關系和條件( (邏輯邏輯) )表達式表達式運算符 運算用法功能大于op1op2假如op1大于op2,返回結果是true=大于等于op1=op2假如op1大于等于op2,返回結果是true小于op1op2假如op1小于op2,返回結果是true=小于等于op1=op2假如op1小于

41、等于op2,返回結果是true=等于op1=op2假如op1和op2數(shù)值相等,返回結果是true!=不等于op1!=op2假如op1和op2數(shù)值不相等,返回結果是true46程序:程序:RelationalDemo.javaRelationalDemo.java注意:注意:u不存在連續(xù)比較,如不存在連續(xù)比較,如2 i 52 i 2 & i 2 & i 5u不要在浮點類型變量之間進行相等比較,可以不要在浮點類型變量之間進行相等比較,可以采用如下形式來判斷相等:采用如下形式來判斷相等:f1 f1 f2 1e-4f2 1x 1)&(x+ 1)&(x+ 1)u(x 1x 1)&(x+ 1)&(x+ 1

42、)492.3.4 2.3.4 移位和位操作運算移位和位操作運算整數(shù)在計算機內(nèi)存中的二進制表示整數(shù)在計算機內(nèi)存中的二進制表示u整數(shù)整數(shù)3030的二進制表示就是的二進制表示就是u0000 0000 0000 0000 0000 0000 0001 1110 0000 0000 0000 0000 0000 0000 0001 1110 50移位和位操作運算移位和位操作運算(c.)(c.)JavaJava編程語言支持整數(shù)數(shù)據(jù)類型的位運算,它們編程語言支持整數(shù)數(shù)據(jù)類型的位運算,它們的運算符的運算符u NotNotu And And & &u XOR XOR u OR OR 10110000 = 101

43、10000 = 01001111 01001111 00001101 = 00101101 & 0100111100001101 = 00101101 & 0100111101100010 = 00101101 0100111101100010 = 00101101 0100111101101111 = 00101101 | 0100111101101111 = 00101101 | 0100111151移位和位操作運算移位和位操作運算(c.)(c.)位運算符位運算符10110000 = 10110000 = 01001111 01001111 00001101 = 00101101 & 01

44、00111100001101 = 00101101 & 0100111101100010 = 00101101 0100111101100010 = 00101101 0100111101101111 = 00101101 | 0100111101101111 = 00101101 | 01001111運算符 運算用法功能&位與op1 & op2按對應位AND |位或op1 | op2按對應位OR位異或op1 op2按對應位XOR求補op求對應位的補碼52移位和位操作運算移位和位操作運算(c.) (c.) 運算符運算用法功能左移op1 右移op1 op2向右移位,從左邊傳遞符號位(最高位)右移

45、op1 op2向右移位,從左邊補0整數(shù)整數(shù)30的二進制表示就是的二進制表示就是00000000000000000000000000011110 53移位和位操作運算移位和位操作運算(c.)(c.)運算符運算符進行算術或符號右移位。移位的結果進行算術或符號右移位。移位的結果是第一個操作數(shù)被是第一個操作數(shù)被2 2的冪來除,而指數(shù)的值是的冪來除,而指數(shù)的值是由第二個數(shù)給出的。例如:由第二個數(shù)給出的。例如:128 1 128 1 等價于等價于 128/2128/21 1 = 64 = 64256 4 256 4 等價于等價于 256/2256/24 4 = 16 = 16-256 4 -256 4 等

46、價于等價于 -256/2-256/24 4 = -16 = -1654移位和位操作運算移位和位操作運算(c.)(c.)邏輯或非符號右移位運算符邏輯或非符號右移位運算符主要作用于位圖,主要作用于位圖,而不是一個值的算術意義;它總是將零置于最而不是一個值的算術意義;它總是將零置于最重要的位上。例如:重要的位上。例如:1010 . 2 1010 . 2 結果是結果是 111010 .111010 .u在移位的過程中,在移位的過程中, 運算符使符號位被拷貝。運算符使符號位被拷貝。 1010 . 21010 . 2結果是結果是001010 .001010 .55在某些系統(tǒng)中,經(jīng)常使用在某些系統(tǒng)中,經(jīng)常使

47、用& &和和| |處理一些變量,這些變處理一些變量,這些變量中的各個二進制位用作某些種類對象的狀態(tài)指示器,量中的各個二進制位用作某些種類對象的狀態(tài)指示器,例如一個顏色值包含了紅黃蘭三個分量,每個分量范例如一個顏色值包含了紅黃蘭三個分量,每個分量范圍在圍在0 0至至256256,可以定義一個,可以定義一個intint類型的變量類型的變量colorcolor,利,利用它的三個字節(jié)分別表示三個分量的值,如:用它的三個字節(jié)分別表示三個分量的值,如:可以通過如下語句分別獲得三個顏色分量的值可以通過如下語句分別獲得三個顏色分量的值u int color=0 x00F1AD07,red=0,yellow=0

48、,blue=0;int color=0 x00F1AD07,red=0,yellow=0,blue=0;u . .u red=color & 0 x000000FF;red=color & 0 x000000FF;u yellow=color & 0 x0000FF00;yellow=color & 0 x0000FF00;u blue=color & 0 x00FF0000; blue=color & 0 x00FF0000; 562.3.5 2.3.5 賦值運算符賦值運算符 += -= += -= * *= /= %= /= %=&= |= =&= |= = = = = 快捷賦值運算快捷賦

49、值運算 u op = op = 等價于等價于 = = op op 例如:例如:u a += 2 a += 2 等價于等價于 a = a + 2a = a + 2u 要注意的是,快捷運算符的右端操作數(shù)是作為一個整要注意的是,快捷運算符的右端操作數(shù)是作為一個整體參與運算的。體參與運算的。例如:例如:ua a * *= b + 3 = b + 3 等價于等價于 a = a a = a * * ( b + 3 ) ( b + 3 )572.3.6 2.3.6 其它運算符其它運算符運算符運算用法功能?:條件op1 ? op2 : op3如果op1為真,則返回op2的值。否則返回op3的值.成員參見面向?qū)?/p>

50、象部分的成員訪問 數(shù)組聲明、創(chuàng)建數(shù)組以及訪問數(shù)組元素( )括號改變表達式先后運算順序強制類型轉(zhuǎn)換定界一個用逗號隔開的參數(shù)列表new創(chuàng)建創(chuàng)建對象或者數(shù)組instanceof實例op1 instanceof op2 如果op1是op2的實例,返回true582.3.6 2.3.6 其它運算符條件運算符其它運算符條件運算符使用方法:使用方法:boolean-exp boolean-exp ? ? exp1 exp1 : : exp2exp2u如果表達式如果表達式boolean-expboolean-exp結果為真結果為真(truetrue),則返回),則返回exp1exp1的值,否則的值,否則返回返

51、回exp2exp2的值的值u唯一的一個三元運算符唯一的一個三元運算符注意:如果注意:如果boolean-expboolean-exp為真為真(truetrue),則不計算),則不計算exp2exp2,例如:,例如:uint i = 7;int i = 7;uint j = i 6 ? i-1 : i+;int j = i 6 ? i-1 : i+;uSystem.out.println(i+System.out.println(i+”, , ”+j);+j);輸出輸出7 7,6 659public static void main(String args) int c=8; switch (c

52、10?1:c25?2:cy 0 x y 065課堂練習課堂練習下面表達式的含義是什么?下面表達式的含義是什么?ui30 & i%10!=0i30 & i%10!=0通常使用通常使用()()改變優(yōu)先級并增加可讀性改變優(yōu)先級并增加可讀性u(i30) & (i%10)!=0)(i30) & (i%10)!=0)有半徑有半徑r r1.51.5,寫出求圓周長、圓面積的表達,寫出求圓周長、圓面積的表達式式有半徑有半徑r r1.51.5,圓柱高,圓柱高h h3 3,寫出求圓柱體積,寫出求圓柱體積表達式表達式2.32.3字符串字符串字符串是引用類型。字符串是引用類型。u字符串并不是一個基本類型,而是作為一個字

53、符串并不是一個基本類型,而是作為一個StringString類類型的對象出現(xiàn)的型的對象出現(xiàn)的uStringString類是類是JDKJDK提供的一個標準類,位于提供的一個標準類,位于java.langjava.lang包包下,專門用于字符串處理。下,專門用于字符串處理。字符串常量字符串常量u 字符串常量是一個用雙引號字符串常量是一個用雙引號()()括起來的字符序列。括起來的字符序列。如:如:This is a string literal This is a string literal u另外,字符串常量中可以包含一些不能從鍵盤上輸入另外,字符串常量中可以包含一些不能從鍵盤上輸入的字符,這涉

54、及到字符轉(zhuǎn)義。例如:的字符,這涉及到字符轉(zhuǎn)義。例如:This is a This is a u03c0 u03c0 實際上就是實際上就是 This is a This is a 字符串對象字符串對象 u字符串常量和字符串對象是兩個不同的概念字符串常量和字符串對象是兩個不同的概念u字符串常量在內(nèi)存中由編譯器分配到特定的區(qū)域,保存有字字符串常量在內(nèi)存中由編譯器分配到特定的區(qū)域,保存有字符序列。符序列。u字符串對象只是一個引用,不能通過字符串對象對常量進行字符串對象只是一個引用,不能通過字符串對象對常量進行修改修改 String str=This is a string literal;str=Th

55、is is other string literal;聲明字符串對象聲明字符串對象String str; /聲明了一個未初始化的變量聲明了一個未初始化的變量String str=null; /初始化為空值初始化為空值String str=hello; /聲明時同時進行初始化聲明時同時進行初始化String str=new String(hello);.3字符串運算字符串運算字符串連接字符串連接hello + namehello + 張華張華string is +5+5 等價于等價于string is 555+5+ is a string 等價于等價于10 is a string

56、字符串的串值比較字符串的串值比較 u字符串之間的比較主要有兩種情況,值比較和字符串之間的比較主要有兩種情況,值比較和對象比較。對象比較。u值比較主要比較兩個字符串的字符序列。值比較主要比較兩個字符串的字符序列。 / 程序程序2-5:字符串的比較:字符串的比較public class StringDemo public static void main(String args) String s1=Morning!;String s2=morning!;boolean eq=s1.equals(s2);System.out.println(Morning.equals(morning)結果是結果

57、是+eq);int res=pareTo(s2);System.out.println(MpareTo(morning)結果是結果是+res);2.42.4基于文本的輸入基于文本的輸入/ /輸出輸出1.1. 利用利用ScannerScanner類實現(xiàn)鍵盤輸入。類實現(xiàn)鍵盤輸入。u首先,創(chuàng)建首先,創(chuàng)建ScannerScanner的一個對象,掃描數(shù)據(jù)來的一個對象,掃描數(shù)據(jù)來自鍵盤輸入。自鍵盤輸入。uScanner sc=new Scanner(System.in);Scanner sc=new Scanner(System.in);u其次,通過調(diào)用掃描對象的方法實現(xiàn)輸入。其次,通過調(diào)用掃描對象的方法

58、實現(xiàn)輸入。uint num=sc.nextInt();int num=sc.nextInt();u最后,調(diào)用對象的最后,調(diào)用對象的close()close()方法關閉輸入。方法關閉輸入。usc.close();sc.close();/ 程序程序2-6:利用:利用Scanner類實現(xiàn)鍵盤輸入類實現(xiàn)鍵盤輸入import java.util.Scanner;public class ScannerDemo public static void main(String args) Scanner sc=new Scanner(System.in);System.out.println(請輸入一個整數(shù),

59、敲回車結束請輸入一個整數(shù),敲回車結束);int num=sc.nextInt();System.out.println(你輸入了一個:你輸入了一個:+num);System.out.println(請輸入一個字符串,敲回車結束請輸入一個字符串,敲回車結束);String s=sc.nextLine();System.out.println(你輸入了字符串:你輸入了字符串:+s);sc.close(); 2.2.利用利用ConsoleConsole類實現(xiàn)鍵盤輸入類實現(xiàn)鍵盤輸入 u利用利用ConsoleConsole對象可訪問與當前對象可訪問與當前 Java Java 虛擬機虛擬機關聯(lián)的基于字符的

60、控制臺設備,主要提供了基關聯(lián)的基于字符的控制臺設備,主要提供了基于控制臺的格式化讀取及密碼讀取功能于控制臺的格式化讀取及密碼讀取功能 /程序程序2-7:利用:利用Console類實現(xiàn)鍵盤輸入類實現(xiàn)鍵盤輸入import java.io.Console;public class ConsoleDemo public static void main(String args) Console console =System.console(); / 讀取整行字符讀取整行字符 String user = new String(console.readLine(Enter username:); Str

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論