




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 關(guān)鍵字1.1 關(guān)鍵字的概述Java的關(guān)鍵字對(duì)java的編譯器有特殊的意義,他們用來(lái)表示一種數(shù)據(jù)類型,或者表示程序的結(jié)構(gòu)等,關(guān)鍵字不能用作變量名、方法名、類名、包名。1.2 常見(jiàn)的關(guān)鍵字備注:不必死記硬背,如果使用關(guān)鍵字作為標(biāo)識(shí)符,編譯器能提示錯(cuò)誤。goto 是java的保留關(guān)鍵字,意思是java并沒(méi)有使用goto,以后是否使用未定。2 標(biāo)識(shí)符2.1 什么是標(biāo)識(shí)符就是程序員在定義java程序時(shí),自定義的一些名字,例如helloworld 程序里關(guān)鍵字class 后跟的Demo,就是我們定義的類名。類名就屬于標(biāo)識(shí)符的一種。標(biāo)識(shí)符除了應(yīng)用在類名上,還可以用在變量、函數(shù)名、包名上。(要求同學(xué)們先記
2、住,以后會(huì)詳細(xì)見(jiàn)到這些)。2.2 標(biāo)識(shí)符必須遵循以下規(guī)則1. 標(biāo)識(shí)符由26個(gè)英文字符大小寫(azAZ)、數(shù)字(09)、下劃線(_)和美元符號(hào)($)組成。2. 不能以數(shù)字開(kāi)頭,不能是關(guān)鍵字3. 嚴(yán)格區(qū)分大小寫4. 標(biāo)識(shí)符的可以為任意長(zhǎng)度2.3 標(biāo)識(shí)符案例2.3.1 合法的標(biāo)識(shí)符ComputeArea,radius,area $itcast _itcast gz_itcast注意:由于Java嚴(yán)格區(qū)分大小寫,ITCAST 和itcast是完全不同的標(biāo)識(shí)符2.3.2 非法標(biāo)識(shí)符1. class (關(guān)鍵字)2. 100java(不能以數(shù)字開(kāi)頭)3. Hello java (空格不是組成標(biāo)識(shí)符的元素)2
3、.3.3 Java中的標(biāo)識(shí)符命名規(guī)范1. 包名多個(gè)單詞組成時(shí)所有字母小寫(例:package com.itcast) 2. 類名和接口多個(gè)單詞組成時(shí)所有單詞的首字母大寫(例:HelloWorld)3. 變量名和函數(shù)名多個(gè)單詞組成時(shí)第一個(gè)單詞首字母小寫,其他單詞首字母大寫(例:lastAccessTime、getTime)。4. 常量名多個(gè)單詞組成時(shí),字母全部大寫,多個(gè)單詞之間使用_分隔(例:INTEGER_CACHE)注意:只是為了增加規(guī)范性、可讀性而做的一種約定,標(biāo)識(shí)符在定義的時(shí)候最 好見(jiàn)名知意,提高代碼閱讀性。3 3.注釋3.1 注釋的作用通過(guò)注釋提高程序的可讀性,是java程序的條理更加
4、清晰,易于區(qū)分代碼行與注釋行。另外通常在程序開(kāi)頭加入作者,時(shí)間,版本,要實(shí)現(xiàn)的功能等內(nèi)容注釋,方便后來(lái)的維護(hù)以及程序員的交流。3.2 注釋的種類1.單行注釋(line comment)用/表示,編譯器看到/會(huì)忽略該行/后的所文本2.多行注釋(block comment)用/*/表示,編譯器看到/*時(shí)會(huì)搜索接下來(lái)的*/,忽略掉/*/之間的文本。3文檔注釋用/* */表示,是java特有的注釋,其中注釋內(nèi)容可以被JDK提供的工具 javadoc 所解析,生成一套以網(wǎng)頁(yè)文件形式體現(xiàn)的該程序的說(shuō)明文檔。public static void main(String args) / 第一步: 獲取半徑?并
5、將半徑保存在程序中double radius = 5;/ 第二步:計(jì)算面積,并將面積保存在程序中/*double area = radius * radius * 3.1415;/ 第三步:在控制臺(tái)現(xiàn)實(shí)面積System.out.println("半徑為" + radius + "的圓的面積為:" + area);*/ 注意:多行注釋中可以嵌套單行注釋,多行注釋不能嵌套多行注釋。錯(cuò)誤! class Demo /* 這是主函數(shù),是程序的入口 它的出現(xiàn)可以保證程序的獨(dú)立運(yùn)行 /* 注意:多行注釋嵌套多行注釋是不行的。 */ */ public static v
6、oid main(String args)/這是輸出語(yǔ)句用于將括號(hào)內(nèi)的數(shù)據(jù)打印到控制臺(tái)。System.out.println("hello java");文檔注釋 (編寫軟件說(shuō)明書)1. 需要使用sum給我們提供的javadoc工具生成一個(gè)html的說(shuō)明文檔。2. 只能抽取public的屬性或者方法內(nèi)容。格式:Javadoc d 指定存儲(chǔ)文檔的路徑 -version author(可選) 目標(biāo)文件 author 作者version 版本param 方法的參數(shù)return 返回值注釋的使用細(xì)節(jié):三種注釋可以出現(xiàn)在程序的任何地方,但是不推薦找任意位置。1. 編程習(xí)慣:1. 給那
7、條語(yǔ)句進(jìn)行說(shuō)明,注釋應(yīng)該寫在該語(yǔ)句的旁邊。2. 單行注釋一般寫在語(yǔ)句的后面多行注釋和文檔注釋一般寫在語(yǔ)句的上面注意:文檔注釋只能出現(xiàn)在類、屬性、方法的上面。2 注釋的嵌套1.單行注釋可以在單行注釋里面。2.多行注釋不能嵌套在多行注釋里面。3 注釋的調(diào)試作用:1. 可以作為初學(xué)者的調(diào)試方式。2. 可以幫組初學(xué)者確定代碼的錯(cuò)誤之處。4 常量 4.1 常量的概述常量是指在程序運(yùn)行過(guò)程中其值不能改變的量。4.2 常量類型Java中常量的分類: 整數(shù)常量 : 所有整數(shù) 小數(shù)常量 : 所有小數(shù) 布爾常量 : 只有true和false 字符常量 :使用引起來(lái)的單個(gè)字符 字符串常量 :使用“”引起來(lái)的字符序列
8、,“” 、“a” 、” ” null常量 : 只有一個(gè)值null3.char 類型char類型表示的是單個(gè)字符類型,任何數(shù)據(jù)使用單引號(hào)括起來(lái)的都是表示字符。字符只能有一個(gè)字符,比如:普通的老百姓穿上軍裝就是軍人。 注意:特殊字符的轉(zhuǎn)義序列:轉(zhuǎn)義字符轉(zhuǎn)義字符的概述:特殊字符使用”把其轉(zhuǎn)化成字符的本身輸出,那么使用”的字符稱作為轉(zhuǎn)移字符。需求:使用輸出語(yǔ)句,打印出帶引號(hào)的信息例如輸出。System.out.println("teacher said"java is fun"");編譯是無(wú)法正常通過(guò)的。語(yǔ)法有錯(cuò)誤,編譯器讀到第二個(gè)引號(hào)就認(rèn)為是字符串的結(jié)束,剩余
9、的不知道怎么處理。如何解決這個(gè)問(wèn)題:java中使用轉(zhuǎn)義字符來(lái)表示特殊的字符。一個(gè)轉(zhuǎn)義字符以反斜杠()開(kāi)始。 問(wèn)題:想要打印帶引號(hào)的字符串怎么辦,就可以使用反斜杠()后跟字符,這個(gè)反斜杠就是轉(zhuǎn)義字符。轉(zhuǎn)義字符名稱UnicodebBackspace (退格鍵)u0008tTab (Tab鍵盤)u0009nLinefeed (換行)u000ArCarriage Return(回車)u000DBackslash (反斜杠)u005C'Single Quote (單引號(hào))u0027"Double Quote (雙引號(hào))u0022r 表示接受鍵盤輸入,相當(dāng)于按下回車。n 表示換行。t 制
10、表符,相當(dāng)于Table鍵b 退格鍵,相當(dāng)于Back Space 單引號(hào) 雙引號(hào) 表示一個(gè)斜跨上述問(wèn)問(wèn)題解決:System.out.println("teacher said"java is fun"");注意:換行符就是另起一行,回車符就是回到一行的開(kāi)頭,所以我們平時(shí)編寫文件的回車符應(yīng)該確切來(lái)說(shuō)叫做回車換行符4. boolean 類型boolean由數(shù)學(xué)家Geogore Boole 發(fā)明boolean 類型用來(lái)存儲(chǔ)布爾值,在java中布爾值只有2個(gè),true和false。boolean flag=true;flag=false;Java中這8中基本數(shù)據(jù)類
11、型都是小寫的。5 進(jìn)制的轉(zhuǎn)換進(jìn)制:進(jìn)制是一種記數(shù)方式 ,可以用有限的數(shù)字符號(hào)代表所有的數(shù)值。由特定的數(shù)值組成。5.1 整型的表現(xiàn)形式1. 十進(jìn)制: 都是以0-9這九個(gè)數(shù)字組成,不能以0開(kāi)頭。2. 二進(jìn)制: 由0和1兩個(gè)數(shù)字組成。3. 八進(jìn)制: 由0-7數(shù)字組成,為了區(qū)分與其他進(jìn)制的數(shù)字區(qū)別,開(kāi)頭都是以0開(kāi)始。4. 十六進(jìn)制:由0-9和A-F組成。為了區(qū)分于其他數(shù)字的區(qū)別,開(kāi)頭都是以ox開(kāi)始。5.2 進(jìn)制的由來(lái) 幾乎每個(gè)民族最早都使用都十進(jìn)制計(jì)數(shù)法,這是因?yàn)槿祟愑?jì)數(shù)時(shí)自然而然地首先使用的是十個(gè)手指。 但是這不等于說(shuō)只有十進(jìn)制計(jì)數(shù)法一種計(jì)數(shù)方法。例如,世界各國(guó)在計(jì)算年月日時(shí)不約而同地使用“十二進(jìn)制
12、”12個(gè)月為一年又如:我國(guó)過(guò)去16兩才算為一斤,這就是“十六進(jìn)計(jì)數(shù)法”,一個(gè)星期七天,這個(gè)就是”七進(jìn)制計(jì)算法”。 計(jì)算機(jī)是由邏輯電路組成,邏輯電路通常只有兩個(gè)狀態(tài),開(kāi)關(guān)的接通與斷開(kāi),這兩種狀態(tài)正好可以用“1”和“0”表示。 如果要在計(jì)算機(jī)里面保存十進(jìn)制的 十進(jìn)制與二進(jìn)制之間的轉(zhuǎn)換十進(jìn)制轉(zhuǎn)二進(jìn)制的轉(zhuǎn)換原理:除以2,反向取余數(shù),直到商為0終止。二進(jìn)制轉(zhuǎn)十進(jìn)制的轉(zhuǎn)換原理:就是用二進(jìn)制的每一個(gè)乘以2的n次方,n從0開(kāi)始,每次遞增1。然后得出來(lái)的每個(gè)數(shù)相加存在問(wèn)題:書寫特別長(zhǎng),不方便記憶。5.2.2 十進(jìn)制與八進(jìn)制之間轉(zhuǎn)換1. 八進(jìn)制的由來(lái) 。2. 八進(jìn)制的特點(diǎn)由數(shù)字0-7組成。
13、即使用三個(gè)開(kāi)關(guān)表示一個(gè)八進(jìn)制數(shù)。 10進(jìn)制轉(zhuǎn)換8進(jìn)制原理:就是用十進(jìn)制的數(shù)字不斷除于8,取余數(shù)。八進(jìn)制轉(zhuǎn)十進(jìn)制原理: 用把進(jìn)制的數(shù)不斷乘以8的n次方,n從0開(kāi)始,每次遞增1。除了這種方法之外,我們還有另一種方法,因?yàn)槿齻€(gè)開(kāi)關(guān)表示一個(gè)八進(jìn)制數(shù)。十進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換十六進(jìn)制特點(diǎn):由09 a(10) b(11) c(12) d(13) e(14) f(15)組成。十進(jìn)制轉(zhuǎn)十六進(jìn)制原理:就是不斷除以16,取余數(shù)代碼體現(xiàn):人使用的十進(jìn)制 、 計(jì)算機(jī)底層處理的數(shù)據(jù)是二進(jìn)制、八進(jìn)制、十六進(jìn)制,那么如果給計(jì)算機(jī)輸入不同的進(jìn)制數(shù)據(jù)呢?Java 二進(jìn)制,八進(jìn)制,十進(jìn)制,十六進(jìn)制轉(zhuǎn)換A、十進(jìn)制轉(zhuǎn)換其
14、他十進(jìn)制轉(zhuǎn)成二進(jìn)制 Integer.toBinaryString(int i) 十進(jìn)制轉(zhuǎn)成八進(jìn)制 Integer.toOctalString(int i) 十進(jìn)制轉(zhuǎn)成十六進(jìn)制: Integer.toHexString(int i)B、其他轉(zhuǎn)換十進(jìn)制二進(jìn)制轉(zhuǎn)十進(jìn)制 Integer.valueOf("1010",2).toString()八進(jìn)制轉(zhuǎn)成十進(jìn)制 Integer.valueOf("125",8).toString() 十六進(jìn)制轉(zhuǎn)成十進(jìn)制 Integer.valu
15、eOf("ABCDEF",16).toString() private static void test() System.out.println("十轉(zhuǎn)二:"+Integer.toBinaryString(120); /十轉(zhuǎn)二:1111000 System.out.println("十轉(zhuǎn)八:"+Integer.toOctalString(120); /十轉(zhuǎn)八:170 &
16、#160;System.out.println("十轉(zhuǎn)十六:"+Integer.toHexString(120); /十轉(zhuǎn)十六:78 System.out.println("二轉(zhuǎn)十:"+Integer.valueOf("1010",2); /二轉(zhuǎn)十:10 System.out.println("八轉(zhuǎn)十:"+Integer.valueOf("125",8); /八轉(zhuǎn)十:85
17、; System.out.println("十六轉(zhuǎn)十:"+Integer.valueOf("ABCDEF",16); /十六轉(zhuǎn)十:11259375<br>輸出結(jié)果:6 變量6.1 變量的概述1. 變量的概述用于存儲(chǔ)可變數(shù)據(jù)的容器。2. 變量存在的意義計(jì)算機(jī)主要用于處理生活中的數(shù)據(jù),由于生活中存在大量的可變數(shù)據(jù),那么計(jì)算機(jī)就必須具備存儲(chǔ)可變數(shù)據(jù)的能力。比如: 1.時(shí)間每一秒都在發(fā)生變化,根據(jù)不同的時(shí)間要有不同的處理方式。 2.氣象站會(huì)根據(jù)溫度發(fā)布天氣預(yù)報(bào)信號(hào)。3. 變量的特點(diǎn)正常情況下牛奶盒裝的都是牛奶,而且會(huì)根據(jù)牛奶的多少去決定要多
18、大的容量的牛奶盒,A和B兩位同學(xué)同時(shí)把牛奶盒放進(jìn)籃子里面,但是需要區(qū)分兩個(gè)牛奶盒是誰(shuí)的,都需要在牛奶盒上做一個(gè)標(biāo)志。特點(diǎn):1. 必須要有大小2. 存儲(chǔ)一定格式的可變數(shù)據(jù)3. 必須要有名字6.2 變量的聲明根據(jù)上述變量的特點(diǎn),所以我們聲明一個(gè)變量的時(shí)候需要確定變量的大小,類型、名字三個(gè)特點(diǎn):錯(cuò)誤: 1024byte temp = 1000000;錯(cuò)誤原因,java有自己的變量類型。 6.2.1 變量的數(shù)據(jù)類型1. 整型byte 代表一個(gè)字節(jié)的大小 8bit 2(8) -128127 256 short 代表兩個(gè)字節(jié)的大小 16bit 2(16) -2(15)2(15)-1int 代表四個(gè)字節(jié)的大
19、小 32bit 2(32) -2(31)2(31)-1long 代表八個(gè)字節(jié)的大小 64bit 2(64) -2(63)2(63)-1如果一個(gè)數(shù)值沒(méi)有采取特殊的處理,那么該整數(shù)默認(rèn)的類型是int??梢允褂脭?shù)值后面添加L或小寫L改變默認(rèn)的整數(shù)類型。2. 浮點(diǎn)型 float 代表四個(gè)字節(jié)的大小 32bit double 代表八個(gè)字節(jié)的大小 64bitjava程序中所有的小數(shù)默認(rèn)的類型是double類型,所以需要使用特殊的符號(hào)改變默認(rèn)的小數(shù)類型。3. 字符型 char 代表兩個(gè)字節(jié)的大小 16bit 2(16) 原理:將字符映射為碼表中對(duì)應(yīng)的十進(jìn)制數(shù)據(jù)加以存儲(chǔ)。4. 布爾型 boolean 占一個(gè)字
20、節(jié)。只有true與false兩個(gè)值。6.2.2 變量的聲明格式: 數(shù)據(jù)類型 變量名字1 , 變量名字2 ,變量名字n ,;案例:int i 聲明了一個(gè)整形的變量。double d 聲明了一個(gè)double數(shù)據(jù)類型的變量 float f 聲明了一個(gè)float數(shù)據(jù)類型的變量。備注:變量名的首字母都一般都是以小寫字母開(kāi)始。6.2.3 變量的初始化6.2.4 變量的初始化方式初始化方式1: 數(shù)據(jù)類型 變量名字 = 數(shù)值。初始化方式2: 數(shù)據(jù)類型 變量名字 , 變量名字 = 數(shù)值。案例: 方式1: double d = 3.14; 方式2: double d d = 3.14 7 j
21、ava數(shù)據(jù)類型的轉(zhuǎn)換Java中可以進(jìn)行不同數(shù)據(jù)類型的加減乘除運(yùn)算嗎?是可以的。在算術(shù)運(yùn)算符中已經(jīng)體驗(yàn)過(guò)如果兩個(gè)整數(shù)(int)相除會(huì)去掉小數(shù)部分。如果需要保留小數(shù)部分,可以讓除數(shù)或者被除數(shù)變?yōu)閐ouble類型的(5變?yōu)?.0)。其實(shí)Java是自動(dòng)的將int的那個(gè)數(shù)變?yōu)榱薲ouble類型了也就是Java自動(dòng)的將整數(shù)變?yōu)榱烁↑c(diǎn)數(shù)。例如5/2.0 其實(shí)是5.0/2.01、 自動(dòng)類型轉(zhuǎn)換(也叫隱式類型轉(zhuǎn)換)可以將一個(gè)數(shù)賦值給更大數(shù)值范圍的變量,例如可以經(jīng)byte 變量賦值給short變量可以將short變量賦值給int變量可以將int變量賦值給long變量。Java內(nèi)部其實(shí)做了工作就是自動(dòng)將數(shù)值進(jìn)行了類
22、型提升,就叫做自動(dòng)類型轉(zhuǎn)換(也叫隱式類型轉(zhuǎn)換)byte b = 1; /00000001short s = b; /00000000 00000001int i = s;long lon = i;double d = lon; /1.0 自動(dòng)類型轉(zhuǎn)換(也叫隱式類型轉(zhuǎn)換)要實(shí)現(xiàn)自動(dòng)類型的轉(zhuǎn)換,需要滿足兩個(gè)條件,第一兩種類型彼此兼容,第二目標(biāo)類型取值范圍必須大于源類型。所有的數(shù)字類型,包括整形和浮點(diǎn)型彼此都可以進(jìn)行轉(zhuǎn)換。例如:byte b=100;int x=b;System.out.println(x);/程序把b結(jié)果自動(dòng)轉(zhuǎn)換為int類型。2、 強(qiáng)制類型轉(zhuǎn)換(也叫顯式類型轉(zhuǎn)換)不可以將一個(gè)數(shù)值賦
23、給范圍更小數(shù)值范圍的變量,除非進(jìn)行類型轉(zhuǎn)換。byte b = 100;b = b + 2;System.out.println(b);上述例子發(fā)生了什么,發(fā)生了類型轉(zhuǎn)換。b+2 遇到了加法運(yùn)算,2默認(rèn)是int類型,byte類型b變量存儲(chǔ)的值自動(dòng)類型提升為了int類型。執(zhí)行完加法運(yùn)算后的結(jié)果就是int類型,想要將int的類型值放入到byte類型變量b中,無(wú)法放入,編譯報(bào)錯(cuò)。byte b=1;b=(byte)(b+2);當(dāng)兩種類型彼此不兼容,或者目標(biāo)類型取值范圍小于源類型(目標(biāo)是byte源是int)無(wú)法自動(dòng)轉(zhuǎn)換,此時(shí)就需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換需要注意: 損失精度!int a=128;by
24、te b=(byte)a;System.out.println(b);/-128/* * 此時(shí)的強(qiáng)轉(zhuǎn)已經(jīng)造成了數(shù)值的不準(zhǔn)確*/ int 00000000000000000000000010000000 10000000 byte 再次分析此行代碼byte b = 100;b = b + 2; System.out.println(b); 編譯:提示如下錯(cuò)誤。 3、類型轉(zhuǎn)換的原理 可以把byte 理解為1兩的碗,short 2兩的碗,int 4兩的碗,long 8兩的碗。1兩碗的滿碗酒可以倒入 2兩 4兩 8兩的碗中。但是 4兩碗的酒倒入1兩碗的酒就有一些問(wèn)題。1、 什么時(shí)候要用強(qiáng)制類型轉(zhuǎn)換 比
25、如小數(shù)部分只想保留整數(shù)部分. 一定要清楚要轉(zhuǎn)換的數(shù)據(jù)在轉(zhuǎn)換后數(shù)據(jù)的范圍內(nèi)否則會(huì)損失精度.public static void main(String args) byte b = 100;b = (byte) (b + 2); System.out.println(b); / 102 /舍棄小數(shù)部分 double d=5.5;int num=(int)d; 2、 表達(dá)式的數(shù)據(jù)類型自動(dòng)提升算術(shù)表達(dá)式,邏輯表達(dá)式所有的byte型、short型和char的值將被提升到int型。如果一個(gè)操作數(shù)是long型,計(jì)算結(jié)果就是long型;如果一個(gè)操作數(shù)是float型,計(jì)算結(jié)果就是float型;如果一個(gè)操作數(shù)是
26、double型,計(jì)算結(jié)果就是double型。分析 System.out.println(a+1)結(jié)果?自動(dòng)類型提升 byte b = 3;int x = 4;x = x + b;/ b會(huì)自動(dòng)提升為int 類型參與運(yùn)算。System.out.println(x);/ 7強(qiáng)制類型轉(zhuǎn)換 byte b = 2;/* * 強(qiáng)制類型轉(zhuǎn)換,強(qiáng)制將b+2強(qiáng)制轉(zhuǎn)換為byte類型,再賦值給b */b = (byte) (b + 2); System.out.println(b);/ 4思考1byte b=126;問(wèn):既然數(shù)據(jù)默認(rèn)的有數(shù)據(jù)類型,那么126 默認(rèn)是int類型的,為什么存儲(chǔ)到byte類型時(shí)不會(huì)報(bào)錯(cuò)呢。
27、126 是常量java在編譯時(shí)期會(huì)檢查該常量(每個(gè)常量)是否超出byte類型的范圍。如果沒(méi)有可以賦值。思考2:byte b=128;能否正常的編譯和運(yùn)行。該語(yǔ)句會(huì)出現(xiàn)編譯錯(cuò)誤,128超出了byte變量的存儲(chǔ)范圍,所以出現(xiàn)編譯錯(cuò)誤。思考2byte b1=3,b2=4,b;b=b1+b2;b=3+4;哪一句編譯失???為什么?b =3+4, 3和4都是常量,所以java在編譯時(shí)期會(huì)檢查該常量(每個(gè)常量)是否超出byte類型的范圍。如果沒(méi)有可以賦值。例如b=128+1 就無(wú)法編譯通過(guò)。b=127+1;也是無(wú)法通過(guò)。b =b1+b2 不可以,因?yàn)閎1 和b2 是變量,表達(dá)式求值時(shí),變量值會(huì)自動(dòng)提升為in
28、t型,表達(dá)式結(jié)果也就成了int型,這是要賦值給byte型的b,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換了。6、System.out.println(a+1)結(jié)果美國(guó)人為了讓計(jì)算機(jī)識(shí)別他們生活中的文字,讓二進(jìn)制表示生活中的文字.所以一個(gè)字母代表了一個(gè)二進(jìn)制.,二進(jìn)制也有十進(jìn)制的表現(xiàn)形式.,把生活中的字母都用數(shù)字來(lái)標(biāo)識(shí),例如97 代表a ,98 代表 b。打印a就把a(bǔ)作為輸出顯示,沒(méi)有疑問(wèn)。但是 a+1 有加號(hào)涉及到了運(yùn)算。根據(jù)java自動(dòng)類型提升規(guī)則,同樣道理 char 提升為int 。就把a(bǔ)代表的數(shù)字體現(xiàn)了出來(lái)。a 表示的是97 97+1就是98; 那么 想要查看98 表示的char 是什么 怎么實(shí)現(xiàn)呢 ?就要用
29、到剛才介紹的強(qiáng)制類型轉(zhuǎn)換了 System.out.println(char(a+1);就取到了98 在ASCII碼表中表示的字符。大寫A 和小寫a 在 ASCII有不同的表現(xiàn)。還有一個(gè)概念字符1 在ASCII中 不是數(shù)字 1,可以運(yùn)行代碼查看,到此就可以明白了char 類型,char類型也是可以參與運(yùn)算的,為什么可以參與運(yùn)算呢。因?yàn)樽址贏SCII表中都有對(duì)應(yīng)的數(shù)字體現(xiàn)。所有的計(jì)算機(jī)兼容ASCII。 System.out.println('a'+1); /98System.out.println(char)('a'+1); /b補(bǔ)充問(wèn)題:int i='a
30、'+'b'System.out.println(i);/結(jié)果?System.out.println("hello"+'j'); /結(jié)果?總結(jié):所有數(shù)值運(yùn)算符都可以用在char型數(shù)據(jù)上,如果另一個(gè)操作數(shù)是一個(gè)數(shù)字或者字符,那么char會(huì)自動(dòng)提升為int型,如果另一個(gè)操作數(shù)是字符串,那么字符就會(huì)和字符串相連。8 java運(yùn)算符8.1.算術(shù)運(yùn)算符正負(fù)號(hào)(+,-) 除法%取模 求余數(shù) 取模的正負(fù)取決與被除數(shù):1 自增(+)前自增:先自增完畢,再運(yùn)算整個(gè)表達(dá)式,語(yǔ)句分號(hào)前面的都是運(yùn)算表達(dá)式;后自增,先運(yùn)算完整個(gè)表達(dá)式(分號(hào)前面的都是表達(dá)式),再
31、進(jìn)行自增; 備注:參與自增運(yùn)算的操作數(shù)據(jù)每次會(huì)加1.結(jié)論:如果運(yùn)算符在變量的前面,則該變量自增1或者自減1,然后返回的是變量的新值,如果運(yùn)算符在變量的后面,則變量也會(huì)自增或者自減1,但是返回的是變量原來(lái)的值。+在前就是先運(yùn)算,再取值,+在后就是先取值,再運(yùn)算。自增自減運(yùn)算符案例:完成如下運(yùn)算: 一;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; 練習(xí):1. 使用程序判斷一個(gè)整數(shù)是偶數(shù)還是奇數(shù)2. 使用程序判斷假設(shè)今天是星期4,那么問(wèn)10天后的今天是星期幾?3. 將數(shù)值表達(dá)式使用java程序翻譯,并通過(guò)程序求出運(yùn)算結(jié)果其中int x=1;int y=2,int a=3,int b=4,int c=5;案例一:public static void main(String args) / 判斷一個(gè)整數(shù)一奇數(shù)還是偶數(shù)int x = -100;/ 奇數(shù)是,1,3,5.偶數(shù)是2,4,6.顯然整數(shù)
33、除2能整除,也就%(取模)結(jié)果為0就是偶數(shù)。int result = x % 2;System.out.println(result);/ 使用判斷語(yǔ)句進(jìn)行判斷。if (result = 0) System.out.println(x + "是偶數(shù)"); else System.out.println(x + "是奇數(shù)");方案二 使用判斷該數(shù)結(jié)果是否是奇數(shù)。(但是該算法有問(wèn)題,如果被判斷的整數(shù)為負(fù)數(shù)是否有效?)public static void main(String args) / 判斷一個(gè)整數(shù)一奇數(shù)還是偶數(shù)int x = 1;/ 奇數(shù)是,1,3,
34、5.偶數(shù)是2,4,6.顯然奇數(shù)%的結(jié)果為1.int result = x % 2;System.out.println(result);/ 使用判斷語(yǔ)句進(jìn)行判斷。if (result = 1) System.out.println(x + "是奇數(shù)"); else System.out.println(x + "是偶數(shù)");改進(jìn)public static void main(String args) / 判斷一個(gè)整數(shù)一奇數(shù)還是偶數(shù)int x = -1;/ 奇數(shù)是,1,3,5.偶數(shù)是2,4,6.顯然奇數(shù)%的結(jié)果為1.int result = x % 2;S
35、ystem.out.println(result);/ 使用判斷語(yǔ)句進(jìn)行判斷。if (result != 0) System.out.println(x + "是奇數(shù)"); else System.out.println(x + "是偶數(shù)");案例三:判斷星期public static void main(String args) / 設(shè)定今天是星期1,用int 1表示星期一,0表示星期天int today = 1;/ 十天后是星期幾?,一個(gè)星期是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 賦值運(yùn)算符= , +=, -=,
37、 *=, /=, %=運(yùn)算符運(yùn)算范例結(jié)果=賦值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; 變量聲明完了之后,可以使用賦值語(yǔ)句(assignment statement)給變量賦一個(gè)值,Java中使用等號(hào)(=)作為基本的賦值運(yùn)算符(assignment operator),格式如下:variable = expression
38、;變量 = 表達(dá)式;變量我們已經(jīng)知道如何聲明,表達(dá)式具體如何定義?表達(dá)式的定義:表達(dá)式涉及到值(常量),變量和通過(guò)運(yùn)算符計(jì)算出的值,以及他們組合在一起計(jì)算出的新值。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、將=右半部分表達(dá)式的計(jì)算結(jié)果賦值給變量xx = y + 1; / 將變量y和1的求和的值賦值給變量xarea = radius * radius * 3.14159; / 將計(jì)算面積的值賦值給變量area賦值運(yùn)算符小問(wèn)題問(wèn)題1:int x;Syst2intln(x = 1);如何理解?答:等價(jià)于x=1;System.out.println(x);注意:不能 1=x,變量名必須在賦值運(yùn)算符的左邊。問(wèn)題二:int x;int y;int z;x = y = z = 100; 如何理解?答:等價(jià)于int x;int y;int z;z = 100;y = z;x = y;問(wèn)題三:short s1 =
40、 1; s1= s1+1; s1+=1;問(wèn):s1= s1+1; s1+=1; 與有什么不同?對(duì)于short s1 = 1; s1 = s1 + 1; 由于s1+1運(yùn)算時(shí)會(huì)自動(dòng)提升表達(dá)式的類型,所以結(jié)果是int型,再賦值給short類型s1時(shí),編譯器將報(bào)告需要強(qiáng)制轉(zhuǎn)換類型的錯(cuò)誤。對(duì)于short s1 = 1; s1 += 1;由于 += 是java語(yǔ)言規(guī)定的運(yùn)算符,java編譯器會(huì)對(duì)它進(jìn)行特殊處理,因此可以正確編譯。8.2 比較運(yùn)算符如何比較兩個(gè)值?使用比較運(yùn)算符 3和5誰(shuí)大,在java中如何比較?比較運(yùn)算符比較的兩邊操作數(shù),結(jié)果都是boolean的,只有true和false兩種結(jié)果。運(yùn)算符運(yùn)算
41、例子結(jié)果=相等于4= =3false!=不等于4!= 3true<小于4 < 3flase>大于 4>3true<=小于等于4<=3false>=大于等于4>=3trueInstanceof檢查是否是類的對(duì)象"hello"instanceof Stringtrue注意的細(xì)節(jié):1.使用比較運(yùn)算符的時(shí)候,要求兩種數(shù)據(jù)類型必須一致。 byte、short、char 會(huì)自動(dòng)提升至int。8.3 邏輯運(yùn)算符什么是邏輯運(yùn)算符?連接比較運(yùn)算符的符號(hào)稱之為邏輯運(yùn)算符。那么為什么要連接比較運(yùn)算符? 舉例:當(dāng)你去公司應(yīng)聘,招聘要求,男性(判斷為真
42、),并且開(kāi)發(fā)經(jīng)驗(yàn)1年(判斷為假)那么,我們還適合去面試嗎,不能,因?yàn)橹粷M足了一項(xiàng),總體是不滿足的(總體結(jié)果為假)。邏輯運(yùn)算符用于對(duì)boolean型結(jié)果的表達(dá)式進(jìn)行運(yùn)算,運(yùn)算的結(jié)果都是boolean型。我們的比較運(yùn)算符只能進(jìn)行一次判斷,對(duì)于對(duì)此判斷無(wú)能為力,那么邏輯運(yùn)算符就可以經(jīng)將較運(yùn)算符連接起來(lái)。邏輯運(yùn)算符用于連接布爾型表達(dá)式,在Java中不可以寫成3<x<6,應(yīng)該寫成x>3 & x<6 ?!?amp;”和“&&”的區(qū)別:?jiǎn)闻c時(shí),左邊無(wú)論真假,右邊都進(jìn)行運(yùn)算;雙與時(shí),如果左邊為真,右邊參與運(yùn)算,如果左邊為假,那么右邊不參與運(yùn)算?!皘”和“|”的區(qū)
43、別同理,雙或時(shí),左邊為真右邊不參與運(yùn)算?!?”異或與“|”或的不同之處是:當(dāng)左右都為true時(shí),結(jié)果為false。& 與 | 或 異或 ! 非 1、& 與true & true = true ; false & true= false; true & false = false; false & false= false; 總結(jié) & 符號(hào)特點(diǎn) & : 只要兩邊的boolean 表達(dá)式結(jié)果,有一個(gè)false.那么結(jié)果就是false只有兩邊都為true ,將結(jié)果為true.2、| 或true | true =true; ture |
44、false =true; false | true =true; false | false =flase;總結(jié) | : 兩邊只要有一個(gè)為真結(jié)果就為真,當(dāng)兩邊同為假時(shí)結(jié)果才為假.3、 異或true true =false; ture false =true; false true= true; false false=flase; : 兩邊相同結(jié)果是false 兩邊不同結(jié)果是true;4、! 非!true = false!false= true5、&& 短路研究發(fā)現(xiàn),&運(yùn)算只有兩邊全為真的時(shí)候,結(jié)果才為真,那么當(dāng)左邊為假的時(shí)候就沒(méi)有必要在進(jìn)行判斷,&&就
45、產(chǎn)生了。int a =4;a >3 && a< 6; a >3 & a< 6 ;在這種情況下世沒(méi)有區(qū)別的如果:a =2a >3 & a< 6 2大于 3 為假, 接著運(yùn)算 2 小于6 為真,總的結(jié)果為假a >3 && a< 6; 此時(shí)a 不大于3 結(jié)果為false 右邊不運(yùn)算了.即短路.所以&& 比& 效率稍微高了一點(diǎn).public static void main(String args) int x = 0;int y = 1;if (x = 0 && y
46、 = 1) System.out.println(x + y);&& (短路與雙與)短路與和單與符號(hào)的相同與不同點(diǎn):相同點(diǎn): 短路與和單與運(yùn)算 的結(jié)果是一樣的。不同點(diǎn): 使用短路與的時(shí)候,如果左邊的布爾表達(dá)式為false,則不會(huì)在運(yùn)算右邊的布爾表達(dá)式,從而提高了效率。使用單與的時(shí)候,即使發(fā)現(xiàn)左邊的布爾表達(dá)式為false,還是會(huì)運(yùn)算右邊的布爾表達(dá)式的。只有左邊的布爾表達(dá)式為false時(shí),雙與的效率才要高于單與的.| (短路或雙或)短路或與單或的相同點(diǎn)與不同點(diǎn):相同點(diǎn):運(yùn)算的結(jié)果是一致 的。不同點(diǎn):使用短路或的時(shí)候,當(dāng)發(fā)現(xiàn)左邊的布爾表達(dá)式為true時(shí),則不會(huì)運(yùn)算右邊的布爾表達(dá)式。使
47、用單或的時(shí)候 發(fā)現(xiàn)左邊的布爾表達(dá)式為true,還是會(huì)運(yùn)算右邊布爾表達(dá)式。8.4 位運(yùn)算符按位操作符用來(lái)操作整數(shù)基本數(shù)據(jù)類型中的單個(gè)比特(bit),就是二進(jìn)制,按位操作符會(huì)對(duì)兩個(gè)參數(shù)中對(duì)應(yīng)的位(bit)執(zhí)行布爾運(yùn)算,最終生成一個(gè)結(jié)果。按位操作符來(lái)源于C語(yǔ)言面向底層的操作,Java設(shè)計(jì)的初衷是嵌入式電視機(jī)機(jī)頂盒,所以面向底層的操作也保留了下來(lái)。任何信息在計(jì)算機(jī)中都是以二進(jìn)制的形式保存的,”&”、“|”、“”除了可以作為邏輯運(yùn)算符也可以作為位運(yùn)算符。位運(yùn)算是直接對(duì)二進(jìn)制進(jìn)行運(yùn)算。他們對(duì)兩個(gè)操作數(shù)中的每一個(gè)二進(jìn)制位都進(jìn)行運(yùn)算。例如int是由32個(gè)二進(jìn)制數(shù)組成,因此使用位運(yùn)算符可以對(duì)整數(shù)值的二進(jìn)
48、制數(shù)進(jìn)行運(yùn)算。位(bit)運(yùn)算符:位運(yùn)算符運(yùn)算符含義&與(AND)|或(OR)異或取反規(guī)則:可以把1當(dāng)做true 0當(dāng)做false只有參與運(yùn)算的兩位都為1,&運(yùn)算的結(jié)果才為1,否則就為0。 只有參加運(yùn)算的兩位都是0,| 運(yùn)算的結(jié)果才是0,否則都是1。只有參加運(yùn)算的兩位不同, 運(yùn)算的結(jié)果才為1,否則就為0。1、& 與運(yùn)算& 參見(jiàn)運(yùn)算的兩位數(shù)都為1,&運(yùn)算符結(jié)果才為1,否則就為0。6&3 0000000000000000000000000000011060000000000000000000000000000001130000000000000000
49、0000000000000010& =22、| 或運(yùn)算| 參與運(yùn)算的兩位都為0,|運(yùn)算的結(jié)果才為0,否則就為1。00000000000000000000000000000110600000000000000000000000000000011300000000000000000000000000000111| =73、 異或運(yùn)算只有參加運(yùn)算的兩位不同,運(yùn)算的結(jié)果才為1,否則就為0。00000000000000000000000000000110600000000000000000000000000000011300000000000000000000000000000101 =51、
50、反碼 就是取反,二進(jìn)制只有1和0,取反就是如果為1,取反就是0,如果是0,取反就是100000000-00000000-011061111-11111111-11111111-11111111-1001取反 -7System.out.println(6);/-7 結(jié)論:當(dāng)參與取反的數(shù)值是正數(shù)時(shí),把對(duì)應(yīng)的值加上負(fù)號(hào),再-1; 當(dāng)參與取反的數(shù)值是負(fù)數(shù)時(shí),把對(duì)應(yīng)的值加上負(fù)號(hào),再-1;負(fù)數(shù)的表現(xiàn)形式就是對(duì)應(yīng)的正數(shù)取反,再加1。負(fù)數(shù)的最高位肯定是1。4、負(fù)數(shù)表示負(fù)數(shù)對(duì)應(yīng)的正數(shù)的二進(jìn)制-1,然后取反。-600000000-00000000-011
51、061111-11111111-11111111-11111111-1001取反1111-11111111-11111111-11111111-1010加10000-00000000-00000000-00000000-0101取反 55、異或特點(diǎn)一個(gè)數(shù)異或同一個(gè)數(shù)兩次,結(jié)果還是那個(gè)數(shù). 用處一個(gè)簡(jiǎn)單的加密思想.63300000000-00000000-011060000-00000000-00000000-00000000-001130000-00000000-00000000-00000000-01010000-00000000-00000000-000000
52、00-001130000-00000000-00000000-00000000-0110結(jié)果是6除了這些位運(yùn)算操作,還可以對(duì)數(shù)據(jù)按二進(jìn)制位進(jìn)行移位操作,Java的移位運(yùn)算符有三種。練習(xí):取出一個(gè)二進(jìn)制的某一段。使用異或()數(shù)據(jù)對(duì)數(shù)據(jù)加密對(duì)兩個(gè)變量的值進(jìn)行互換。方式1: 對(duì)兩個(gè)變量進(jìn)行值交換(不能使用第三個(gè)變量)方式2:兩個(gè)數(shù)相加的時(shí)候,值有可能超出int表示范圍,不推薦。方式3:該方式雖然效率高,而且避免了超出int值,但是可讀性較差。三種方式都可以對(duì)兩個(gè)變量的值進(jìn)行交換,但是推薦使用第一種。(面試除外)8.5 移位操作符<< 左移>> 右移>>&
53、gt; 無(wú)符號(hào)右移位運(yùn)算符運(yùn)算符運(yùn)算范例<<左移3 << 2 = 12 -> 3*2*2=12>>右移3 >> 1 = 1 -> 3/2=1>>>無(wú)符號(hào)右移3 >>> 1 = 1 -> 3/2=1&與運(yùn)算6 & 3 = 2|或運(yùn)算6 | 3 = 7異或運(yùn)算6 3 = 5反碼6 = -7位運(yùn)算符的細(xì)節(jié)<<空位補(bǔ)0,被移除的高位丟棄,空缺位補(bǔ)0。>>被移位的二進(jìn)制最高位是0,右移后,空缺位補(bǔ)0;最高位是1,空缺位補(bǔ)1。>>>被移位二進(jìn)制最高位無(wú)論是0或者是1,空缺位都用0補(bǔ)。&二
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 婚禮答謝宴父母致辭11篇
- 汽修廠維修工具借用歸還登記制度
- 小吃店轉(zhuǎn)讓合同范本
- 奮斗演講稿集錦15篇
- 汽修廠銀行轉(zhuǎn)賬審批權(quán)限設(shè)定制度
- 山東青島圖書館招聘試題帶答案分析2024年
- 戶外安裝高溫作業(yè)安全
- 廣東省西浦教育集團(tuán)外國(guó)語(yǔ)高中2024-2025學(xué)年高一上學(xué)期期末考試日語(yǔ)試題(含答案)
- 臺(tái)風(fēng)暴雨應(yīng)急預(yù)案15篇
- 唯一的聽(tīng)眾讀書筆記14篇
- 農(nóng)村自建房業(yè)主培訓(xùn)課件
- 財(cái)產(chǎn)申報(bào)表-被執(zhí)行人用
- 一例肝硬化患者的護(hù)理查房課件
- 2025-2030中國(guó)光伏建筑一體化(BIPV)市場(chǎng)規(guī)模預(yù)測(cè)與競(jìng)爭(zhēng)格局分析研究報(bào)告
- 無(wú)機(jī)鹽在化妝品行業(yè)的應(yīng)用研究考核試卷
- 《2025年普通高校在陜招生計(jì)劃》
- 2025年廣西壯族自治區(qū)三支一扶考試真題
- 宿舍管理員述職報(bào)告
- 豬場(chǎng)生產(chǎn)安全
- 2025年徐州市專業(yè)技術(shù)人員公需課程 - 心理調(diào)適
- 2025年度苗圃土地承包合同-觀光樹(shù)種植與生態(tài)旅游產(chǎn)業(yè)鏈投資合作框架
評(píng)論
0/150
提交評(píng)論