JSP實(shí)用簡明教程第二版.ppt_第1頁
JSP實(shí)用簡明教程第二版.ppt_第2頁
JSP實(shí)用簡明教程第二版.ppt_第3頁
JSP實(shí)用簡明教程第二版.ppt_第4頁
JSP實(shí)用簡明教程第二版.ppt_第5頁
已閱讀5頁,還剩384頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

重點(diǎn)內(nèi)容: java技術(shù) jsp技術(shù) Jsp兩種體系結(jié)構(gòu),第1章 概述,一、java技術(shù),Java Beans是Java的可重用組件。 JavaBeans是一個(gè)十分完整的組件模型,它能夠支持標(biāo)準(zhǔn)組件技術(shù)中的各種特性:屬性(properties)、事件(events)、方法(method)和持續(xù)性(persistence) javaBean開發(fā)步驟 指定Beans的屬性; 指定Beans所產(chǎn)生或響應(yīng)的事件; 定義Beans應(yīng)公開給其它Bean的屬性、方法和事件。,1、javabean,一、 java技術(shù),JDBC是用于執(zhí)行SQL語句的Java應(yīng)用程序接口,由一組用Java語言編寫的類與接口組成。 JDBC類文件和Java小應(yīng)用程序是存放在客戶端,用來訪問位于遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫。,2、JDBC,JDBC驅(qū)動(dòng)程序來訪問數(shù)據(jù)庫,過JDBC-ODBC橋驅(qū)動(dòng)程序訪問數(shù)據(jù)庫,一、java技術(shù),J2EE(Java2 Platform Enterprise Edition)平臺(tái)規(guī)范是一個(gè)由SUN公司定義的用于簡化分布式企業(yè)級(jí)應(yīng)用開發(fā)與部署的基于組件的模式。 J2EE平臺(tái)由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成,它對(duì)開發(fā)基于Web的多層應(yīng)用提供了功能支持。,3、J2EE,1.J2EE的層和組件 2.設(shè)計(jì)用戶界面和引擎(Designing the User Interface and Engine ) 3.設(shè)計(jì)基于Web 的應(yīng)用程序(Designing Web-Based Applications),一、java技術(shù),Servlet是使用Java Servlet應(yīng)用程序設(shè)計(jì)接口(API)及相關(guān)類和方法的Java程序。Java Servlet API定義了一個(gè)servlet 和Java使能的服務(wù)器之間的一個(gè)標(biāo)準(zhǔn)接口,這使得Servlets具有跨服務(wù)器平臺(tái)的特性。除了Java Servlet API,Servlet還可以使用用以擴(kuò)展和添加到API的Java類軟件包。 Servlet在啟用Java的Web服務(wù)器上或應(yīng)用服務(wù)器上運(yùn)行并擴(kuò)展了該服務(wù)器的能力。Java Servlet對(duì)于Web服務(wù)器就好象Java applet對(duì)于Web瀏覽器,Servlet的主要功能在于可以事先交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。Servlet裝入Web服務(wù)器并在Web服務(wù)器內(nèi)執(zhí)行,而applet裝入Web瀏覽器并在Web瀏覽器內(nèi)執(zhí)行。,4、java Servlet,一、java技術(shù),Servlet的生命周期在被裝入Web服務(wù)器的內(nèi)存時(shí)開始,并在終止或重新裝入Servlet時(shí)結(jié)束。Servlet在下列時(shí)刻被裝入裝入Web服務(wù)器的內(nèi)存: 如果已配置自動(dòng)裝入選項(xiàng),則在啟動(dòng)服務(wù)器時(shí)自動(dòng)裝入; 在服務(wù)器啟動(dòng)后,客戶機(jī)首次向Servlet發(fā)出請求時(shí); 重新裝入Servlet時(shí); 裝入Servlet后,Web服務(wù)器創(chuàng)建一個(gè)Servlet實(shí)例并且調(diào)用Servlet的init()方法。在初始化階段,Servlet初始化參數(shù)被傳遞給Servlet配置對(duì)象,請求處理對(duì)于到達(dá)服務(wù)器的客戶機(jī)請求,服務(wù)器創(chuàng)建對(duì)應(yīng)于請求的一個(gè)“請求”對(duì)象和一個(gè)“響應(yīng)”對(duì)象。然后服務(wù)器調(diào)用Servlet的service()方法,該方法用于傳遞“請求”和“響應(yīng)”對(duì)象。service()方法從“請求”對(duì)象獲得請求信息,處理該請求后并用“響應(yīng)”對(duì)象的方法將響應(yīng)傳回客戶機(jī)。 當(dāng)服務(wù)器不再需要Servlet,或重新裝入Servlet的新實(shí)例時(shí),服務(wù)器會(huì)調(diào)用Servlet的destroy()方法,來結(jié)束這個(gè)Servlet。對(duì)于更多的客戶端請求,Server創(chuàng)建新的請求和響應(yīng)對(duì)象,仍然激活此Servlet的service()方法,將這兩個(gè)對(duì)象作為參數(shù)傳遞給它。如此重復(fù)以上的循環(huán),但無需再次調(diào)用init()方法,所以一般情況下Servlet只初始化一次。,4、java Servlet-生命周期,一、java技術(shù), Servlet可以和其他資源(文件、數(shù)據(jù)庫、Applet、Java應(yīng)用程序等)交互,以生成返回給客戶端的響應(yīng)內(nèi)容,如果需要,還可以保存請求響應(yīng)過程中的信息。 采用Servlet,服務(wù)器可以完全授權(quán)對(duì)本地資源的訪問(如數(shù)據(jù)庫),并且Servlet自身將會(huì)控制外部用戶的訪問數(shù)量及訪問性質(zhì)。 Servlet可以是其它服務(wù)的客戶端程序。例如,它們可以用于分布式的應(yīng)用系統(tǒng)中,可以從本地硬盤,或者通過網(wǎng)絡(luò)從遠(yuǎn)端硬盤激活Servlet。 Servlet可被鏈接。一個(gè)Servlet可以調(diào)用另一個(gè)或一系列Servlet,即成為它的客戶端。 采用ServletTag技術(shù),可以在HTML頁面中動(dòng)態(tài)調(diào)用Servlet。 Servlet API與協(xié)議無關(guān),它并不對(duì)傳遞它的協(xié)議有任何假設(shè)。,4、java Servlet-優(yōu)勢,一、java技術(shù), 視圖:視圖主要由JSP建立,在struts中,JSP可以使用擴(kuò)展自定義標(biāo)簽庫(TagLib)來簡化創(chuàng)建完全國際化用戶界面。目前的標(biāo)簽庫包括:Bean Tags、HTML tags、Logic Tags、Nested Tags 以及Template Tags等。 模型:模型主要表示一個(gè)系統(tǒng)的狀態(tài),在Struts的體系結(jié)構(gòu)中,在Struts中,系統(tǒng)的狀態(tài)主要有ActiomForm Bean體現(xiàn),一般情況下,這些狀態(tài)是非持久性的。 控制器:在struts中,基本的控制器組件是ActionServlet類中的實(shí)例servelt,實(shí)際使用的servlet在配置文件中由一組映射(由ActionMapping類進(jìn)行描述)進(jìn)行定義。對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成的,其中Action扮演了真正的業(yè)務(wù)邏輯的實(shí)現(xiàn)者,ActionMapping與ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。struts-config.xml 文件配置控制器。,5、Struts,一、java技術(shù),Spring 是一個(gè)開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的。Spring框架最開始的部分是由Rod Johnson于2000年為倫敦的金融界提供獨(dú)立咨詢業(yè)務(wù)時(shí)寫出來的。Spring 框架是一個(gè)分層架構(gòu),由 7 個(gè)定義良好的模塊組成。,6、Spring,二、JSP技術(shù), 程序可以跨臺(tái)平執(zhí)行。目前幾乎所有平臺(tái)上都可以見到一致的java servlet/jsp的Web Server/Application Serve系統(tǒng)。JSP可以讓開發(fā)人員在任意環(huán)境做開發(fā),在任意環(huán)境進(jìn)行系統(tǒng)部署,在任意環(huán)境擴(kuò)展應(yīng)用程序。 多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具而且有許多可以免費(fèi)得到,并且其中的許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。 強(qiáng)大的的可伸縮性。從只有一個(gè)小的jar文件就可以運(yùn)行servlet/jsp到由多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均橫,到多臺(tái)Application進(jìn)行事務(wù)處理、消息處理一臺(tái)服務(wù)器到無數(shù)以服務(wù)器,Java顯示了一個(gè)巨人的生命力。 高效的性能。對(duì)ASP、PHPP、JSP三種語言分別做回圈性能測試及存取Oracle數(shù)據(jù)庫測試。在循環(huán)性能測試中,JSP只用了的四秒鐘就結(jié)束了2000020000的回圈,ASP、PHP測試的是20002000循環(huán)使用了63秒和84秒。,1、JSP技術(shù)概述 優(yōu)勢,二、JSP技術(shù),和ASP、PHP、.NET類似,Java的一些優(yōu)勢也是它致命的問題所在??缙脚_(tái)的功能和極度的伸縮能力極大的增加了產(chǎn)品的復(fù)雜性。也就是說,它在擴(kuò)展時(shí)需要的分成多少塊,那么java系統(tǒng)中就有多少種產(chǎn)品。所以用戶要以看到j(luò)re、jdk、jsdk、jswdk等,實(shí)際上它們只要有效的搭配在一起,就可以產(chǎn)生強(qiáng)大的效能,密不可分,但這同時(shí)使應(yīng)用程序變得非常復(fù)雜。 JSP只有對(duì)Java相當(dāng)熟悉的人才能用得很好,而目前Java程序員還比較少。 JSP程序調(diào)試?yán)щy。JSP頁面首先被轉(zhuǎn)化為一個(gè).java文件(servlet),然后再被編譯。這樣,出錯(cuò)信息實(shí)際上指向的是經(jīng)過轉(zhuǎn)化的那個(gè).java文件而不是jsp本身。例如在.jsp文件第一行的錯(cuò)誤可能被顯示為第20行。如果試圖通過反跟蹤來解決這個(gè)問題有時(shí)會(huì)使結(jié)果顯得很滑稽。(在Resin的引擎中,錯(cuò)誤已經(jīng)可以指向.jsp文件的出錯(cuò)行)。 很難選擇合適的servlet引擎。目前還沒有一個(gè)獨(dú)立的組織來對(duì)各種引擎提供獨(dú)立的benchmark測試。提供商只對(duì)他們自己的產(chǎn)品提供了benchmark測試,但結(jié)論通常以數(shù)據(jù)形式給出,但均回避了穩(wěn)定性。,1、jsp技術(shù)概述不足,二、JSP技術(shù),1.將內(nèi)容的生成和顯示進(jìn)行相分離 2.強(qiáng)調(diào)可重用組件 3.采用標(biāo)識(shí)簡化頁面開發(fā) JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級(jí)的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java 2(企業(yè)版體系結(jié)構(gòu))的一個(gè)組成部分,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。 由于JSP頁面的內(nèi)置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面就具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。 作為Java平臺(tái)的一部分,JSP擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。隨著越來越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。 當(dāng)與Java 2平臺(tái),企業(yè)版(J2EE)和Enterprise JavaBean技術(shù)整合時(shí),JSP頁面將提供企業(yè)級(jí)的擴(kuò)展性和性能,這對(duì)于在虛擬企業(yè)中部署基于Web的應(yīng)用是必需的。,2、Web應(yīng)用開發(fā)的Java Server Pages技術(shù)方法,二、JSP技術(shù), 第2行的作用是一個(gè)JSP指示將信息傳送到JSP引擎。在這個(gè)示例中,第一行指出從該頁面即將訪問的一些Java編程語言的擴(kuò)展的位置。指示被設(shè)置在標(biāo)記中。 固定模板數(shù)據(jù)。所有JSP引擎不能識(shí)別的標(biāo)識(shí)將隨結(jié)果頁面發(fā)送。通常,這些標(biāo)識(shí)是HTML或者XML標(biāo)識(shí)。在上面的例子中包括無序列表(UL)和H1標(biāo)識(shí)。 第5行是JSP動(dòng)作或者標(biāo)識(shí)。這些通常作為標(biāo)準(zhǔn)或定制標(biāo)識(shí)被實(shí)現(xiàn),并且具有XML標(biāo)識(shí)的語法。在這個(gè)例子中,jsp:useBean標(biāo)識(shí)實(shí)例化服務(wù)器端的Clock JavaBean。 第7行,8行一個(gè)表達(dá)式。JSP引擎計(jì)算在標(biāo)記間的所有東西。在上面的列表項(xiàng)中,時(shí)鐘組件(Clock)的Day和Year屬性值作為字符串返回,并且作為輸出插入到JSP文件中。在上面的例子中,第一個(gè)列表項(xiàng)是日子,第二個(gè)是年份。 第10至14行小腳本是執(zhí)行不為標(biāo)識(shí)所支持的功能或者將所有的東西捆綁在一起的小的腳本。JSP 2.0軟件的內(nèi)置腳本語言是基于Java語言的。在上面示例中的小腳本確定現(xiàn)在是上午還是下午,并且據(jù)此來歡迎用戶。,3、JSP頁面,1 2 3 Welcome 4 Today is 5 6 7 Day: 8 Year: 9 10 11 Good Morning 12 13 Good Afternoon 14 15 16 ,二、JSP技術(shù),JSP頁面使用JSP指示將指令傳遞到JSP引擎。這其中包括: JSP頁面指示:傳遞頁面相關(guān)的信息,例如緩沖區(qū)和線程信息或者出錯(cuò)處理。 語言指示:指定腳本語言,以及所有的擴(kuò)展。 包含指示:(在上面例子中有顯示)可以被用來在頁面中包含一個(gè)外部的文檔。一個(gè)好的例子是著作權(quán)文檔或者公司信息文檔在一個(gè)集中地點(diǎn)保存該文檔并且在頁面中包含比在各個(gè)JSP頁面中更新要容易些。當(dāng)然,被包含的文件也可能是另一個(gè)JSP文件。 標(biāo)識(shí)庫指示:指出頁面可以調(diào)用的一個(gè)客戶標(biāo)識(shí)庫。 、 在JSP頁面中,絕大多數(shù)JSP處理將通過與JSP相關(guān)的基于XML的標(biāo)識(shí)完成。JSP1.0中包含大量標(biāo)準(zhǔn)標(biāo)識(shí),這些標(biāo)識(shí)作為核心標(biāo)識(shí)包括: jsp:useBean:這個(gè)標(biāo)識(shí)聲明對(duì)一個(gè)JavaBeans組件實(shí)例的使用。如果該組件的實(shí)例不存在,JavaBeans組件將實(shí)例化和注冊這個(gè)標(biāo)識(shí)。 jsp:setProperty:這個(gè)標(biāo)識(shí)在組件的實(shí)例中設(shè)置一個(gè)屬性的值。 jsp:getProperty:這個(gè)標(biāo)識(shí)獲取一個(gè)組件的實(shí)例的屬性值,將其轉(zhuǎn)化為字符串,并且將它放入隱含對(duì)象“out“中。 jsp:include:這個(gè)標(biāo)識(shí)組件用于包含一個(gè)靜態(tài)或動(dòng)態(tài)的文件。 jsp:forward:這個(gè)標(biāo)識(shí)組件用于重定向一個(gè)HTML文件、JSP文件或一個(gè)程序段。,3、JSP頁面,三、用JSP開發(fā)Web站點(diǎn)的幾種主要方式,對(duì)于最小型的Web站點(diǎn),可以直接使用JSP來構(gòu)建動(dòng)態(tài)網(wǎng)頁,這種站點(diǎn)最為簡單,所需要的僅僅是簡單的留言板、動(dòng)態(tài)日期等基本的功能。對(duì)于這種開發(fā)模式,一般可以將所有的動(dòng)態(tài)處理部分都放置在JSP的Scriptlet中,就像一般使用PHP或ASP開發(fā)動(dòng)態(tài)網(wǎng)頁一樣。,1、直接使用JSP,三、用JSP開發(fā)Web站點(diǎn)的幾種主要方式,中型站點(diǎn)面對(duì)的是數(shù)據(jù)庫查詢、用戶管理和小量的商業(yè)業(yè)務(wù)邏輯。對(duì)于這種站點(diǎn),不能將所有的東西全部交給JSP頁面來處理。在單純的JSP中加入JavaBeans技術(shù)將有助于這種中型站的開發(fā)。利用JavaBeans,將很容易完成如數(shù)據(jù)庫連接、用戶登錄與注銷、商業(yè)業(yè)務(wù)邏輯封裝的任務(wù)。如:將常用的數(shù)據(jù)庫連接寫為一個(gè)JavaBeans,既方便了使用,又可以使JSP文件簡單而清晰,通過封裝,還可以防止一般的開發(fā)人員直接獲得數(shù)據(jù)庫的控制權(quán)。,2、JSP+JavaBeans,三、用JSP開發(fā)Web站點(diǎn)的幾種主要方式,無論用ASP還是PHP開發(fā)動(dòng)態(tài)網(wǎng)站,長期以來都有一個(gè)比較重要的問題,就是網(wǎng)站的邏輯關(guān)系和網(wǎng)站的顯示頁面不容易分開。常??梢钥匆娨恍A雜著ifthen、caseselect或是if和大量顯示用的HTML代碼的ASP、PHP頁面,即使是有著良好的程序?qū)懽髁?xí)慣的程序員,其作品也幾乎無法閱讀。另一方面,動(dòng)態(tài)Web的開發(fā)人員也在抱怨,將網(wǎng)站美工設(shè)計(jì)的靜態(tài)頁面和動(dòng)態(tài)程序和并的過程是一個(gè)異常痛苦的過程。,3、JSP+JavaBeans+Servlet,三、用JSP開發(fā)Web站點(diǎn)的幾種主要方式,在J2EE開發(fā)模型中,整個(gè)系統(tǒng)可以分為3個(gè)主要的部分:視圖、控制器和模型。 視圖就是用戶界面部分,在Web應(yīng)用程序中也就是HTML、XML、JSP頁面。這個(gè)部分主要處理用戶看到的東西,動(dòng)態(tài)的JSP部分處理了用戶可以看見的動(dòng)態(tài)網(wǎng)頁,而靜態(tài)的網(wǎng)頁則由HTML、XML輸出。,4、J2EE開發(fā)模型,四、理解JSP的兩種體系結(jié)構(gòu),JSP頁面中可以非常容易地結(jié)合業(yè)務(wù)邏輯(jsp:useBean)、服務(wù)端處理過程(jsp:scriplet)和HTML(),在JSP頁面中同時(shí)實(shí)現(xiàn)顯示,業(yè)務(wù)邏輯和流程控制,從而可以快速地完成應(yīng)用開發(fā)?,F(xiàn)在很多的Web應(yīng)用就是由一組JSP頁面構(gòu)成的。這種以JSP為中心的開發(fā)模型稱之為Model 1,1、模型1,不足之處 應(yīng)用的實(shí)現(xiàn)一般是基于過程的,一組JSP頁面實(shí)現(xiàn)一個(gè)業(yè)務(wù)流程,如果要進(jìn)行改動(dòng),必須在多個(gè)地方進(jìn)行修改,這樣非常不利于應(yīng)用擴(kuò)展和更新。 由于應(yīng)用不是建立在模塊上的,業(yè)務(wù)邏輯和表示邏輯混合在JSP頁面中沒有進(jìn)行抽象和分離,所以非常不利于應(yīng)用系統(tǒng)業(yè)務(wù)的重用和改動(dòng)。,四、理解JSP的兩種體系結(jié)構(gòu),Model 2表示的是基于MVC模式的框架,MVC是“Model View Controller”的縮寫?!癕odel”代表的是應(yīng)用的業(yè)務(wù)邏輯(通過JavaBean,EJB組件實(shí)現(xiàn)),“View”是應(yīng)用的表示面(由JSP頁面產(chǎn)生),“Controller”是提供應(yīng)用的處理過程控制(一般是一個(gè)Servlet),通過這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過程和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用,從而彌補(bǔ)了Model 1的不足。,2、模型2,不足之處 必須基于MVC組件的方式重新思考和設(shè)計(jì)應(yīng)用結(jié)構(gòu)。原來通過建立一個(gè)簡單的JSP頁面就能實(shí)現(xiàn)的應(yīng)用現(xiàn)在變成了多個(gè)步驟的設(shè)計(jì)和實(shí)現(xiàn)過程。 所有的頁面和組件必須在MVC框架中實(shí)現(xiàn),所以必須進(jìn)行附加地開發(fā)工作。 。,重點(diǎn)內(nèi)容: java語言特點(diǎn) Java數(shù)據(jù)類型 Java運(yùn)算符 Java循環(huán)語句 Java條件語句 Java類技術(shù) Java高級(jí)技術(shù) 多線程技術(shù),第2章 java語言基礎(chǔ),一、java語言特點(diǎn),根據(jù)Sun公司Java白皮書中的描述:Java是一種簡單的、面向?qū)ο蟮?、分布式的、解釋的、健壯的、安全的結(jié)構(gòu)、中立的、可移植的性能、很優(yōu)異的、多線程的、動(dòng)態(tài)的語言,它的特點(diǎn)有: 指針 預(yù)處理 Goto類型轉(zhuǎn)換 釋放內(nèi)存 全局變量的定義 數(shù)據(jù)類型的長度 頭文件,二、 java數(shù)據(jù)類型,Java語言中的數(shù)據(jù)類型分為簡單數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型。 簡單數(shù)據(jù)類型為Java語言定義的數(shù)據(jù)類型,通常是不能由用戶修改的。 復(fù)合數(shù)據(jù)類型是用戶可以根據(jù)自已的需要定義,并實(shí)現(xiàn)其運(yùn)算的類型,是由簡單數(shù)據(jù)類型組合而成的,二、java數(shù)據(jù)類型,數(shù)據(jù)類型指的是一組性質(zhì)相同的值的集合以及定義于這個(gè)值集合上的一組操作的總稱。Java的簡單數(shù)據(jù)類型包括字符型、整型、浮點(diǎn)型和布爾型,1、簡單類型字符型, 字符型常量 字符型常量是用單引號(hào)括起來的一個(gè)字符,如a、A。另外,與C、C+相同,Java也提供轉(zhuǎn)義字符,以反斜杠()開頭,將其后的字符轉(zhuǎn)變?yōu)榱硗獾暮x。與C、C+不同,Java中的字符型數(shù)據(jù)是16位無符號(hào)型數(shù)據(jù),它表示Unicode集,而不僅僅是ASC集,例如u0061表示ISO拉丁碼的a。 字符型變量 字符型變量的類型為char,它在機(jī)器中占16位,其范圍為065535。字符型變量的定義如: char c=a;/指定變量c為char型,且賦初值為a,二、java數(shù)據(jù)類型,Java的整型數(shù)據(jù)類型分為整型常量和變量,1、簡單類型整型, 整型常量 Java的整型常量有三種形式: (1)十進(jìn)制整數(shù),如:123、456、0。 (2)八進(jìn)制整數(shù),以0開頭,如:0123表示十進(jìn)制數(shù)83、011表示十進(jìn)制數(shù)9。 (3)十六進(jìn)制整數(shù),以0x或0X開頭,如0x123表示十進(jìn)制數(shù)291,0X12表示十進(jìn)制數(shù)18。 整型常量占32位,具有int型的值,對(duì)于long型值,則要在數(shù)字后加L或l,如123L表示一個(gè)長整數(shù),它占64位。 整型變量 整型變量的類型有byte、short、int、long這4種。 int類型是最常使用的一種整數(shù)類型。它所表示的數(shù)據(jù)范圍很大,適合于32位、64位處理器。但對(duì)于大型計(jì)算,常會(huì)遇到很大的整數(shù),超出int類型所表示的范圍,這時(shí)要使用long類型。,二、java數(shù)據(jù)類型,Java的浮點(diǎn)型數(shù)據(jù)類型分為浮點(diǎn)型常量和變量,1、簡單類型浮點(diǎn)型, 浮點(diǎn)型常量 Java的浮點(diǎn)型常量有兩種表示形式: (1)十進(jìn)制數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如:0.123、123、123、123.0。 (2)科學(xué)計(jì)數(shù)法形式。如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。 浮點(diǎn)型常量在機(jī)器中占64位,具有double型的值。對(duì)于float型的值,則要在數(shù)字后加f或F,如12.3F,它在機(jī)器中占32位,且表示精度較低。 浮點(diǎn)型變量 浮點(diǎn)型變量的類型有float和double兩種,雙精度類型double比單精度類型float具有更高的精度和更大的表示范圍,常常使用。,二、java數(shù)據(jù)類型,布爾型數(shù)據(jù)只有兩個(gè)值true和false,布爾型變量的定義如: boolean b=true;/定義b為布爾型變量,且初值為true,1、簡單類型布爾型及類型轉(zhuǎn)換,整型、浮點(diǎn)型、字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換從低級(jí)到高級(jí)。轉(zhuǎn)換規(guī)則如表2.4所示。 其中,類型1、2表示參與運(yùn)算的數(shù)據(jù)類型,運(yùn)算符可以為加、減、乘、除等,右邊表示轉(zhuǎn)換成的數(shù)據(jù)類型。,二、java數(shù)據(jù)類型,一維數(shù)組可以看作一個(gè)線性表。一維數(shù)組中每個(gè)元素都有一個(gè)下標(biāo)以確定元素的位置。一維數(shù)組是最簡單的數(shù)組。 一維數(shù)組的定義方式為: type Name; 其中類型“type”可以為Java中任意的數(shù)據(jù)類型,包括簡單類型和組合類型,數(shù)組名“Name”為一個(gè)合法的標(biāo)識(shí)符,“”指明該變量是一個(gè)數(shù)組類型變量。,2、數(shù)組,注意:也可以將數(shù)組名放在“”后面,例如: int al;,二、java數(shù)據(jù)類型,Java中多維數(shù)組被看作數(shù)組的數(shù)組。例如二維數(shù)組為一個(gè)特殊的一維數(shù)組,其每個(gè)元素又是一個(gè)一維數(shù)組。 二維數(shù)組的定義方式為: type Name; 例如:int Array; 對(duì)多維數(shù)組來說,分配內(nèi)存空間有下面幾種方法: (1)直接為每一維分配空間,如: int a=new int23; (2)從最高維開始,分別為每一維分配空間,例如: int a=new int2; a0=new int3; a1=new int3;,2、數(shù)組,多維數(shù)組的初始化有兩種方法: (1)直接對(duì)每個(gè)元素進(jìn)行賦值。 (2)在定義數(shù)組的同時(shí)進(jìn)行初始化。,三、運(yùn)算符,運(yùn)算符是進(jìn)行特定類型運(yùn)算的符號(hào),按操作數(shù)的數(shù)目來分,可以分為: 一元運(yùn)算符(如“+”,“-”) 二元運(yùn)算符(如“+”,“”) 三元運(yùn)算符(如“?:”) 它們分別對(duì)應(yīng)于一個(gè)、兩個(gè)和三個(gè)操作數(shù)。對(duì)于一元運(yùn)算符來說,可以有前綴表達(dá)式,如“+i”和后綴表達(dá)式,如“i+”,對(duì)于二元運(yùn)算符來說則采用中綴表達(dá)式,如“a+b”。 按照運(yùn)算符功能來分,基本的運(yùn)算符有下面幾類: 算術(shù)運(yùn)算符:+,-,*,/,%,+,- 關(guān)系運(yùn)算符:,=,&,|, 賦值運(yùn)算:=,及其擴(kuò)展賦值運(yùn)算符,如+= 條件運(yùn)算符:?: 其它:包括分量運(yùn)算符,下標(biāo)運(yùn)算符,實(shí)例運(yùn)算符instanceof,內(nèi)存分配運(yùn)算符new,強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型),方法調(diào)用運(yùn)算符()等。,三、運(yùn)算符,算術(shù)運(yùn)算符用于對(duì)整型數(shù)或者浮點(diǎn)數(shù)進(jìn)行運(yùn)算。Java語言中的算術(shù)運(yùn)算符包括一元運(yùn)算符和二元運(yùn)算符。所謂的幾元運(yùn)算符即參加運(yùn)算的操作數(shù)的個(gè)數(shù)。,1、算術(shù)運(yùn)算符,三、運(yùn)算符,位運(yùn)算符用來對(duì)二進(jìn)制位進(jìn)行操作,它允許操作一個(gè)整數(shù)主數(shù)據(jù)類型中的單個(gè)“比特”(即二進(jìn)制位),位運(yùn)算符會(huì)對(duì)兩個(gè)自變量中對(duì)應(yīng)的位執(zhí)行布爾代數(shù),并最終生成一個(gè)結(jié)果。位運(yùn)算符中,除“”以外,其余均為二元算術(shù)運(yùn)算符。,2、整數(shù)位運(yùn)算符,三、運(yùn)算符,關(guān)系運(yùn)算符用來比較兩個(gè)值,返回布爾類型的值true或false,而且,關(guān)系運(yùn)算符都是二元運(yùn)算符。 關(guān)系運(yùn)算符包括小于()、小于或等于(=)、等于(=)以及不等于(!=)。,3、關(guān)系運(yùn)算符,三、運(yùn)算符,布爾邏輯運(yùn)算用于進(jìn)行布爾類型數(shù)據(jù)的邏輯運(yùn)算,布爾邏輯運(yùn)算符有三個(gè):&、|和!,如表2.9所示。它們的運(yùn)算規(guī)則如下: 僅當(dāng)兩個(gè)操作數(shù)的值均為true時(shí),&運(yùn)算的結(jié)果才是true,否則都是false; 僅當(dāng)兩個(gè)操作數(shù)的值均為false時(shí),|運(yùn)算的結(jié)果才是false,否則都是true。,4、布爾運(yùn)算符,三、運(yùn)算符,賦值運(yùn)算符用于把一個(gè)數(shù)值賦予一個(gè)變量。賦值運(yùn)算符兩邊的類型不一致時(shí),那么如果左側(cè)變量的數(shù)據(jù)類型的級(jí)別高,則右邊的數(shù)據(jù)將被轉(zhuǎn)化成左邊的數(shù)據(jù)類型在賦予左邊的變量,否則需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,5、賦值運(yùn)算符,三、運(yùn)算符,條件運(yùn)算符“?:”為三元運(yùn)算符,它的作用是根據(jù)表達(dá)式的真假?zèng)Q定變量的值。其一般形式為: A?B:C 其中,A是返回值為布爾型的表達(dá)式,如果這個(gè)值為true,那么這個(gè)語句返回B,否則返回C。而且語句B和C需要返回相同的數(shù)據(jù)類型,且該類型不能是void。條件運(yùn)算符是ifelse語句的簡略方式。 例如:radio=heom=0?0:num/heom; 該例中,如果heom=0,則radio=0,否則radio=num/heom。,6、條件運(yùn)算符,三、運(yùn)算符,在對(duì)一個(gè)表達(dá)式進(jìn)行運(yùn)算時(shí),要按運(yùn)算符的優(yōu)先順序從高向低進(jìn)行,同級(jí)的運(yùn)算符則按從左到右的方向進(jìn)行。運(yùn)算符的優(yōu)先順序如表2.11所示。,7、運(yùn)算符優(yōu)先級(jí),四、條件語句,分支語句的作用為根據(jù)條件表達(dá)式?jīng)Q定執(zhí)行程序的某一部分而不執(zhí)行另外一部分。if.else語句根據(jù)判定條件的布爾值來決定執(zhí)行哪個(gè)操作。Ifelse的一般格式是:,expression是返回值為布爾型的表達(dá)式。在第一種格式中,if根據(jù)expression的值判定是否執(zhí)行statement語句;第二種格式中,如果expression的值為true,則執(zhí)行statement1,否則執(zhí)行statement2。每個(gè)單一的語句后都必須有分號(hào)。statement1、statement2語句可以為復(fù)合語句。if.else還有一種特殊格式為:,五、循環(huán)語句,循環(huán)語句的作用是反復(fù)執(zhí)行一段代碼,直到滿足終止循環(huán)的條件為止,一個(gè)循環(huán)一般應(yīng)包括4部分內(nèi)容。 初始化部分(initialization):用來設(shè)置循環(huán)的一些初始條件,如計(jì)數(shù)器清零等。 循環(huán)體部分(body):這是反復(fù)循環(huán)的一段代碼,可以是單一的一條語句,也可以是復(fù)合語句。 迭代部分(iteration):這是在當(dāng)前循環(huán)結(jié)束,下一次循環(huán)開始前執(zhí)行的語句,常常用來使計(jì)數(shù)器加1或減1。 終止部分(termination):通常是一個(gè)布爾表達(dá)式,每一次循環(huán)都要對(duì)該表達(dá)式求值,以驗(yàn)證是否滿足循環(huán)終止條件。 Java中提供的循環(huán)語句有:while語句,do-while語句和for語句。,五、循環(huán)語句,while語句的一般格式是: while(expression) Statement; ,1、while與dowhile語句,dowhile語句的一般格式是: do statement While (expression) 執(zhí)行的過程與while語句類似,不過,dowhile語句首先執(zhí)行一遍大括號(hào)中的statement,然后再判斷expression的值。不過,在實(shí)際應(yīng)用中,while比do-while更常用一些。,expression是一個(gè)布爾型的變量或者是一條返回值布爾型的語句,while語句首先檢測expression的值,如果這個(gè)值為true,則程序接著執(zhí)行statement,并且初始化部分和迭代部分是任選的。執(zhí)行結(jié)束之后,while再次判斷expression的值,周而復(fù)始。如果expression的值為false,則程序跳過大括號(hào)中的語句轉(zhuǎn)向下面的執(zhí)行語句。,五、循環(huán)語句,for語句的一般格式為: for(expression;expression1;expression2) statement expression是初始化語句,這個(gè)語句在循環(huán)開始前執(zhí)行,這部分通常進(jìn)行給循環(huán)計(jì)數(shù)變量賦初值等初始化操作;expression1是循環(huán)結(jié)束條件;expression2在每一次循環(huán)結(jié)束后調(diào)用。這三部分之間由分號(hào)“;”隔開,每部分都可以是空語句,但是分號(hào)不能省略。初始化、終止以及迭代部分均為空的時(shí)候,相當(dāng)于一個(gè)無限循環(huán)。例如:for(;)forever(); for語句執(zhí)行時(shí),首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。,2、for循環(huán),六、循環(huán)退出語句,在任何循環(huán)語句的主體部分,亦可用break、return、continue控制循環(huán)的流程。其中, break用于強(qiáng)行退出循環(huán),不執(zhí)行循環(huán)中剩余的語句; return語句從當(dāng)前方法中退出,返回到調(diào)用該方法的語句處,并從緊跟該語句的下一條語句繼續(xù)程序的執(zhí)行; continue則停止執(zhí)行當(dāng)前的反復(fù),然后退回循環(huán)起始處,開始新的反復(fù)。,1、break語句,break的一般格式是: break label; 如果沒有l(wèi)abel的標(biāo)號(hào),則break使得程序從循環(huán)體或者switch中跳轉(zhuǎn)出來;如果有l(wèi)abel標(biāo)號(hào),則程序跳轉(zhuǎn)到標(biāo)號(hào)所指明的程序塊開頭,這種情況下相當(dāng)于C+中g(shù)oto語句。 例如: while(true)i+;if(i50)break;。 /當(dāng)i等于51時(shí)跳出循環(huán),六、循環(huán)退出語句,return語句是從當(dāng)前方法返回到調(diào)用該方法的語句處,該返回語句有兩種格式: (1)return expression; 返回一個(gè)值給調(diào)用該方法的語句,返回值的數(shù)據(jù)類型必須和方法聲明中的返回值類型一致。可以使用強(qiáng)制類型轉(zhuǎn)換來使類型一致。 (2)return; 當(dāng)方法說明中用void聲明返回類型為空時(shí),應(yīng)使用這種格式,它不返回任何值。 在Java中,單獨(dú)的return語句用在一個(gè)循環(huán)體的中間時(shí),會(huì)產(chǎn)生編譯錯(cuò)誤,因?yàn)檫@時(shí)會(huì)有一些語句執(zhí)行不到。但可以通過把return語句嵌入某些語句,如if-else,來使程序在未執(zhí)行完方法中的所有語句時(shí)退出。,2、return語句,六、循環(huán)退出語句,continue語句的一般格式為: continue label; 沒有l(wèi)abel時(shí),continue語句結(jié)束本次循環(huán),跳過循環(huán)體中以下的語句,接著進(jìn)行循環(huán)語句中結(jié)束條件的判斷;有l(wèi)abel標(biāo)號(hào)的時(shí)候,continue可以跳轉(zhuǎn)到label標(biāo)號(hào)所指明的外層循環(huán),3、continue語句,for(int i=0;ii) continue outer; ,七、分支語句,switch語句能夠根據(jù)表達(dá)式的值決定執(zhí)行多個(gè)操作中的一個(gè)或者幾個(gè)。,switch (expression) case value1:statement1; break; case valueN:statemendN; break; default:default_Statement; ,七、分支語句,分支語句示例:運(yùn)行結(jié)果:Number of Days=31,1 public class SwitchDemo 2 public static void main(String args) 3 int month = 5; 4 int year = 2005; 5 int numDays = 0; 6 switch (month) 7 case 1: 8 case 3: 9 case 5: 10 case 7: 11 case 8: 12 case 10: 13 case 12: 14 numDays = 31;,15 break; 16 case 4: 17 case 6: 18 case 9: 19 case 11: 20 numDays = 30; 21 break; 22 case 2: 23 if (year % 4 = 0) 31 32 ,八、java強(qiáng)制類型轉(zhuǎn)換,簡單數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換 高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù),需用到強(qiáng)制類型轉(zhuǎn)換,如:int i; byte b=(byte)i;/把int型變量i強(qiáng)制轉(zhuǎn)換為byte型 注意:這種使用可能會(huì)導(dǎo)致溢出或精度的下降。,簡單數(shù)據(jù)類型和對(duì)象之間的強(qiáng)制轉(zhuǎn)換比較復(fù)雜,例: System.Object o=new Jeff(“ConstructorParam1“) 編譯通過并正確執(zhí)行 例:Jeff j=o; 為了能通過編譯,必須插入如下的強(qiáng)制類型轉(zhuǎn)換: Jeff j=(Jeff)o; 然后就可以編譯通過并成功執(zhí)行。,例子: System.Object o=new System.Object(); Jeff j=(Jeff)o; 第一行創(chuàng)建了一個(gè)System.Object類型對(duì)象。第二行代碼試圖將System.Object引用類型轉(zhuǎn)換為Jeff引用類型。兩行代碼都能編譯通過。但是在執(zhí)行的時(shí)候,第二行代碼產(chǎn)生一個(gè)InvalidCastException異常,如果捕獲不到這個(gè)異常,將強(qiáng)制應(yīng)用程序終止。 當(dāng)?shù)诙写a執(zhí)行時(shí),公共語言運(yùn)行時(shí)查證o所指的對(duì)象就是Jeff類型對(duì)象(或任何Jeff派生類型)。如果是,則公共語言運(yùn)行時(shí)允許強(qiáng)制類型轉(zhuǎn)換。否則,如果o所指的對(duì)象與Jeff類型無關(guān),或是一個(gè)Jeff的基類,則公共語言運(yùn)行時(shí)會(huì)預(yù)防這種不安全的強(qiáng)制類型轉(zhuǎn)換并產(chǎn)生InvalidCastException異常。,八、java類基礎(chǔ),類是Java語言面向?qū)ο缶幊痰幕驹?,它定義了一個(gè)對(duì)象的結(jié)構(gòu)和行為,是這一類對(duì)象的原型。在Java程序里,將要表達(dá)的概念封裝在某個(gè)類里。一個(gè)類定義了一個(gè)對(duì)象的結(jié)構(gòu)和它的功能接口,功能接口稱為成員函數(shù)。當(dāng)Java程序運(yùn)行時(shí),系統(tǒng)用類的定義創(chuàng)建類的實(shí)例,類的實(shí)例是真正的對(duì)象。,在Java中,類定義的一般形式如下Modifierclass classNameextends superClassName classBody 簡單的類的定義:class University,例子: 1 class Ponit 2 int x, y; 3 void init(int ix, int iy) 4 x = ix; 5 y = iy; 6 7 ,1、類的聲明和類體,八、java類基礎(chǔ),成員變量是一個(gè)對(duì)象區(qū)別于其他對(duì)象的特征,它決定了對(duì)象的外觀、狀態(tài)、以及其他的一些特性。成員變量具有著確定的值 最簡單的成員變量的聲明為:type variableName; 成員變量的類型可以是Java中的任意數(shù)據(jù)類型,包括簡單類型、數(shù)組、類和接口。在一個(gè)類中,成員變量應(yīng)該是唯一的, 成員變量的名字可以和類中某個(gè)方法的名字相同,類的成員變量和在方法中所聲明的局部變量是不同的,成員變量的作用域是整個(gè)類,而局部變量的作用域只是方法內(nèi)部。,例: class Point int x,y; int x() return x; 例子中方法x()和變量x具有相同的名字。,class TransientVar transient TransientV; transient聲明一個(gè)暫時(shí)性變量,在缺省情況下,類中所有變量都是對(duì)象永久狀態(tài)的一部分,當(dāng)對(duì)象被存檔時(shí),這些變量必須同時(shí)被保存。用transient限定的變量則指示Java虛擬機(jī),該變量并不屬于對(duì)象的永久狀態(tài)。它主要用于實(shí)現(xiàn)不同對(duì)象的存檔功能。,2、成員的聲明,八、java類基礎(chǔ),類的行為決定了它的實(shí)例的行為,即當(dāng)一個(gè)實(shí)例接收到其他實(shí)例(可能是其他的類的實(shí)例)發(fā)送來的消息或者它自身的屬性改變時(shí)所執(zhí)行的操作。行為是對(duì)象提供服務(wù)的方式。 方法調(diào)用的格式為: objectReference.methodName (paramlist); objectreference是指向某個(gè)對(duì)象的變量,methodname是objectreference所屬類的一個(gè)成員函數(shù),paramlist是用逗號(hào)分隔的變量或表達(dá)式的序列,它們要與該成員函數(shù)的定義的參數(shù)個(gè)數(shù)及類型匹配。 例如,要設(shè)置對(duì)象p的firstName和lastName,可以用 p.setName(“Karl“,“Grouch“);,3、方法的調(diào)用,八、java類基礎(chǔ),Java在類里提供了一個(gè)特殊的成員函數(shù),叫做構(gòu)造函數(shù)(Constructor)。所有的Java類都有構(gòu)造函數(shù)。 例如,Stack類的構(gòu)造函數(shù)的名字為Stack,而 Rectangle類的構(gòu)造函數(shù)的名字為Rectangle,Thread類的構(gòu)造函數(shù)的名字為Thread。 一個(gè)構(gòu)造函數(shù)是對(duì)象被創(chuàng)建時(shí)初始對(duì)象的成員函數(shù)。它具有和它所在的類完全一樣的名字。一旦定義好一個(gè)構(gòu)造函數(shù),創(chuàng)建對(duì)象時(shí)就會(huì)自動(dòng)調(diào)用它。構(gòu)造函數(shù)沒有返回類型,即使是void類型也沒有。這是因?yàn)橐粋€(gè)類的構(gòu)造函數(shù)的返回值的類型就是這個(gè)類本身。構(gòu)造函數(shù)的任務(wù)是初始化一個(gè)對(duì)象的內(nèi)部狀態(tài),所以用new操作符創(chuàng)建一個(gè)實(shí)例后,立刻就會(huì)得到一個(gè)清楚、可用的對(duì)象。如果沒有實(shí)現(xiàn)類的構(gòu)造方法,則Java運(yùn)行時(shí)系統(tǒng)會(huì)自動(dòng)提供缺省的構(gòu)造方法,它沒有任何參數(shù)。,1 class University 2 String name, city; 3 University(String name, String city) 4 = name; 5 this.city = city; 6 7 8 class UniversityCreate 9 10 public static void main(String args) 11 University u = new University(“清華大學(xué)“, “北京“); 12 System.out.println(“大學(xué):“ + + “城市:“ + u.city); 13 14 ,運(yùn)行結(jié)果如下: 大學(xué):清華大學(xué)城市:北京,4、構(gòu)造函數(shù),八、java類基礎(chǔ),Java語言實(shí)現(xiàn)了成員函數(shù)重載,即可以創(chuàng)建幾個(gè)名字相同、參數(shù)不同的成員函數(shù),但是其參數(shù)必須不同,或者是參數(shù)個(gè)數(shù)不同,亦或者是參數(shù)類型不同。重載提供了Java的多態(tài)行為。,15 boolean samecity(University u) 16 return samecity(u.city); 17 18 19 class UniversityCity 20 21 public static void main(String args) 22 String city = “上?!? 23 University u1 = new University(“北京大學(xué)“, “北京“); 24 University u2 = new University(“清華大學(xué)“, “北京“); 25 System.out.println(“u1=“ + + “,“ + u1.city); 26 System.out.println(“u2=“ + + “,“ + u2.city); 27 System.out.println(“city=“ + city); 28 System.out.println(“u1.samecity(u2)=“ + u1.samecity(u2); 29 System.out.println(“u1.samecity(city)=“ + u1.samecity(city); 30 31 ,1 class University 2 String name, city 3 University(String name, String city) 4 = name; 5 this.city = city; 6 7 8 boolean samecity(String city) 9 if (city.equals(this.city) 10 return true; 11 else 12 return false; 13 14 ,5、重載,執(zhí)行結(jié)果:C:java UniversityCity u1=北京大學(xué),北京 u2=清華大學(xué),北京 city=上海 u1.samecity(u2)=true u1.samecity(city)=false,八、java類基礎(chǔ),6 繼承 在Java語言中是通過在類的聲明中加入extends子句來創(chuàng)建一個(gè)類的子類的,其格式如下: class SubClass extends SuperClass extends子句就是用來指明類之間的繼承關(guān)系的。一個(gè)類是它的extends子句中指定的類的直接子類,而extends子句中指定的類又是這個(gè)類的直接父類。例子中把SubClass聲明為SuperClass的直接子類,如果SuperClass又是某個(gè)類的子類,則SubClass同時(shí)也是該類的(間接)子類。如果缺省extends子句,則該類為java.lang.Object的子類。子類可以繼承父類中訪問權(quán)限設(shè)定為public、protected、friendly的成員變量和方法。,1 class superClass 2 static int x = 1; 3 int y = 2; 4 static int z = 3; 5 String str = “superClass“; 6 7 class subClass extends superClass 8 9 static double x = 1.2; 10 float y = 2.3f; 11 String z = “subclass“; 12 13 public class FieldExtend 14 15 public static void main(String args) 16 subClass s = new subClass(); 17 System.out.println(“s.x=“ + s.x); 18 System.out.println(“s.y=“ + s.y); 19 System.out.println(“s.z=“ + s.z); 20 System.out.println(“s.str=“ + s.str); 21 System.out.println(“(superClass)s).y=“ + (superClass) s).y); 22 23 ,6、繼承,運(yùn)行結(jié)果: s.x=1.2 s.y=2.3 s.z=subClass s.str=superClass (superClass)s).y=2,九、java高級(jí)類技術(shù),所謂抽象類是指這種類沒有具體對(duì)象的一種概念類。這樣的類就是Java語言的abstract類。抽象類是一種非完整類,因此,這些類不能直接用new操作符生成實(shí)例。 當(dāng)下列幾個(gè)條件中的任一個(gè)成立時(shí),就認(rèn)為該類中包含抽象方法: 包含有一個(gè)抽象方法的聲明; 從直接父類中繼承了一個(gè)抽象方法; 在類的直接超接口中說明或繼承了某個(gè)抽象方法,但是在這個(gè)類中既沒有再聲明一個(gè)方法來實(shí)現(xiàn)它、也沒有繼承一個(gè)方法來實(shí)現(xiàn)它。 實(shí)例: 代碼如右,運(yùn)行結(jié)果為: C:java Abstract 在B的callme成員函數(shù)里 在A的metoo成員函數(shù)里,1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論