




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第2章 基本數(shù)據(jù)類型和數(shù)組,1. 標識符和關(guān)鍵字 2. 基本數(shù)據(jù)類型 3. 基本數(shù)據(jù)類型的轉(zhuǎn)換 4. 數(shù)據(jù)的輸入與輸出 5數(shù)組,JAVA程序概覽,1.包 包是類和接口的集合,或者說包是接口和類的容器。Java中包的作用主要包括3個: 1)使得功能相關(guān)的類易于查找和使用,同一個包下的類和接口通常是功能相關(guān)的。 2)避免名字出現(xiàn)重復(fù),不同的包下可以有現(xiàn)同名字的類。 3)提供一種訪問權(quán)限的控制機制。前面提到過訪問控制通常是以包為分界的。,包的定義格式如下: package pg; 其中package是包的關(guān)鍵字。 多級包層次結(jié)構(gòu)的格式為: package pg1.pg2.pg3; 包的創(chuàng)建就是將源文件總的接口和類納入指定的包。,1.要使用某個包(不是當前類所在的包)中類的時候,用import關(guān)鍵字引入(有點類似C+的#include) 2.想想如何避免包名沖突? 3.想想如果沒有IDE環(huán)境,我們怎樣定義和生成包 3.包有訪問權(quán)限問題,這將在類權(quán)限部分詳細介紹,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ù)的具體實現(xiàn)(給我們造成多大的麻煩),JAVA一個類的聲明和實現(xiàn)在一起(至關(guān)重要的區(qū)別,目前的技術(shù)認為,.h和.cpp的劃分愚蠢,也許幾年以后你不會再見到.h文件了) 4)C+使用“public:”這樣的形式作為整體變量、方法修飾符;而JAVA必須對每個變量或者方法指定,如果不指定,系統(tǒng)會默認為private,3. 函數(shù)調(diào)用 System.out.println(“請輸入若干個數(shù),每輸入一個數(shù)回車確認“); System是類,定義在包java.lang中 out是System類的靜態(tài)成員對象 println是out對象的靜態(tài)函數(shù),1.想想看為什么程序中沒有import java.lang.*) 2.為什么是類,應(yīng)該是對象???,如果想調(diào)用非靜態(tài)函數(shù),則需要先創(chuàng)建對象,在調(diào)用對象的成員函數(shù)。象這樣(與C+一樣): MyClass obj = new MyClass(); obj.not_static_function(); (怎樣創(chuàng)建對象?這個下面再詳細介紹。注意上面為什么不是obj-,因為JAVA沒指針) (為什么JAVA沒指針?這個以后再詳細介紹),4.創(chuàng)建對象 Scanner reader=new Scanner(System.in);,What is it?,跟C+很像,回憶下C+是怎樣創(chuàng)建對象的?,1.JAVA沒有指針,reader是個句柄,分配在堆中 2.為什么沒有指針,因為專家說不安全(去google查詢下“緩沖區(qū)溢出”,你就知道指針有多糟糕了) 3.new的對象沒有delete,因為對象被分配在“可自動回收的堆中” 4.怎樣做到自動回收,JAVA虛擬機提供了“垃圾自動回收算法”(有興趣的話去google上搜索下這幾個字) 5.為什么要“自動回收”,到google上查詢下”內(nèi)存泄露”或者干兩年程序員你就明白 4.因為沒有指針(這是為什么JAVA=C+-的原因之一),所以調(diào)用對象的成員函數(shù)不是:obj-func();而是obj.func();,5 基本數(shù)據(jù)類型初始化 double sum=0; int m;,這個和C+差不多,不用管它了,表面查不多而已。,1.C+的基本數(shù)據(jù)類型的長度和內(nèi)存編碼是隨CPU和操作系統(tǒng)不同而不同的,而JAVA永遠一致(所以JAVA可以跨平臺,C+不能:write once,run anywhere)。 2.C+定義變量而不初始化,其值是隨機的,而JAVA會為它自動初使化,如果一個變量在使用前沒有賦值,C+編譯器會給予一個警告,而JAVA認為是個語義錯誤(又一個C+-) 3.C+ 認為象int,double,char這些數(shù)據(jù)類型是一個程序設(shè)計語言所必須的,沒有它們不行。而JAVA本身是一個純面向?qū)ο笳Z言(象Smalltalk),這些基本數(shù)據(jù)類型都不是必須的,因為在JAVA中一切都是對象(事實上JAVA已經(jīng)為每一個基本數(shù)據(jù)類型提供了一個“封裝類”,只是為了老程序員的習(xí)慣考慮,才保留了這些基本類型) 4.JAVA中的char與C+中的char完全不同,前者是unicode字符,占兩個字節(jié)16位,后者是ascii字符,占1個字節(jié)8位。(又一個C+-) 5.JAVA中Boolean類型與C+不同,前者不能與數(shù)字類型進行強制轉(zhuǎn)換,后者可以,2.1 標識符和關(guān)鍵字,1標識符 1)Java語言規(guī)定標識符由字母、下劃線、美元符號和數(shù)字組成,并且第一個字符不能是數(shù)字。 2)標識符中的字母是區(qū)分大小寫的,Beijing 和beijing是不同的標識符。 3)標識符用來類、變量、函數(shù)、數(shù)組等變量的名字。 2 關(guān)鍵字 關(guān)鍵字就是Java語言中已經(jīng)被賦予特定意義的一些單詞,它們在程序上有著不同的用途,不可以把關(guān)鍵詞作為名字來用。,返回,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ù)類型也稱作簡單數(shù)據(jù)類型。Java語言有8種簡單數(shù)據(jù)類型,分別是: boolean、byte 、short、int、long、 float、double、char。 這8種數(shù)據(jù)類型習(xí)慣上可分為4大類型: 邏輯類型:boolean 字符類型:char 整數(shù)類型:byte、short、int、long 浮點類型:float、double,Integer,Character,Byte,Short,Long,Float,Double,對應(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字符類型 注意:每個字符占兩個字節(jié),不再使用ASCII編碼,而是使用Unicode 例如字母A的編碼是0x0041,而不是0x41, 而漢字真的編碼是0x771F Java也使用轉(zhuǎn)意字符,如:n:換行 b:退格 t:水平制表 :單引號(這部分與C一樣) u0030: Unicode編碼 (C語言沒有) 變量的定義: 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;,/(這個跟C語言一樣),/C語言不允許,/(JAVA,C都不允許),/(JAVA,C都不允許),/ 賦初值為字符0,實際存儲的是0x0030,/ 用整數(shù)賦初值為0,/賦值9,即0x0039,/ 錯誤,H+k是int型,需強制類型轉(zhuǎn)換,2.2 基本數(shù)據(jù)類型,下面的例子(Example3)中,分別用顯示轉(zhuǎn)換來顯示一些字符在Unicode表中的位置,以及某些位置上的字符。,3整數(shù)類型(byte short int long) 常量:6000(十進制),077(八進制),0x3ABC(十六進制)。 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語言中是const int a=3;) static int a = 3; final static int a = 3; ;(在C語言中是const int a=3;) 注意:C語言中的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;,/ 缺省值是隨機數(shù),/ 賦初值為127,/錯誤,/ 強制類型轉(zhuǎn)換,/ 強制類型轉(zhuǎn)換,/ 不需要強制類型轉(zhuǎn)換,/ 不需要強制類型轉(zhuǎn)換,/錯誤,/ 必須用L或l結(jié)尾,/ 錯誤,乘法運算越界,l3為0,/ l4為4294967296L,/ 4294967296L != 0,/ 錯誤,無法從int自動轉(zhuǎn)為short,/ 這個正確,自動類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換) 整型、實型、字符型數(shù)據(jù)可以混合運算。運算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進行運算,轉(zhuǎn)換從低級到高級: 低-高 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語言不同,自動類型轉(zhuǎn)換不允許從高級到低級進行,數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則: 不能對boolean類型進行類型轉(zhuǎn)換。 不能把對象類型轉(zhuǎn)換成不相關(guān)類的對象。 在把容量大的類型轉(zhuǎn)換為容量小的類型時必須使用強制(顯式)類型轉(zhuǎn)換。 轉(zhuǎn)換過程中可能導(dǎo)致溢出或損失精度 int i = 8; byte b=(byte)i; (byte)255 = -1 (byte)0x5634 = 0x34 浮點數(shù)到整數(shù)的轉(zhuǎn)換是通過舍棄小數(shù)得到,而不是四舍五入 (int)23.7 = 23 (int)-45.89f = -45,2.2 基本數(shù)據(jù)類型,4浮點類型(float,double) 常量:453.5439f,21379.987F,2e40f 21.39d,21.987,123.0,6e-140(6乘10的-140次方),練習(xí) float在機器中占32位,double占64位,常量缺省是double型的 double d1 = 127.0; 賦初值為127 double d2 = 127; 賦初值為127 float f1 = 127.0f; 必須在數(shù)字后加f或F float f2 = 4.0e38f; 錯誤!32位浮點數(shù)不能超過 3.4028234663852886e38 float f3 = (float)d1; 必須強制類型轉(zhuǎn)換,在Java中,引用(reference)指向一個對象在內(nèi)存中的位置,本質(zhì)上它是一種帶有很強的完整性和安全性限制的指針。 當你聲明某個類、接口或數(shù)組類型的變量時,那個變量的值總是某個對象的引用或者是null。 指針就是簡單的地址而已,引用除了表示地址而外,還象被引用的數(shù)據(jù)對象的縮影,還提供其他信息。 指針可以有+、-運算,引用不可以運算。 引用型變量只支持有限的邏輯判斷: 相等判斷(是否同一個對象的引用):= != theObject = null otherObject != theObject 類型判斷(是否是每個類的實例): instanceof theObject instanceof Object “” instanceof String,Java數(shù)據(jù)類型 復(fù)合(引用)數(shù)據(jù)類型,2.4 數(shù)據(jù)的輸入與輸出,由于C語言出現(xiàn)的比較早,那個時候還沒有圖形用戶界面的概念(Graphics User Interface),因此,C語言提供了許多用來輸入、輸出數(shù)據(jù)的函數(shù),例如printf 、scanf等。 Java不象C,提供在命令行進行數(shù)據(jù)輸入、輸出的功能不多。 關(guān)于輸入、輸出我們將在第九章詳細介紹,現(xiàn)在只需知道它的作用是在命令行窗口(例如,MS-DOS窗口)輸出數(shù)據(jù)即可。Sun公司新推出的SDK1.5又新增了一些在命令行進行數(shù)據(jù)輸入、輸出的功能。,2.4 數(shù)據(jù)的輸入與輸出,1數(shù)據(jù)輸出: System.out.printf System.out.printf的功能完全類似C語言中的printf函數(shù)。pringf的一般格式: printf(格式控制部分,表達式1,表達式2,表達式n); 這里的用法與C語言相同,這里不再累述。 下面我們看一個例子,來進一步了解 System.out.printf 數(shù)據(jù)輸出:,2.4 數(shù)據(jù)的輸入與輸出,2數(shù)據(jù)的輸入:Scanner Scanner是SDK1.5新增的一個類,可以使用該類創(chuàng)建一個對象: Scanner reader=new Scanner(System.in); 然后reader對象調(diào)用下列方法(函數(shù)),讀取用戶在命令行輸入的各種數(shù)據(jù)類型, nextByte(), nextDouble(), nextFloat(), nextInt(), nextLine(),nextLong(), nextShort()。,2.4 數(shù)據(jù)的輸入與輸出,上述方法執(zhí)行時都會堵塞,等待你在命令行輸入數(shù)據(jù)回車確認。 下面讓我們來看一個例子,來更好的了解Scanner語句,在這個例子中,用戶在鍵盤依次輸入若干個數(shù)字,每輸入一個數(shù)字都需要按回車鍵確認,最后在鍵盤輸入一個非數(shù)字字符結(jié)束整個的輸入操作過程。程序?qū)⒂嬎愠鲞@些數(shù)的和及平均值。,返回,JAVA的輸入輸出采用了設(shè)計模式,與C+在設(shè)計上有較大區(qū)別,我們后半段節(jié)紹,2.5 數(shù)組,數(shù)組是相同類型的數(shù)據(jù)按順序組成的一種復(fù)合數(shù)據(jù)類型。通過數(shù)組名加數(shù)組下標來使用數(shù)組中的數(shù)據(jù)。下標從0開始。 1聲明數(shù)組 聲明數(shù)組包括數(shù)組的名字、數(shù)組包含的元素的數(shù)據(jù)類型。 聲明一維數(shù)組有下列兩種格式: 數(shù)組元素類型 數(shù)組名字 ; 數(shù)組元素類型 數(shù)組名字;,首先記??!,數(shù)組是對象!(在JAVA中一切都是對象),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ù)組名字 = new 數(shù)組元素的類型數(shù)組元素的個數(shù); 例如: float boy= new float4;,2.5 數(shù)組,3數(shù)組元素的使用 一維數(shù)組通過下標符訪問自己的元素,如boy0,boy1等。需要注意的是下標從0開始,因此,數(shù)組若是7個元素,下標到6為止,如果你將來使用下標超過6將會發(fā)生異常。 二維數(shù)組也通過下標符訪問自己的元素,如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.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)會給每個數(shù)組元素一個默認的值,如,float型是0.0。 我們在聲明數(shù)組時同時也還可以給數(shù)組的元素一個初始值,如: float boy= 21.3f,23.89f,2.0f,23
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級下冊數(shù)學(xué)教案 - 第三單元 第一節(jié)【第一課時】 數(shù)一數(shù)(一)(認識并感受“千”1)北師大版
- 2025年師范大學(xué)協(xié)議管理辦法
- 勞動協(xié)議:勞務(wù)分包協(xié)議(2025年版)
- 2024年水利機械項目資金需求報告代可行性研究報告
- 2024年高性能陶瓷刀具材料項目資金需求報告代可行性研究報告
- 全國清華版信息技術(shù)小學(xué)三年級上冊新授課 第11課 智能輸詞句-詞組和整句輸入 教學(xué)設(shè)計
- 2025年度手房交易資金監(jiān)管補充協(xié)議
- 2025年度大米產(chǎn)業(yè)投資基金簡易合作協(xié)議
- 2025年度商標同授權(quán)及品牌授權(quán)許可合同
- 二零二五年度網(wǎng)紅直播帶貨營銷推廣服務(wù)合同
- 《教育強國建設(shè)規(guī)劃綱要(2024-2035年)》全文
- 《真希望你也喜歡自己》房琪-讀書分享
- 2024年山東省高考生物試卷真題(含答案解析)
- 2024-2025學(xué)年全國中學(xué)生天文知識競賽考試題庫(含答案)
- 小學(xué)科學(xué)湘科版六年級下冊全冊同步練習(xí)含答案
- 思維第一:全面提升學(xué)習(xí)力
- 體育測量與評價_05身體素質(zhì)的測量與評價
- 東華協(xié)同辦公系統(tǒng)簡介
- 三年級上冊數(shù)學(xué)應(yīng)用題大全98715
- 最新版結(jié)婚函調(diào)報告表.doc
- 紙張克重、厚度對照表
評論
0/150
提交評論