




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第2 2章章 基本數據類型和數組基本數據類型和數組 1. 標識符和關鍵字2. 基本數據類型3. 基本數據類型的轉換4. 數據的輸入與輸出5數組java程序概覽1.包 包是類和接口的集合,或者說包是接口和類的容器。java中包的作用主要包括3個:1)使得功能相關的類易于查找和使用,同一個包下的類和接口通常是功能相關的。2)避免名字出現重復,不同的包下可以有現同名字的類。3)提供一種訪問權限的控制機制。前面提到過訪問控制通常是以包為分界的。包的定義格式如下:package pg;其中package是包的關鍵字。多級包層次結構的格式為:package pg1.pg2.pg3;包的創建就是將源文件總
2、的接口和類納入指定的包。1.要使用某個包(不是當前類所在的包)中類的時候,用import關鍵字引入(有點類似c+的#include)2.想想如何避免包名沖突?3.想想如果沒有ide環境,我們怎樣定義和生成包3.包有訪問權限問題,這將在類權限部分詳細介紹2.類類的格式如下:類的修飾符 class extends 父類名 implenents 接口名表 變量修飾符 類型 成員變量1; 變量修飾符 類型 成員變量2; 方法修飾符 返回類型 方法名1(參數表) 方法體1 方法修飾符 返回類型 方法名2(參數表) 方法體2 與c+類定義的區別1)形式上不同,c+使用“:”,java使用“extends”
3、2)c+使用多重繼承,java使用“implenents”3)c+使用.h文件聲明類、成員變量、成員函數,然后使用.cpp文件定義類、成員變量、成員函數的具體實現(給我們造成多大的麻煩),java一個類的聲明和實現在一起(至關重要的區別,目前的技術認為,.h和.cpp的劃分愚蠢,也許幾年以后你不會再見到.h文件了)4)c+使用“public:”這樣的形式作為整體變量、方法修飾符;而java必須對每個變量或者方法指定,如果不指定,系統會默認為private3. 函數調用system.out.println(請輸入若干個數,每輸入一個數回車確認);system是類,定義在包java.lang中ou
4、t是system類的靜態成員對象println是out對象的靜態函數1.想想看為什么程序中沒有import java.lang.*)2.為什么是類,應該是對象啊?如果想調用非靜態函數,則需要先創建對象,在調用對象的成員函數。象這樣(與c+一樣):myclass obj = new myclass(); obj.not_static_function();(怎樣創建對象?這個下面再詳細介紹。注意上面為什么不是obj-,因為java沒指針)(為什么java沒指針?這個以后再詳細介紹)4.創建對象scanner reader=new scanner(system.in);what is it?跟c+
5、很像,回憶下c+是怎樣創建對象的?1.java沒有指針,reader是個句柄,分配在堆中2.為什么沒有指針,因為專家說不安全(去google查詢下“緩沖區溢出”,你就知道指針有多糟糕了)3.new的對象沒有delete,因為對象被分配在“可自動回收的堆中”4.怎樣做到自動回收,java虛擬機提供了“垃圾自動回收算法”(有興趣的話去google上搜索下這幾個字)5.為什么要“自動回收”,到google上查詢下”內存泄露”或者干兩年程序員你就明白4.因為沒有指針(這是為什么java=c+-的原因之一),所以調用對象的成員函數不是:obj-func();而是obj.func();5 基本數據類型初始
6、化基本數據類型初始化double sum=0; int m;這個和c+差不多,不用管它了表面查不多而已。1.c+的基本數據類型的長度和內存編碼是隨cpu和操作系統不同而不同的,而java永遠一致(所以java可以跨平臺,c+不能:write once,run anywhere)。2.c+定義變量而不初始化,其值是隨機的,而java會為它自動初使化,如果一個變量在使用前沒有賦值,c+編譯器會給予一個警告,而java認為是個語義錯誤(又一個c+-)3.c+ 認為象int,double,char這些數據類型是一個程序設計語言所必須的,沒有它們不行。而java本身是一個純面向對象語言(象smallta
7、lk),這些基本數據類型都不是必須的,因為在java中一切都是對象(事實上java已經為每一個基本數據類型提供了一個“封裝類”,只是為了老程序員的習慣考慮,才保留了這些基本類型)4.java中的char與c+中的char完全不同,前者是unicode字符,占兩個字節16位,后者是ascii字符,占1個字節8位。(又一個c+-)5.java中boolean類型與c+不同,前者不能與數字類型進行強制轉換,后者可以2.1 2.1 標識符和關鍵字標識符和關鍵字 1 1標識符標識符 1)java語言規定標識符由字母、下劃線、美元符號美元符號和數字組成,并且第一個字符不能是數字。 2)標識符中的字母是區分
8、大小寫的,beijing 和beijing是不同的標識符。 3)標識符用來類、變量、函數、數組等變量的名字。 2 2 關鍵字關鍵字 關鍵字就是java語言中已經被賦予特定意義的一些單詞,它們在程序上有著不同的用途,不可以把關鍵詞作為名字來用。返回choose the three valid identifiers from those listed below. a. idolikethelongnameclass b. $byte c. const d. _ok e. 3_case java type systemprimitivereferencenullcharnumericboolea
9、nclassinterfacearrayintegralfloating-pointbyteshortintlongfloatdouble基本數據類型基本數據類型復合數據類型復合數據類型2.2 2.2 基本數據類型基本數據類型類類型2.2 2.2 基本數據類型基本數據類型 基本數據類型也稱作簡單數據類型。java語言有8種簡單數據類型,分別是: boolean、byte 、short、int、long、 float、double、char。 這8種數據類型習慣上可分為4大類型:u邏輯類型:booleanu字符類型:charu整數類型:byte、short、int、longu浮點類型:float
10、、doubleintegercharacterbyteshortlongfloatdouble對應封裝類對應封裝類biginteger bigdecimal2.2 2.2 基本數據類型基本數據類型1邏輯類型(boolean) 常量:true ,false。練習: boolean a = true; boolean a = (1=1); 但是不能:但是不能: booleanboolean a = 1; a = 1; boolean b1;boolean b2 = true; b1 = !b2;boolean b = (b1 & b2) != false; boolean c = (b1 & b2
11、) != false; int a; boolean d = (a=0); boolean d=(a=0);int a=0; if(a=1)2.2 2.2 基本數據類型基本數據類型 2字符類型 注意:每個字符占兩個字節占兩個字節,不再使用ascii編碼,而是使用unicode 例如字母a的編碼是0 x0041,而不是0 x41, 而漢字真的編碼是0 x771f java也使用轉意字符,如:n:換行 b:退格 t:水平制表 :單引號(這部分與c一樣) u0030: unicode編碼 (c語言沒有) 變量的定義: char x= a,漂亮=a; char t =char t =真真; char
12、k = 漂亮; char k = “飄”; nchar c = 0;nchar c = 48;nchar c = 0+9; nbyte k = 9; char ch=0+k; /(這個跟c語言一樣)/c語言不允許/(java,c都不允許)/(java,c都不允許)/ 賦初值為字符0,實際存儲的是0 x0030/ 用整數賦初值為0/賦值9,即0 x0039/ 錯誤,h+k是int型,需強制類型轉換2.2 2.2 基本數據類型基本數據類型下面的例子(example3)中,分別用顯示轉換來顯示一些字符在unicode表中的位置,以及某些位置上的字符。 3整數類型(byte short int lon
13、g)常量:6000(十進制),077(八進制),0 x3abc(十六進制)。 12l, -343l, 0 xfffffffffl 注意:若沒有指定l,常量缺省是int類型的 練習:int a;int a = 3;byte b = 8; short s = 10; long y = 123l; long z = 123l;finalfinal int a=3;(在c語言中是const int a=3;)static int a = 3; final static final static int a = 3; ;(在c語言中是const int a=3;)注意:c語言中的unsigned int
14、 a = 3;在java中沒有n練習練習nbyte b1;nbyte b2 = 127;nshort s1 = (b1 + b2); nshort s1 = (short)(b1 + b2); nshort s2 = (short)(b1 + 123)nint s = b1 + b2;nlong l1 = 2343;nlong l2 = 4294967296;nlong l2 = 4294967296l;nlong l3 = 65536*63356;nlong l4 = 65536l*63356;nboolean b = (1l 32 = 1 高高byte,short,char int lon
15、g float double操作數操作數1類型類型操作數操作數2類型類型轉換后的類型轉換后的類型byte、short、charintintbyte、short、char、intlonglongbyte、short、char、int、longfloatfloatbyte、short、char、int、long、floatdoubledoublen注意:與注意:與c語言不同,自動類型轉換不允許從高級到低級進行語言不同,自動類型轉換不允許從高級到低級進行n 數據類型轉換必須滿足如下規則:n不能對boolean類型進行類型轉換。n不能把對象類型轉換成不相關類的對象。n 在把容量大的類型轉換為容量小的類
16、型時必須使用強制(顯式)類型轉換強制(顯式)類型轉換。n 轉換過程中可能導致溢出或損失精度n int i = 8; byte b=(byte)i;n (byte)255 = -1(byte)0 x5634 = 0 x34n 浮點數到整數的轉換是通過舍棄小數得到,而不是四舍五入n (int)23.7 = 23(int)-45.89f = -452.2 2.2 基本數據類型基本數據類型 4浮點類型(float,double)常量:453.5439f,21379.987f,2e40f 21.39d,21.987,123.0,6e-140(6乘10的-140次方) n練習 float在機器中占32位,
17、double占64位,常量缺省是常量缺省是double型的型的 double d1 = 127.0; 賦初值為127ndouble d2 = 127; 賦初值為127nfloat f1 = 127.0f; 必須在數字后加f或fnfloat f2 = 4.0e38f; 錯誤!32位浮點數不能超過 3.4028234663852886e38nfloat f3 = (float)d1; 必須強制類型轉換n在java中,引用(reference)指向一個對象在內存中的位置,本質上它是一種帶有很強的完整性和安全性限制的指針。n當你聲明某個類、接口或數組類型的變量時,那個變量的值總是某個對象的引用或者是n
18、ull。n指針就是簡單的地址而已,引用除了表示地址而外,還象被引用的數據對指針就是簡單的地址而已,引用除了表示地址而外,還象被引用的數據對象的縮影,還提供其他信息。象的縮影,還提供其他信息。n指針可以有指針可以有+、-運算,引用不可以運算。運算,引用不可以運算。n引用型變量只支持有限的邏輯判斷:n相等判斷(是否同一個對象的引用):= != ntheobject = nullnotherobject != theobjectn類型判斷(是否是每個類的實例): instanceofntheobject instanceof objectn“” instanceof stringjava數據類型數據
19、類型復合(引用)數據類型復合(引用)數據類型2.4 2.4 數據的輸入與輸出數據的輸入與輸出 由于c語言出現的比較早,那個時候還沒有圖形用戶界面的概念(graphics user interface),因此,c語言提供了許多用來輸入、輸出數據的函數,例如printf 、scanf等。 java不象c,提供在命令行進行數據輸入、輸出的功能不多。 關于輸入、輸出我們將在第九章詳細介紹,現在只需知道它的作用是在命令行窗口(例如,ms-dos窗口)輸出數據即可。sun公司新推出的sdk1.5又新增了一些在命令行進行數據輸入、輸出的功能。2.4 2.4 數據的輸入與輸出數據的輸入與輸出1數據輸出: sy
20、stem.out.printf system.out.printf的功能完全類似c語言中的printf函數。pringf的一般格式: printf(格式控制部分,表達式1,表達式2,表達式n); 這里的用法與c語言相同,這里不再累述。 下面我們看一個例子,來進一步了解 system.out.printf 數據輸出:2.4 2.4 數據的輸入與輸出數據的輸入與輸出 2數據的輸入:scanner scanner是sdk1.5新增的一個類,可以使用該類創建一個對象: scanner reader=new scanner(system.in); 然后reader對象調用下列方法(函數),讀取用戶在命令
21、行輸入的各種數據類型, nextbyte(), nextdouble(), nextfloat(), nextint(), nextline(),nextlong(), nextshort()。2.4 2.4 數據的輸入與輸出數據的輸入與輸出 上述方法執行時都會堵塞,等待你在命令行輸入數據回車確認。 下面讓我們來看一個例子,來更好的了解scanner語句,在這個例子中,用戶在鍵盤依次輸入若干個數字,每輸入一個數字都需要按回車鍵確認,最后在鍵盤輸入一個非數字字符結束整個的輸入操作過程。程序將計算出這些數的和及平均值。 返回java的輸入輸出采用了設計模式,與c+在設計上有較大區別,我們后半段節紹
22、2.5 2.5 數組數組 數組是相同類型的數據按順序組成的一種復合數據類型。通過數組名加數組下標來使用數組中的數據。下標從0開始。 1聲明數組 聲明數組包括數組的名字、數組包含的元素的數據類型。 聲明一維數組有下列兩種格式: 數組元素類型 數組名字 ; 數組元素類型 數組名字;首先記住!,數組是對象!(在java中一切都是對象)2.5 2.5 數組數組 聲明二維數組有下列兩種格式: 數組元素類型 數組名字; 數組元素類型 數組名字; 2創建數組 聲明數組僅僅是給出了數組名和元素的數據類型,要想使用數組還必須為它分配內存空間,即創建數組。在為數組分配內存空間時必須指明數組的長度。格式如下: 數組
23、名字 = new 數組元素的類型數組元素的個數; 例如: float boy= new float4;2.5 2.5 數組數組3數組元素的使用 一維數組通過下標符訪問自己的元素,如boy0,boy1等。需要注意的是下標從0開始,因此,數組若是7個元素,下標到6為止,如果你將來使用下標超過6將會發生異常。 二維數組也通過下標符訪問自己的元素,如a01,a12等 。下標也是從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.
24、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();intpublic int cpluspluscannotdolikethis(string arr);c+ javayes yesno yesno yesyes nono noyes (warn) noyes yesno noyes yesyes yesyes yesyes no2.5 2.5 數組數組 4數組的初始化 創建數組后,系統會給每個數組元素一個默認的值,如,float型是0.0。 我們在聲明數組時同時也還可以給數組的元素一個初始值,如: float boy= 21.3f,23.89f,2.0f,23f,778
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中公寓陪讀合同協議
- 專屬房源代理合同協議
- 合同改名說明協議
- 合唱培訓協議合同協議
- 駕校學員安全協議合同
- 500強訂貨合同協議
- 香港婚介勞務合同協議
- 店面買賣協議書范本
- 2025年銀行從業資格證考試常見問題解答試題及答案
- 2025年銀行從業資格考試的細節關注試題及答案
- 土方平衡工程施工方案樣本
- 基于紅外傳感器的快速體溫檢測系統設計-畢業設計(論文)
- 高三二診考試分析報告
- 跨境電商平臺的融合與創新
- 骨腫瘤的放射治療和化學治療策略
- 23《海底世界》 第二課時 公開課一等獎創新教學設計
- DB37-T 4693.1-2024人民防空工程防護設備安裝技術規程 第1部分:人防門-地方標準
- 危險化學品、煙花爆竹安全生產執法監察培訓課件
- 裝飾工程資金需求計劃
- 權力與理性-17、18世紀西方美術
- 30題藥品質量檢測崗位常見面試問題含HR問題考察點及參考回答
評論
0/150
提交評論