day變量關鍵字_第1頁
day變量關鍵字_第2頁
day變量關鍵字_第3頁
day變量關鍵字_第4頁
day變量關鍵字_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、1 關鍵字1.1 關鍵字的概述Java的關鍵字對java的編譯器有特殊的意義,他們用來表示一種數據類型,或者表示程序的結構等,關鍵字不能用作變量名、方法名、類名、包名。1.2 常見的關鍵字備注:不必死記硬背,如果使用關鍵字作為標識符,編譯器能提示錯誤。goto 是java的保留關鍵字,意思是java并沒有使用goto,以后是否使用未定。2 標識符2.1 什么是標識符就是程序員在定義java程序時,自定義的一些名字,例如helloworld 程序里關鍵字class 后跟的Demo,就是我們定義的類名。類名就屬于標識符的一種。標識符除了應用在類名上,還可以用在變量、函數名、包名上。(要求同學們先記

2、住,以后會詳細見到這些)。2.2 標識符必須遵循以下規則1. 標識符由26個英文字符大小寫(azAZ)、數字(09)、下劃線(_)和美元符號($)組成。2. 不能以數字開頭,不能是關鍵字3. 嚴格區分大小寫4. 標識符的可以為任意長度2.3 標識符案例2.3.1 合法的標識符ComputeArea,radius,area $itcast _itcast gz_itcast注意:由于Java嚴格區分大小寫,ITCAST 和itcast是完全不同的標識符2.3.2 非法標識符1. class (關鍵字)2. 100java(不能以數字開頭)3. Hello java (空格不是組成標識符的元素)2

3、.3.3 Java中的標識符命名規范1. 包名多個單詞組成時所有字母小寫(例:package com.itcast) 2. 類名和接口多個單詞組成時所有單詞的首字母大寫(例:HelloWorld)3. 變量名和函數名多個單詞組成時第一個單詞首字母小寫,其他單詞首字母大寫(例:lastAccessTime、getTime)。4. 常量名多個單詞組成時,字母全部大寫,多個單詞之間使用_分隔(例:INTEGER_CACHE)注意:只是為了增加規范性、可讀性而做的一種約定,標識符在定義的時候最 好見名知意,提高代碼閱讀性。3 3.注釋3.1 注釋的作用通過注釋提高程序的可讀性,是java程序的條理更加

4、清晰,易于區分代碼行與注釋行。另外通常在程序開頭加入作者,時間,版本,要實現的功能等內容注釋,方便后來的維護以及程序員的交流。3.2 注釋的種類1.單行注釋(line comment)用/表示,編譯器看到/會忽略該行/后的所文本2.多行注釋(block comment)用/*/表示,編譯器看到/*時會搜索接下來的*/,忽略掉/*/之間的文本。3文檔注釋用/* */表示,是java特有的注釋,其中注釋內容可以被JDK提供的工具 javadoc 所解析,生成一套以網頁文件形式體現的該程序的說明文檔。public static void main(String args) / 第一步: 獲取半徑?并

5、將半徑保存在程序中double radius = 5;/ 第二步:計算面積,并將面積保存在程序中/*double area = radius * radius * 3.1415;/ 第三步:在控制臺現實面積System.out.println("半徑為" + radius + "的圓的面積為:" + area);*/ 注意:多行注釋中可以嵌套單行注釋,多行注釋不能嵌套多行注釋。錯誤! class Demo /* 這是主函數,是程序的入口 它的出現可以保證程序的獨立運行 /* 注意:多行注釋嵌套多行注釋是不行的。 */ */ public static v

6、oid main(String args)/這是輸出語句用于將括號內的數據打印到控制臺。System.out.println("hello java");文檔注釋 (編寫軟件說明書)1. 需要使用sum給我們提供的javadoc工具生成一個html的說明文檔。2. 只能抽取public的屬性或者方法內容。格式:Javadoc d 指定存儲文檔的路徑 -version author(可選) 目標文件 author 作者version 版本param 方法的參數return 返回值注釋的使用細節:三種注釋可以出現在程序的任何地方,但是不推薦找任意位置。1. 編程習慣:1. 給那

7、條語句進行說明,注釋應該寫在該語句的旁邊。2. 單行注釋一般寫在語句的后面多行注釋和文檔注釋一般寫在語句的上面注意:文檔注釋只能出現在類、屬性、方法的上面。2 注釋的嵌套1.單行注釋可以在單行注釋里面。2.多行注釋不能嵌套在多行注釋里面。3 注釋的調試作用:1. 可以作為初學者的調試方式。2. 可以幫組初學者確定代碼的錯誤之處。4 常量 4.1 常量的概述常量是指在程序運行過程中其值不能改變的量。4.2 常量類型Java中常量的分類: 整數常量 : 所有整數 小數常量 : 所有小數 布爾常量 : 只有true和false 字符常量 :使用引起來的單個字符 字符串常量 :使用“”引起來的字符序列

8、,“” 、“a” 、” ” null常量 : 只有一個值null3.char 類型char類型表示的是單個字符類型,任何數據使用單引號括起來的都是表示字符。字符只能有一個字符,比如:普通的老百姓穿上軍裝就是軍人。 注意:特殊字符的轉義序列:轉義字符轉義字符的概述:特殊字符使用”把其轉化成字符的本身輸出,那么使用”的字符稱作為轉移字符。需求:使用輸出語句,打印出帶引號的信息例如輸出。System.out.println("teacher said"java is fun"");編譯是無法正常通過的。語法有錯誤,編譯器讀到第二個引號就認為是字符串的結束,剩余

9、的不知道怎么處理。如何解決這個問題:java中使用轉義字符來表示特殊的字符。一個轉義字符以反斜杠()開始。 問題:想要打印帶引號的字符串怎么辦,就可以使用反斜杠()后跟字符,這個反斜杠就是轉義字符。轉義字符名稱UnicodebBackspace (退格鍵)u0008tTab (Tab鍵盤)u0009nLinefeed (換行)u000ArCarriage Return(回車)u000DBackslash (反斜杠)u005C'Single Quote (單引號)u0027"Double Quote (雙引號)u0022r 表示接受鍵盤輸入,相當于按下回車。n 表示換行。t 制

10、表符,相當于Table鍵b 退格鍵,相當于Back Space 單引號 雙引號 表示一個斜跨上述問問題解決:System.out.println("teacher said"java is fun"");注意:換行符就是另起一行,回車符就是回到一行的開頭,所以我們平時編寫文件的回車符應該確切來說叫做回車換行符4. boolean 類型boolean由數學家Geogore Boole 發明boolean 類型用來存儲布爾值,在java中布爾值只有2個,true和false。boolean flag=true;flag=false;Java中這8中基本數據類

11、型都是小寫的。5 進制的轉換進制:進制是一種記數方式 ,可以用有限的數字符號代表所有的數值。由特定的數值組成。5.1 整型的表現形式1. 十進制: 都是以0-9這九個數字組成,不能以0開頭。2. 二進制: 由0和1兩個數字組成。3. 八進制: 由0-7數字組成,為了區分與其他進制的數字區別,開頭都是以0開始。4. 十六進制:由0-9和A-F組成。為了區分于其他數字的區別,開頭都是以ox開始。5.2 進制的由來 幾乎每個民族最早都使用都十進制計數法,這是因為人類計數時自然而然地首先使用的是十個手指。 但是這不等于說只有十進制計數法一種計數方法。例如,世界各國在計算年月日時不約而同地使用“十二進制

12、”12個月為一年又如:我國過去16兩才算為一斤,這就是“十六進計數法”,一個星期七天,這個就是”七進制計算法”。 計算機是由邏輯電路組成,邏輯電路通常只有兩個狀態,開關的接通與斷開,這兩種狀態正好可以用“1”和“0”表示。 如果要在計算機里面保存十進制的 十進制與二進制之間的轉換十進制轉二進制的轉換原理:除以2,反向取余數,直到商為0終止。二進制轉十進制的轉換原理:就是用二進制的每一個乘以2的n次方,n從0開始,每次遞增1。然后得出來的每個數相加存在問題:書寫特別長,不方便記憶。5.2.2 十進制與八進制之間轉換1. 八進制的由來 。2. 八進制的特點由數字0-7組成。

13、即使用三個開關表示一個八進制數。 10進制轉換8進制原理:就是用十進制的數字不斷除于8,取余數。八進制轉十進制原理: 用把進制的數不斷乘以8的n次方,n從0開始,每次遞增1。除了這種方法之外,我們還有另一種方法,因為三個開關表示一個八進制數。十進制與十六進制之間的轉換十六進制特點:由09 a(10) b(11) c(12) d(13) e(14) f(15)組成。十進制轉十六進制原理:就是不斷除以16,取余數代碼體現:人使用的十進制 、 計算機底層處理的數據是二進制、八進制、十六進制,那么如果給計算機輸入不同的進制數據呢?Java 二進制,八進制,十進制,十六進制轉換A、十進制轉換其

14、他十進制轉成二進制 Integer.toBinaryString(int i) 十進制轉成八進制 Integer.toOctalString(int i) 十進制轉成十六進制: Integer.toHexString(int i)B、其他轉換十進制二進制轉十進制 Integer.valueOf("1010",2).toString()八進制轉成十進制 Integer.valueOf("125",8).toString() 十六進制轉成十進制 Integer.valu

15、eOf("ABCDEF",16).toString() private static void test()    System.out.println("十轉二:"+Integer.toBinaryString(120); /十轉二:1111000    System.out.println("十轉八:"+Integer.toOctalString(120); /十轉八:170   &

16、#160;System.out.println("十轉十六:"+Integer.toHexString(120); /十轉十六:78    System.out.println("二轉十:"+Integer.valueOf("1010",2); /二轉十:10    System.out.println("八轉十:"+Integer.valueOf("125",8); /八轉十:85   

17、; System.out.println("十六轉十:"+Integer.valueOf("ABCDEF",16); /十六轉十:11259375<br>輸出結果:6 變量6.1 變量的概述1. 變量的概述用于存儲可變數據的容器。2. 變量存在的意義計算機主要用于處理生活中的數據,由于生活中存在大量的可變數據,那么計算機就必須具備存儲可變數據的能力。比如: 1.時間每一秒都在發生變化,根據不同的時間要有不同的處理方式。 2.氣象站會根據溫度發布天氣預報信號。3. 變量的特點正常情況下牛奶盒裝的都是牛奶,而且會根據牛奶的多少去決定要多

18、大的容量的牛奶盒,A和B兩位同學同時把牛奶盒放進籃子里面,但是需要區分兩個牛奶盒是誰的,都需要在牛奶盒上做一個標志。特點:1. 必須要有大小2. 存儲一定格式的可變數據3. 必須要有名字6.2 變量的聲明根據上述變量的特點,所以我們聲明一個變量的時候需要確定變量的大小,類型、名字三個特點:錯誤: 1024byte temp = 1000000;錯誤原因,java有自己的變量類型。 6.2.1 變量的數據類型1. 整型byte 代表一個字節的大小 8bit 2(8) -128127 256 short 代表兩個字節的大小 16bit 2(16) -2(15)2(15)-1int 代表四個字節的大

19、小 32bit 2(32) -2(31)2(31)-1long 代表八個字節的大小 64bit 2(64) -2(63)2(63)-1如果一個數值沒有采取特殊的處理,那么該整數默認的類型是int。可以使用數值后面添加L或小寫L改變默認的整數類型。2. 浮點型 float 代表四個字節的大小 32bit double 代表八個字節的大小 64bitjava程序中所有的小數默認的類型是double類型,所以需要使用特殊的符號改變默認的小數類型。3. 字符型 char 代表兩個字節的大小 16bit 2(16) 原理:將字符映射為碼表中對應的十進制數據加以存儲。4. 布爾型 boolean 占一個字

20、節。只有true與false兩個值。6.2.2 變量的聲明格式: 數據類型 變量名字1 , 變量名字2 ,變量名字n ,;案例:int i 聲明了一個整形的變量。double d 聲明了一個double數據類型的變量 float f 聲明了一個float數據類型的變量。備注:變量名的首字母都一般都是以小寫字母開始。6.2.3 變量的初始化6.2.4 變量的初始化方式初始化方式1: 數據類型 變量名字 = 數值。初始化方式2: 數據類型 變量名字 , 變量名字 = 數值。案例: 方式1: double d = 3.14; 方式2: double d  d = 3.14 7 j

21、ava數據類型的轉換Java中可以進行不同數據類型的加減乘除運算嗎?是可以的。在算術運算符中已經體驗過如果兩個整數(int)相除會去掉小數部分。如果需要保留小數部分,可以讓除數或者被除數變為double類型的(5變為5.0)。其實Java是自動的將int的那個數變為了double類型了也就是Java自動的將整數變為了浮點數。例如5/2.0 其實是5.0/2.01、 自動類型轉換(也叫隱式類型轉換)可以將一個數賦值給更大數值范圍的變量,例如可以經byte 變量賦值給short變量可以將short變量賦值給int變量可以將int變量賦值給long變量。Java內部其實做了工作就是自動將數值進行了類

22、型提升,就叫做自動類型轉換(也叫隱式類型轉換)byte b = 1; /00000001short s = b; /00000000 00000001int i = s;long lon = i;double d = lon; /1.0 自動類型轉換(也叫隱式類型轉換)要實現自動類型的轉換,需要滿足兩個條件,第一兩種類型彼此兼容,第二目標類型取值范圍必須大于源類型。所有的數字類型,包括整形和浮點型彼此都可以進行轉換。例如:byte b=100;int x=b;System.out.println(x);/程序把b結果自動轉換為int類型。2、 強制類型轉換(也叫顯式類型轉換)不可以將一個數值賦

23、給范圍更小數值范圍的變量,除非進行類型轉換。byte b = 100;b = b + 2;System.out.println(b);上述例子發生了什么,發生了類型轉換。b+2 遇到了加法運算,2默認是int類型,byte類型b變量存儲的值自動類型提升為了int類型。執行完加法運算后的結果就是int類型,想要將int的類型值放入到byte類型變量b中,無法放入,編譯報錯。byte b=1;b=(byte)(b+2);當兩種類型彼此不兼容,或者目標類型取值范圍小于源類型(目標是byte源是int)無法自動轉換,此時就需要進行強制類型轉換。強制類型轉換需要注意: 損失精度!int a=128;by

24、te b=(byte)a;System.out.println(b);/-128/* * 此時的強轉已經造成了數值的不準確*/ int 00000000000000000000000010000000 10000000 byte 再次分析此行代碼byte b = 100;b = b + 2; System.out.println(b); 編譯:提示如下錯誤。 3、類型轉換的原理 可以把byte 理解為1兩的碗,short 2兩的碗,int 4兩的碗,long 8兩的碗。1兩碗的滿碗酒可以倒入 2兩 4兩 8兩的碗中。但是 4兩碗的酒倒入1兩碗的酒就有一些問題。1、 什么時候要用強制類型轉換 比

25、如小數部分只想保留整數部分. 一定要清楚要轉換的數據在轉換后數據的范圍內否則會損失精度.public static void main(String args) byte b = 100;b = (byte) (b + 2); System.out.println(b); / 102 /舍棄小數部分 double d=5.5;int num=(int)d; 2、 表達式的數據類型自動提升算術表達式,邏輯表達式所有的byte型、short型和char的值將被提升到int型。如果一個操作數是long型,計算結果就是long型;如果一個操作數是float型,計算結果就是float型;如果一個操作數是

26、double型,計算結果就是double型。分析 System.out.println(a+1)結果?自動類型提升 byte b = 3;int x = 4;x = x + b;/ b會自動提升為int 類型參與運算。System.out.println(x);/ 7強制類型轉換 byte b = 2;/* * 強制類型轉換,強制將b+2強制轉換為byte類型,再賦值給b */b = (byte) (b + 2); System.out.println(b);/ 4思考1byte b=126;問:既然數據默認的有數據類型,那么126 默認是int類型的,為什么存儲到byte類型時不會報錯呢。

27、126 是常量java在編譯時期會檢查該常量(每個常量)是否超出byte類型的范圍。如果沒有可以賦值。思考2:byte b=128;能否正常的編譯和運行。該語句會出現編譯錯誤,128超出了byte變量的存儲范圍,所以出現編譯錯誤。思考2byte b1=3,b2=4,b;b=b1+b2;b=3+4;哪一句編譯失敗?為什么?b =3+4, 3和4都是常量,所以java在編譯時期會檢查該常量(每個常量)是否超出byte類型的范圍。如果沒有可以賦值。例如b=128+1 就無法編譯通過。b=127+1;也是無法通過。b =b1+b2 不可以,因為b1 和b2 是變量,表達式求值時,變量值會自動提升為in

28、t型,表達式結果也就成了int型,這是要賦值給byte型的b,必須進行強制類型轉換了。6、System.out.println(a+1)結果美國人為了讓計算機識別他們生活中的文字,讓二進制表示生活中的文字.所以一個字母代表了一個二進制.,二進制也有十進制的表現形式.,把生活中的字母都用數字來標識,例如97 代表a ,98 代表 b。打印a就把a作為輸出顯示,沒有疑問。但是 a+1 有加號涉及到了運算。根據java自動類型提升規則,同樣道理 char 提升為int 。就把a代表的數字體現了出來。a 表示的是97 97+1就是98; 那么 想要查看98 表示的char 是什么 怎么實現呢 ?就要用

29、到剛才介紹的強制類型轉換了 System.out.println(char(a+1);就取到了98 在ASCII碼表中表示的字符。大寫A 和小寫a 在 ASCII有不同的表現。還有一個概念字符1 在ASCII中 不是數字 1,可以運行代碼查看,到此就可以明白了char 類型,char類型也是可以參與運算的,為什么可以參與運算呢。因為字符在ASCII表中都有對應的數字體現。所有的計算機兼容ASCII。 System.out.println('a'+1); /98System.out.println(char)('a'+1); /b補充問題:int i='a

30、'+'b'System.out.println(i);/結果?System.out.println("hello"+'j'); /結果?總結:所有數值運算符都可以用在char型數據上,如果另一個操作數是一個數字或者字符,那么char會自動提升為int型,如果另一個操作數是字符串,那么字符就會和字符串相連。8 java運算符8.1.算術運算符正負號(+,-) 除法%取模 求余數 取模的正負取決與被除數:1 自增(+)前自增:先自增完畢,再運算整個表達式,語句分號前面的都是運算表達式;后自增,先運算完整個表達式(分號前面的都是表達式),再

31、進行自增; 備注:參與自增運算的操作數據每次會加1.結論:如果運算符在變量的前面,則該變量自增1或者自減1,然后返回的是變量的新值,如果運算符在變量的后面,則變量也會自增或者自減1,但是返回的是變量原來的值。+在前就是先運算,再取值,+在后就是先取值,再運算。自增自減運算符案例:完成如下運算: 一;int i = 10; int newNum = 10 * i+;System.out.println(newNum);/? 二: int i = 10; int newNum = 10 * +i;/?System.out.println(newNum); /?一可以理解為int i = 10;in

32、t newNum = 10 * i;i = i + 1;二可以理解為 int i = 10;i = i + 1;int newNum = 10 * i; 練習:1. 使用程序判斷一個整數是偶數還是奇數2. 使用程序判斷假設今天是星期4,那么問10天后的今天是星期幾?3. 將數值表達式使用java程序翻譯,并通過程序求出運算結果其中int x=1;int y=2,int a=3,int b=4,int c=5;案例一:public static void main(String args) / 判斷一個整數一奇數還是偶數int x = -100;/ 奇數是,1,3,5.偶數是2,4,6.顯然整數

33、除2能整除,也就%(取模)結果為0就是偶數。int result = x % 2;System.out.println(result);/ 使用判斷語句進行判斷。if (result = 0) System.out.println(x + "是偶數"); else System.out.println(x + "是奇數");方案二 使用判斷該數結果是否是奇數。(但是該算法有問題,如果被判斷的整數為負數是否有效?)public static void main(String args) / 判斷一個整數一奇數還是偶數int x = 1;/ 奇數是,1,3,

34、5.偶數是2,4,6.顯然奇數%的結果為1.int result = x % 2;System.out.println(result);/ 使用判斷語句進行判斷。if (result = 1) System.out.println(x + "是奇數"); else System.out.println(x + "是偶數");改進public static void main(String args) / 判斷一個整數一奇數還是偶數int x = -1;/ 奇數是,1,3,5.偶數是2,4,6.顯然奇數%的結果為1.int result = x % 2;S

35、ystem.out.println(result);/ 使用判斷語句進行判斷。if (result != 0) System.out.println(x + "是奇數"); else System.out.println(x + "是偶數");案例三:判斷星期public static void main(String args) / 設定今天是星期1,用int 1表示星期一,0表示星期天int today = 1;/ 十天后是星期幾?,一個星期是7天,7天之后又是星期1,可以用?int future = (today+10) % 7;if (futur

36、e = 0) System.out.println("10天后是星期天"); else System.out.println("10天后是星期:" + future);案例4:int x = 1;int y = 2;int a = 3;int b = 4;int c = 5;int result = (3 + 4 * x) / 5 - 10 * (y - 5) * (a + b + c) / x + 9* (4 / x + (9 + x) / y);System.out.println(result); / 4428.1 賦值運算符= , +=, -=,

37、 *=, /=, %=運算符運算范例結果=賦值a=3,b=2a=3,b=2+=加等于a=3,b=3;a+=b;a=5,b=2;-=減等于a=3,b=2,a-=b;a=1,b=2;*=乘等于a=3,b=2,a*=b;a=6,b=2/=除等于a=3,b=2,a/=b;a=1,b=2;%=模等于a=3,b=2,a%=b;a=1,b=2a+=b 可以想象成 a=a+b; 變量聲明完了之后,可以使用賦值語句(assignment statement)給變量賦一個值,Java中使用等號(=)作為基本的賦值運算符(assignment operator),格式如下:variable = expression

38、;變量 = 表達式;變量我們已經知道如何聲明,表達式具體如何定義?表達式的定義:表達式涉及到值(常量),變量和通過運算符計算出的值,以及他們組合在一起計算出的新值。x =y+1;例如:public static void main(String args) int x = 1; / 聲明int變量x, 賦值1給變量xint y = 0; / 聲明int變量y, 賦值0給變量ydouble area; / 聲明double變量areadouble radius = 1.0; / 聲明double變量radius,并賦值1.0給變量radiusx = 5 * (3 / 2) + 3 * 2; /

39、將=右半部分表達式的計算結果賦值給變量xx = y + 1; / 將變量y和1的求和的值賦值給變量xarea = radius * radius * 3.14159; / 將計算面積的值賦值給變量area賦值運算符小問題問題1:int x;Syst2intln(x = 1);如何理解?答:等價于x=1;System.out.println(x);注意:不能 1=x,變量名必須在賦值運算符的左邊。問題二:int x;int y;int z;x = y = z = 100; 如何理解?答:等價于int x;int y;int z;z = 100;y = z;x = y;問題三:short s1 =

40、 1; s1= s1+1; s1+=1;問:s1= s1+1; s1+=1; 與有什么不同?對于short s1 = 1; s1 = s1 + 1; 由于s1+1運算時會自動提升表達式的類型,所以結果是int型,再賦值給short類型s1時,編譯器將報告需要強制轉換類型的錯誤。對于short s1 = 1; s1 += 1;由于 += 是java語言規定的運算符,java編譯器會對它進行特殊處理,因此可以正確編譯。8.2 比較運算符如何比較兩個值?使用比較運算符 3和5誰大,在java中如何比較?比較運算符比較的兩邊操作數,結果都是boolean的,只有true和false兩種結果。運算符運算

41、例子結果=相等于4= =3false!=不等于4!= 3true<小于4 < 3flase>大于 4>3true<=小于等于4<=3false>=大于等于4>=3trueInstanceof檢查是否是類的對象"hello"instanceof Stringtrue注意的細節:1.使用比較運算符的時候,要求兩種數據類型必須一致。 byte、short、char 會自動提升至int。8.3 邏輯運算符什么是邏輯運算符?連接比較運算符的符號稱之為邏輯運算符。那么為什么要連接比較運算符? 舉例:當你去公司應聘,招聘要求,男性(判斷為真

42、),并且開發經驗1年(判斷為假)那么,我們還適合去面試嗎,不能,因為只滿足了一項,總體是不滿足的(總體結果為假)。邏輯運算符用于對boolean型結果的表達式進行運算,運算的結果都是boolean型。我們的比較運算符只能進行一次判斷,對于對此判斷無能為力,那么邏輯運算符就可以經將較運算符連接起來。邏輯運算符用于連接布爾型表達式,在Java中不可以寫成3<x<6,應該寫成x>3 & x<6 。“&”和“&&”的區別:單與時,左邊無論真假,右邊都進行運算;雙與時,如果左邊為真,右邊參與運算,如果左邊為假,那么右邊不參與運算。“|”和“|”的區

43、別同理,雙或時,左邊為真右邊不參與運算。“ ”異或與“|”或的不同之處是:當左右都為true時,結果為false。& 與 | 或 異或 ! 非 1、& 與true & true = true ; false & true= false; true & false = false; false & false= false; 總結 & 符號特點 & : 只要兩邊的boolean 表達式結果,有一個false.那么結果就是false只有兩邊都為true ,將結果為true.2、| 或true | true =true; ture |

44、false =true; false | true =true; false | false =flase;總結 | : 兩邊只要有一個為真結果就為真,當兩邊同為假時結果才為假.3、 異或true true =false; ture false =true; false true= true; false false=flase; : 兩邊相同結果是false 兩邊不同結果是true;4、! 非!true = false!false= true5、&& 短路研究發現,&運算只有兩邊全為真的時候,結果才為真,那么當左邊為假的時候就沒有必要在進行判斷,&&就

45、產生了。int a =4;a >3 && a< 6; a >3 & a< 6 ;在這種情況下世沒有區別的如果:a =2a >3 & a< 6 2大于 3 為假, 接著運算 2 小于6 為真,總的結果為假a >3 && a< 6; 此時a 不大于3 結果為false 右邊不運算了.即短路.所以&& 比& 效率稍微高了一點.public static void main(String args) int x = 0;int y = 1;if (x = 0 && y

46、 = 1) System.out.println(x + y);&& (短路與雙與)短路與和單與符號的相同與不同點:相同點: 短路與和單與運算 的結果是一樣的。不同點: 使用短路與的時候,如果左邊的布爾表達式為false,則不會在運算右邊的布爾表達式,從而提高了效率。使用單與的時候,即使發現左邊的布爾表達式為false,還是會運算右邊的布爾表達式的。只有左邊的布爾表達式為false時,雙與的效率才要高于單與的.| (短路或雙或)短路或與單或的相同點與不同點:相同點:運算的結果是一致 的。不同點:使用短路或的時候,當發現左邊的布爾表達式為true時,則不會運算右邊的布爾表達式。使

47、用單或的時候 發現左邊的布爾表達式為true,還是會運算右邊布爾表達式。8.4 位運算符按位操作符用來操作整數基本數據類型中的單個比特(bit),就是二進制,按位操作符會對兩個參數中對應的位(bit)執行布爾運算,最終生成一個結果。按位操作符來源于C語言面向底層的操作,Java設計的初衷是嵌入式電視機機頂盒,所以面向底層的操作也保留了下來。任何信息在計算機中都是以二進制的形式保存的,”&”、“|”、“”除了可以作為邏輯運算符也可以作為位運算符。位運算是直接對二進制進行運算。他們對兩個操作數中的每一個二進制位都進行運算。例如int是由32個二進制數組成,因此使用位運算符可以對整數值的二進

48、制數進行運算。位(bit)運算符:位運算符運算符含義&與(AND)|或(OR)異或取反規則:可以把1當做true 0當做false只有參與運算的兩位都為1,&運算的結果才為1,否則就為0。 只有參加運算的兩位都是0,| 運算的結果才是0,否則都是1。只有參加運算的兩位不同, 運算的結果才為1,否則就為0。1、& 與運算& 參見運算的兩位數都為1,&運算符結果才為1,否則就為0。6&3 0000000000000000000000000000011060000000000000000000000000000001130000000000000000

49、0000000000000010& =22、| 或運算| 參與運算的兩位都為0,|運算的結果才為0,否則就為1。00000000000000000000000000000110600000000000000000000000000000011300000000000000000000000000000111| =73、 異或運算只有參加運算的兩位不同,運算的結果才為1,否則就為0。00000000000000000000000000000110600000000000000000000000000000011300000000000000000000000000000101 =51、

50、反碼 就是取反,二進制只有1和0,取反就是如果為1,取反就是0,如果是0,取反就是100000000-00000000-011061111-11111111-11111111-11111111-1001取反 -7System.out.println(6);/-7 結論:當參與取反的數值是正數時,把對應的值加上負號,再-1; 當參與取反的數值是負數時,把對應的值加上負號,再-1;負數的表現形式就是對應的正數取反,再加1。負數的最高位肯定是1。4、負數表示負數對應的正數的二進制-1,然后取反。-600000000-00000000-011

51、061111-11111111-11111111-11111111-1001取反1111-11111111-11111111-11111111-1010加10000-00000000-00000000-00000000-0101取反 55、異或特點一個數異或同一個數兩次,結果還是那個數. 用處一個簡單的加密思想.63300000000-00000000-011060000-00000000-00000000-00000000-001130000-00000000-00000000-00000000-01010000-00000000-00000000-000000

52、00-001130000-00000000-00000000-00000000-0110結果是6除了這些位運算操作,還可以對數據按二進制位進行移位操作,Java的移位運算符有三種。練習:取出一個二進制的某一段。使用異或()數據對數據加密對兩個變量的值進行互換。方式1: 對兩個變量進行值交換(不能使用第三個變量)方式2:兩個數相加的時候,值有可能超出int表示范圍,不推薦。方式3:該方式雖然效率高,而且避免了超出int值,但是可讀性較差。三種方式都可以對兩個變量的值進行交換,但是推薦使用第一種。(面試除外)8.5 移位操作符<< 左移>> 右移>>&

53、gt; 無符號右移位運算符運算符運算范例<<左移3 << 2 = 12 -> 3*2*2=12>>右移3 >> 1 = 1 -> 3/2=1>>>無符號右移3 >>> 1 = 1 -> 3/2=1&與運算6 & 3 = 2|或運算6 | 3 = 7異或運算6 3 = 5反碼6 = -7位運算符的細節<<空位補0,被移除的高位丟棄,空缺位補0。>>被移位的二進制最高位是0,右移后,空缺位補0;最高位是1,空缺位補1。>>>被移位二進制最高位無論是0或者是1,空缺位都用0補。&二

溫馨提示

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

評論

0/150

提交評論