已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章 基本數(shù)據(jù)類型和數(shù)組,1. 標(biāo)識(shí)符和關(guān)鍵字 2. 基本數(shù)據(jù)類型 3. 基本數(shù)據(jù)類型的轉(zhuǎn)換 4. 數(shù)據(jù)的輸入與輸出 5數(shù)組,JAVA程序概覽,1.包 包是類和接口的集合,或者說包是接口和類的容器。Java中包的作用主要包括3個(gè): 1)使得功能相關(guān)的類易于查找和使用,同一個(gè)包下的類和接口通常是功能相關(guān)的。 2)避免名字出現(xiàn)重復(fù),不同的包下可以有現(xiàn)同名字的類。 3)提供一種訪問權(quán)限的控制機(jī)制。前面提到過訪問控制通常是以包為分界的。,包的定義格式如下: package pg; 其中package是包的關(guān)鍵字。 多級(jí)包層次結(jié)構(gòu)的格式為: package pg1.pg2.pg3; 包的創(chuàng)建就是將源文件總的接口和類納入指定的包。,1.要使用某個(gè)包(不是當(dāng)前類所在的包)中類的時(shí)候,用import關(guān)鍵字引入(有點(diǎn)類似C+的#include) 2.想想如何避免包名沖突? 3.想想如果沒有IDE環(huán)境,我們?cè)鯓佣x和生成包 3.包有訪問權(quán)限問題,這將在類權(quán)限部分詳細(xì)介紹,2.類 類的格式如下: 類的修飾符 class extends 父類名 implenents 接口名表 變量修飾符 類型 成員變量1; 變量修飾符 類型 成員變量2; 方法修飾符 返回類型 方法名1(參數(shù)表) 方法體1 方法修飾符 返回類型 方法名2(參數(shù)表) 方法體2 ,與C+類定義的區(qū)別 1)形式上不同,C+使用“:”,JAVA使用“extends” 2)C+使用多重繼承,JAVA使用“implenents” 3)C+使用.h文件聲明類、成員變量、成員函數(shù),然后使用.cpp文件定義類、成員變量、成員函數(shù)的具體實(shí)現(xiàn)(給我們?cè)斐啥啻蟮穆闊?,JAVA一個(gè)類的聲明和實(shí)現(xiàn)在一起(至關(guān)重要的區(qū)別,目前的技術(shù)認(rèn)為,.h和.cpp的劃分愚蠢,也許幾年以后你不會(huì)再見到.h文件了) 4)C+使用“public:”這樣的形式作為整體變量、方法修飾符;而JAVA必須對(duì)每個(gè)變量或者方法指定,如果不指定,系統(tǒng)會(huì)默認(rèn)為private,3. 函數(shù)調(diào)用 System.out.println(“請(qǐng)輸入若干個(gè)數(shù),每輸入一個(gè)數(shù)回車確認(rèn)“); System是類,定義在包java.lang中 out是System類的靜態(tài)成員對(duì)象 println是out對(duì)象的靜態(tài)函數(shù),1.想想看為什么程序中沒有import java.lang.*) 2.為什么是類,應(yīng)該是對(duì)象啊?,如果想調(diào)用非靜態(tài)函數(shù),則需要先創(chuàng)建對(duì)象,在調(diào)用對(duì)象的成員函數(shù)。象這樣(與C+一樣): MyClass obj = new MyClass(); obj.not_static_function(); (怎樣創(chuàng)建對(duì)象?這個(gè)下面再詳細(xì)介紹。注意上面為什么不是obj-,因?yàn)镴AVA沒指針) (為什么JAVA沒指針?這個(gè)以后再詳細(xì)介紹),4.創(chuàng)建對(duì)象 Scanner reader=new Scanner(System.in);,What is it?,跟C+很像,回憶下C+是怎樣創(chuàng)建對(duì)象的?,1.JAVA沒有指針,reader是個(gè)句柄,分配在堆中 2.為什么沒有指針,因?yàn)閷<艺f不安全(去google查詢下“緩沖區(qū)溢出”,你就知道指針有多糟糕了) 3.new的對(duì)象沒有delete,因?yàn)閷?duì)象被分配在“可自動(dòng)回收的堆中” 4.怎樣做到自動(dòng)回收,JAVA虛擬機(jī)提供了“垃圾自動(dòng)回收算法”(有興趣的話去google上搜索下這幾個(gè)字) 5.為什么要“自動(dòng)回收”,到google上查詢下”內(nèi)存泄露”或者干兩年程序員你就明白 4.因?yàn)闆]有指針(這是為什么JAVA=C+-的原因之一),所以調(diào)用對(duì)象的成員函數(shù)不是:obj-func();而是obj.func();,5 基本數(shù)據(jù)類型初始化 double sum=0; int m;,這個(gè)和C+差不多,不用管它了,表面查不多而已。,1.C+的基本數(shù)據(jù)類型的長(zhǎng)度和內(nèi)存編碼是隨CPU和操作系統(tǒng)不同而不同的,而JAVA永遠(yuǎn)一致(所以JAVA可以跨平臺(tái),C+不能:write once,run anywhere)。 2.C+定義變量而不初始化,其值是隨機(jī)的,而JAVA會(huì)為它自動(dòng)初使化,如果一個(gè)變量在使用前沒有賦值,C+編譯器會(huì)給予一個(gè)警告,而JAVA認(rèn)為是個(gè)語(yǔ)義錯(cuò)誤(又一個(gè)C+-) 3.C+ 認(rèn)為象int,double,char這些數(shù)據(jù)類型是一個(gè)程序設(shè)計(jì)語(yǔ)言所必須的,沒有它們不行。而JAVA本身是一個(gè)純面向?qū)ο笳Z(yǔ)言(象Smalltalk),這些基本數(shù)據(jù)類型都不是必須的,因?yàn)樵贘AVA中一切都是對(duì)象(事實(shí)上JAVA已經(jīng)為每一個(gè)基本數(shù)據(jù)類型提供了一個(gè)“封裝類”,只是為了老程序員的習(xí)慣考慮,才保留了這些基本類型) 4.JAVA中的char與C+中的char完全不同,前者是unicode字符,占兩個(gè)字節(jié)16位,后者是ascii字符,占1個(gè)字節(jié)8位。(又一個(gè)C+-) 5.JAVA中Boolean類型與C+不同,前者不能與數(shù)字類型進(jìn)行強(qiáng)制轉(zhuǎn)換,后者可以,2.1 標(biāo)識(shí)符和關(guān)鍵字,1標(biāo)識(shí)符 1)Java語(yǔ)言規(guī)定標(biāo)識(shí)符由字母、下劃線、美元符號(hào)和數(shù)字組成,并且第一個(gè)字符不能是數(shù)字。 2)標(biāo)識(shí)符中的字母是區(qū)分大小寫的,Beijing 和beijing是不同的標(biāo)識(shí)符。 3)標(biāo)識(shí)符用來(lái)類、變量、函數(shù)、數(shù)組等變量的名字。 2 關(guān)鍵字 關(guān)鍵字就是Java語(yǔ)言中已經(jīng)被賦予特定意義的一些單詞,它們?cè)诔绦蛏嫌兄煌挠猛荆豢梢园殃P(guān)鍵詞作為名字來(lái)用。,返回,Choose the three valid identifiers from those listed below. A. IDoLikeTheLongNameClass B. $byte C. const D. _ok E. 3_case,基本數(shù)據(jù)類型,復(fù)合數(shù)據(jù)類型,2.2 基本數(shù)據(jù)類型,類類型,2.2 基本數(shù)據(jù)類型,基本數(shù)據(jù)類型也稱作簡(jiǎn)單數(shù)據(jù)類型。Java語(yǔ)言有8種簡(jiǎn)單數(shù)據(jù)類型,分別是: boolean、byte 、short、int、long、 float、double、char。 這8種數(shù)據(jù)類型習(xí)慣上可分為4大類型: 邏輯類型:boolean 字符類型:char 整數(shù)類型:byte、short、int、long 浮點(diǎn)類型:float、double,Integer,Character,Byte,Short,Long,Float,Double,對(duì)應(yīng)封裝類,BigInteger BigDecimal,2.2 基本數(shù)據(jù)類型,1邏輯類型(boolean) 常量:true ,false。 練習(xí): boolean a = true; boolean a = (1=1); 但是不能: boolean a = 1;,boolean b1;boolean b2 = true; b1 = !b2; boolean b = (b1 ,boolean c = (b1 ,int a; boolean d = (a=0); boolean d=(a=0);,int a=0; if(a=1),2.2 基本數(shù)據(jù)類型,2字符類型 注意:每個(gè)字符占兩個(gè)字節(jié),不再使用ASCII編碼,而是使用Unicode 例如字母A的編碼是0x0041,而不是0x41, 而漢字真的編碼是0x771F Java也使用轉(zhuǎn)意字符,如:n:換行 b:退格 t:水平制表 :?jiǎn)我?hào)(這部分與C一樣) u0030: Unicode編碼 (C語(yǔ)言沒有) 變量的定義: char x= A,漂亮=A; char t =真; char k = 漂亮; char k = “飄”; char c = 0; char c = 48; char c = 0+9; byte k = 9; char ch=0+k;,/(這個(gè)跟C語(yǔ)言一樣),/C語(yǔ)言不允許,/(JAVA,C都不允許),/(JAVA,C都不允許),/ 賦初值為字符0,實(shí)際存儲(chǔ)的是0x0030,/ 用整數(shù)賦初值為0,/賦值9,即0x0039,/ 錯(cuò)誤,H+k是int型,需強(qiáng)制類型轉(zhuǎn)換,2.2 基本數(shù)據(jù)類型,下面的例子(Example3)中,分別用顯示轉(zhuǎn)換來(lái)顯示一些字符在Unicode表中的位置,以及某些位置上的字符。,3整數(shù)類型(byte short int long) 常量:6000(十進(jìn)制),077(八進(jìn)制),0x3ABC(十六進(jìn)制)。 12l, -343L, 0xfffffffffL 注意:若沒有指定L,常量缺省是int類型的,練習(xí): int a;int a = 3; byte b = 8; short s = 10; long y = 123L; long z = 123l; final int a=3;(在C語(yǔ)言中是const int a=3;) static int a = 3; final static int a = 3; ;(在C語(yǔ)言中是const int a=3;) 注意:C語(yǔ)言中的unsigned int a = 3;在JAVA中沒有,練習(xí) byte b1; byte b2 = 127; short s1 = (b1 + b2); short s1 = (short)(b1 + b2); short s2 = (short)(b1 + 123) int s = b1 + b2; long l1 = 2343; long l2 = 4294967296; long l2 = 4294967296L; long l3 = 65536*63356; long l4 = 65536L*63356; boolean b = (1L 32 = 1 32) short s1 = 1; s1 = s1 + 1; short s1 = 1; s1 += 1;,/ 缺省值是隨機(jī)數(shù),/ 賦初值為127,/錯(cuò)誤,/ 強(qiáng)制類型轉(zhuǎn)換,/ 強(qiáng)制類型轉(zhuǎn)換,/ 不需要強(qiáng)制類型轉(zhuǎn)換,/ 不需要強(qiáng)制類型轉(zhuǎn)換,/錯(cuò)誤,/ 必須用L或l結(jié)尾,/ 錯(cuò)誤,乘法運(yùn)算越界,l3為0,/ l4為4294967296L,/ 4294967296L != 0,/ 錯(cuò)誤,無(wú)法從int自動(dòng)轉(zhuǎn)為short,/ 這個(gè)正確,自動(dòng)類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換) 整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算,轉(zhuǎn)換從低級(jí)到高級(jí): 低-高 byte,short,char int long float double,操作數(shù)1類型 操作數(shù)2類型 轉(zhuǎn)換后的類型 byte、short、char int int byte、short、char、int long long byte、short、char、int、long float float byte、short、char、int、long、float double double,注意:與C語(yǔ)言不同,自動(dòng)類型轉(zhuǎn)換不允許從高級(jí)到低級(jí)進(jìn)行,數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則: 不能對(duì)boolean類型進(jìn)行類型轉(zhuǎn)換。 不能把對(duì)象類型轉(zhuǎn)換成不相關(guān)類的對(duì)象。 在把容量大的類型轉(zhuǎn)換為容量小的類型時(shí)必須使用強(qiáng)制(顯式)類型轉(zhuǎn)換。 轉(zhuǎn)換過程中可能導(dǎo)致溢出或損失精度 int i = 8; byte b=(byte)i; (byte)255 = -1 (byte)0x5634 = 0x34 浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換是通過舍棄小數(shù)得到,而不是四舍五入 (int)23.7 = 23 (int)-45.89f = -45,2.2 基本數(shù)據(jù)類型,4浮點(diǎn)類型(float,double) 常量:453.5439f,21379.987F,2e40f 21.39d,21.987,123.0,6e-140(6乘10的-140次方),練習(xí) float在機(jī)器中占32位,double占64位,常量缺省是double型的 double d1 = 127.0; 賦初值為127 double d2 = 127; 賦初值為127 float f1 = 127.0f; 必須在數(shù)字后加f或F float f2 = 4.0e38f; 錯(cuò)誤!32位浮點(diǎn)數(shù)不能超過 3.4028234663852886e38 float f3 = (float)d1; 必須強(qiáng)制類型轉(zhuǎn)換,在Java中,引用(reference)指向一個(gè)對(duì)象在內(nèi)存中的位置,本質(zhì)上它是一種帶有很強(qiáng)的完整性和安全性限制的指針。 當(dāng)你聲明某個(gè)類、接口或數(shù)組類型的變量時(shí),那個(gè)變量的值總是某個(gè)對(duì)象的引用或者是null。 指針就是簡(jiǎn)單的地址而已,引用除了表示地址而外,還象被引用的數(shù)據(jù)對(duì)象的縮影,還提供其他信息。 指針可以有+、-運(yùn)算,引用不可以運(yùn)算。 引用型變量只支持有限的邏輯判斷: 相等判斷(是否同一個(gè)對(duì)象的引用):= != theObject = null otherObject != theObject 類型判斷(是否是每個(gè)類的實(shí)例): instanceof theObject instanceof Object “” instanceof String,Java數(shù)據(jù)類型 復(fù)合(引用)數(shù)據(jù)類型,2.4 數(shù)據(jù)的輸入與輸出,由于C語(yǔ)言出現(xiàn)的比較早,那個(gè)時(shí)候還沒有圖形用戶界面的概念(Graphics User Interface),因此,C語(yǔ)言提供了許多用來(lái)輸入、輸出數(shù)據(jù)的函數(shù),例如printf 、scanf等。 Java不象C,提供在命令行進(jìn)行數(shù)據(jù)輸入、輸出的功能不多。 關(guān)于輸入、輸出我們將在第九章詳細(xì)介紹,現(xiàn)在只需知道它的作用是在命令行窗口(例如,MS-DOS窗口)輸出數(shù)據(jù)即可。Sun公司新推出的SDK1.5又新增了一些在命令行進(jìn)行數(shù)據(jù)輸入、輸出的功能。,2.4 數(shù)據(jù)的輸入與輸出,1數(shù)據(jù)輸出: System.out.printf System.out.printf的功能完全類似C語(yǔ)言中的printf函數(shù)。pringf的一般格式: printf(格式控制部分,表達(dá)式1,表達(dá)式2,表達(dá)式n); 這里的用法與C語(yǔ)言相同,這里不再累述。 下面我們看一個(gè)例子,來(lái)進(jìn)一步了解 System.out.printf 數(shù)據(jù)輸出:,2.4 數(shù)據(jù)的輸入與輸出,2數(shù)據(jù)的輸入:Scanner Scanner是SDK1.5新增的一個(gè)類,可以使用該類創(chuàng)建一個(gè)對(duì)象: Scanner reader=new Scanner(System.in); 然后reader對(duì)象調(diào)用下列方法(函數(shù)),讀取用戶在命令行輸入的各種數(shù)據(jù)類型, nextByte(), nextDouble(), nextFloat(), nextInt(), nextLine(),nextLong(), nextShort()。,2.4 數(shù)據(jù)的輸入與輸出,上述方法執(zhí)行時(shí)都會(huì)堵塞,等待你在命令行輸入數(shù)據(jù)回車確認(rèn)。 下面讓我們來(lái)看一個(gè)例子,來(lái)更好的了解Scanner語(yǔ)句,在這個(gè)例子中,用戶在鍵盤依次輸入若干個(gè)數(shù)字,每輸入一個(gè)數(shù)字都需要按回車鍵確認(rèn),最后在鍵盤輸入一個(gè)非數(shù)字字符結(jié)束整個(gè)的輸入操作過程。程序?qū)⒂?jì)算出這些數(shù)的和及平均值。,返回,JAVA的輸入輸出采用了設(shè)計(jì)模式,與C+在設(shè)計(jì)上有較大區(qū)別,我們后半段節(jié)紹,2.5 數(shù)組,數(shù)組是相同類型的數(shù)據(jù)按順序組成的一種復(fù)合數(shù)據(jù)類型。通過數(shù)組名加數(shù)組下標(biāo)來(lái)使用數(shù)組中的數(shù)據(jù)。下標(biāo)從0開始。 1聲明數(shù)組 聲明數(shù)組包括數(shù)組的名字、數(shù)組包含的元素的數(shù)據(jù)類型。 聲明一維數(shù)組有下列兩種格式: 數(shù)組元素類型 數(shù)組名字 ; 數(shù)組元素類型 數(shù)組名字;,首先記住!,數(shù)組是對(duì)象?。ㄔ贘AVA中一切都是對(duì)象),2.5 數(shù)組,聲明二維數(shù)組有下列兩種格式: 數(shù)組元素類型 數(shù)組名字; 數(shù)組元素類型 數(shù)組名字; 2創(chuàng)建數(shù)組 聲明數(shù)組僅僅是給出了數(shù)組名和元素的數(shù)據(jù)類型,要想使用數(shù)組還必須為它分配內(nèi)存空間,即創(chuàng)建數(shù)組。在為數(shù)組分配內(nèi)存空間時(shí)必須指明數(shù)組的長(zhǎng)度。格式如下: 數(shù)組名字 = new 數(shù)組元素的類型數(shù)組元素的個(gè)數(shù); 例如: float boy= new float4;,2.5 數(shù)組,3數(shù)組元素的使用 一維數(shù)組通過下標(biāo)符訪問自己的元素,如boy0,boy1等。需要注意的是下標(biāo)從0開始,因此,數(shù)組若是7個(gè)元素,下標(biāo)到6為止,如果你將來(lái)使用下標(biāo)超過6將會(huì)發(fā)生異常。 二維數(shù)組也通過下標(biāo)符訪問自己的元素,如a01,a12等 。下標(biāo)也是從0開始。,float k = 1.1f,1.2f; float n = new float3; float k; float k3; float k = 1.1f,1.2f; float k = 1.1,1.2; double m = 1.1,1.3; double n = new double31.1,1.2,1.3; Example4 exp = new Example44; Example4 exp1 = new Example4(),new Example4(),new Example4(); System.out.println(“exp10 is “ + exp10.toString(); System.out.println(“exp0 is “ + exp0.toString();int Public int cPlusPlusCannotdoLikeThis(String arr);,2.5 數(shù)組,4數(shù)組的初始化 創(chuàng)建數(shù)組后,系統(tǒng)會(huì)給每個(gè)數(shù)組元素一個(gè)默認(rèn)的值,如,float型是0.0。 我們?cè)诼暶鲾?shù)組時(shí)同時(shí)也還可以給數(shù)組的元素一個(gè)初始值,如: float boy= 21.3f,23.89f,2.0f,23
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大數(shù)據(jù)驅(qū)動(dòng)的市場(chǎng)分析-深度研究
- 2025至2031年中國(guó)鐵路磨軌機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)羊毛女氈帽行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國(guó)高強(qiáng)度塑料條筒數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)防火面板數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 容器漏洞掃描與修復(fù)-深度研究
- 2025至2030年中國(guó)膜精濾機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)緯彈印花面料數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)牛肉味粉數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)油冷式滾筒用三相異步電動(dòng)機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末質(zhì)量監(jiān)測(cè)生物學(xué)試卷(含答案)
- 2024版?zhèn)€人私有房屋購(gòu)買合同
- 2024爆炸物運(yùn)輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護(hù)保密協(xié)議與信息安全風(fēng)險(xiǎn)評(píng)估合同3篇
- 《食品與食品》課件
- 讀書分享會(huì)《白夜行》
- 光伏工程施工組織設(shè)計(jì)
- DB4101-T 121-2024 類家庭社會(huì)工作服務(wù)規(guī)范
- 化學(xué)纖維的鑒別與測(cè)試方法考核試卷
- 2024-2025學(xué)年全國(guó)中學(xué)生天文知識(shí)競(jìng)賽考試題庫(kù)(含答案)
- 自動(dòng)駕駛汽車道路交通安全性探討研究論文
評(píng)論
0/150
提交評(píng)論