Java基礎教程ppt課件匯總(完整版)_第1頁
Java基礎教程ppt課件匯總(完整版)_第2頁
Java基礎教程ppt課件匯總(完整版)_第3頁
Java基礎教程ppt課件匯總(完整版)_第4頁
Java基礎教程ppt課件匯總(完整版)_第5頁
已閱讀5頁,還剩585頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章Java語言概述本章的主要內容:1.1Java語言的發(fā)展里程1.2java的特點 1.3平臺無關性1.4Java虛擬機JVM1.5Java與C/C++之關系1.6Java運行平臺1.7Java程序開發(fā)1.8Java開發(fā)工具箱1.9JDK1.5編譯器的新規(guī)定1.1Java語言的發(fā)展里程Java語言前身是Oak語言,于1991年推出,但僅限于SunMicrosystems公司內部使用。1995年Oak語言改名為“Java”,并正式向公眾推出,主要貢獻者是JamesGosling。1.2版本的Java是Java語言發(fā)展過程中一個關鍵階段,從此,Sun公司將Java更名為Java2。經過十年的發(fā)展,Java語言已經發(fā)展到1.6版本。1.2java的特點(1/4)1.語法簡單(1)Java的風格類似于C++(2)Java摒棄了C++中容易引發(fā)程序錯誤的地方,如指針和內存管理;(3)Java提供了豐富的類庫。2.面向對象面向對象編程是一種先進的編程思想,更加容易解決復雜的問題。面向對象可以說是Java最重要的特性。Java語言的設計完全是面向對象的,1.2java的特點(2/4)3.分布式JAVA從誕生就起就與網絡聯系在一起,它強調網絡特性,內置TCP/IP,HTTP,FTP協議類庫,便于開發(fā)網上應用系統(tǒng)。4.安全性(1)在Java語言里,象指針和釋放內存等C++功能被刪除,避免了非法內存操作。(2)當Java用來創(chuàng)建瀏覽器時,語言功能和一些瀏覽器本身提供的功能結合起來,使它更安全。Java語言在機器上執(zhí)行前,要經過很多次的測試。其三級安全檢驗機制可以有效防止非法代碼侵入,阻止對內存的越權訪問。51.2java的特點(3/4)5.健壯性Java致力于檢查程序在編譯和運行時的錯誤。異常檢查可盡早的發(fā)現可能存在的錯誤。類型檢查幫助檢查出許多開發(fā)早期出現的錯誤。6.解釋運行,高效率Java解釋器(運行系統(tǒng))能直接運行目標代碼指令。Java程序經編譯器編譯,生成的字節(jié)碼經過精心設計,并進行了優(yōu)化,因此運行速度較快,客服了以往解釋性語言運行效率低的缺點。1.2java的特點(4/4)7.與平臺無關JAVA編譯器將JAVA程序編譯成二進制代碼,即字節(jié)碼。字節(jié)碼有統(tǒng)一的格式,不依賴于具體的硬件環(huán)境。8.多線程Java提供的多線程功能使得在一個程序里可同時執(zhí)行多個小任務。9.動態(tài)性Java的動態(tài)特性是其面向對象設計方法的發(fā)展。它允許程序動態(tài)地裝入運行過程中所需要的類。1.3平臺無關性(1/2)平臺無關類型包括源代碼級和目標代碼級兩種類型。C和C++屬于源代碼級平臺無關,意味著用其寫的應用程序不用修改只需重新編譯就可以在不同平臺上運行。Java屬于目標代碼級平臺無關,主要靠Java虛擬機JVM來實現。對高級語言的翻譯方式有解釋和編譯兩種解釋方式就是一邊翻譯一邊運行而編譯方式則是一次性翻譯好,生成目標程序。1.3平臺無關性(2/2)解決移植性的方法有以下兩種方式:方式1:到一臺機器上將源程序重新編譯成適合該臺機器的機器代碼。方式2:將高級語言源程序編譯成一種與機器無關的中間代碼(如Java語言的字節(jié)碼),該中間代碼程序不能被操作系統(tǒng)直接執(zhí)行,需要由解釋其來解釋和執(zhí)行。Java語言采用方式2,將由解釋程序擴展了的指令系統(tǒng)的機器稱為Java虛擬機,簡稱JVM。1.4Java虛擬機JVM虛擬機是一種對計算機物理硬件計算環(huán)境的軟件實現。虛擬機是一種抽象機器,內部包含一個解釋器(Interpreter),可以將其它高級語言編譯為虛擬機的解釋器可以執(zhí)行的代碼(稱這種代碼為中間語言IntermediateLanguage),實現高級語言程序的可移植性平臺無關性(SystemIndependence),無論是運行在嵌入式設備還是多個處理器的服務器上,虛擬機都執(zhí)行相同的指令,所使用的支持庫也具有標準的API和完全相同或相似的行為。1.4Java虛擬機JVMJava虛擬機(JavaVirtualMachine,簡稱JVM)是一種抽象機器,它附著在具體操作系統(tǒng)上,本身具有一套虛擬機器指令,并有自己的棧,寄存器等,運行JAVA程序不可少的機制。編譯后的JAVA程序指令并不直接在硬件系統(tǒng)CPU上執(zhí)行,而是在JVM執(zhí)行。在JVM上有一個Java解釋器用來解釋Java編譯器編譯后的程序。任何一臺機器只要配備了解釋器,就可以運行這個程序,而不管這種字節(jié)碼是在何種平臺上生成的。圖1-1計算機硬件、操作系統(tǒng)、JVM與各種可執(zhí)行程序之間的關系機器代碼硬件操作系統(tǒng)JVM本地可執(zhí)行文件(.exe,.com文件)Java字節(jié)碼文件(.class文件)1.4Java虛擬機JVMJVM體系結構圖類裝載器字節(jié)碼解釋器安全管理器垃圾收集器線程管理圖形Java虛擬機操作系統(tǒng)字節(jié)碼*.class文件圖1-2Java虛擬機體系結構示意圖1.5Java與C/C++之關系相近之處Java中許多基本語句的語法和C++一樣,像常用的循環(huán)語句、控制語句等和C++幾乎一樣Java和C++是兩種完全不同的語言1.5Java與C/C++之關系不同之處Java去掉了C++語言的許多功能,Java中沒有#include和#define等預處理功能,用import語來句包含其它類和包;Java中沒有structure,union及typedef;Java中沒有不屬于類成員的函數,沒有指針和多重繼承,Java只支持單重繼承;Java中禁用goto,但goto還是保留的關鍵字;Java中沒有操作符重載;Java中沒有全局變量,可以在類中定義公用、靜態(tài)的數據成員實現相同功能。……1.6Java運行平臺1.三種平臺簡介J2SE:Java標準版或Java標準平臺。J2SE提供了標準的SDK開發(fā)平臺(以前稱做JDK開發(fā)平臺)。J2EE:Java企業(yè)版或Java企業(yè)平臺。J2ME:Java微型版或Java小型平臺。2.安裝J2SE平臺——簡介JDK版本發(fā)布日期版本說明及主要內容JDK1.0a21995.05正式對外發(fā)布JDK1.0.21996.01標準的I/O庫、網絡庫、applet、文件I/O以及基本的窗口庫等JDK1.11997.02內部類、新的事件處理模型、RMI、JavaBean,JDBC、串行化、國際化、日歷類以及性能改進等JDK121998.12浮點運算改進、StringGUI庫、集合、Java2D圖形、可訪問性(可視化GUI支持)、引用對象以及性能改進等JDK1.32000.05性能改進、CORBA兼容性、Java音頻支持以及JNDI等JDK1.42001.12斷言語句、64位地址空間(Solaris),新的I/O庫、模式匹配、鼠標滑輪支持、IPv6,XML,WebStart支持、性能改進及命名為Merlin的代碼等JDK1.52003.07通用性(代碼模塊)、允許一些云算符重載以及命名為Tiger的代碼等1.6Java運行平臺3.環(huán)境變量JAVA_HOME為那些需要使用Java命令和JVM的程序提供了通用的路徑信息,其值應設置為JDK的安裝目錄的路徑,JAVA_HOME=C:\jdk1.5CLASSPATH用于指明字節(jié)碼文件的位置。CLASSPATH=c:\jdk1.5\jre\lib\rt.jar;.PATH是操作系統(tǒng)使用的變量,用于搜索在Shell中輸入的希望執(zhí)行的命令。Java編譯器源文件編輯器字節(jié)碼文件由Web瀏覽器執(zhí)行文件名.java產生對于Java小應用程序對于Java應用程序由Java解釋器執(zhí)行圖1-1Java程序開發(fā)過程示意圖1.7Java程序開發(fā)1.7Java程序開發(fā)1.Java應用程序的開發(fā)編寫源文件 Editplus等文本編輯器生成Hello.java編譯源文件生成字節(jié)碼javacHello.java加載運行字節(jié)碼javaHello//Hello.javapublicclassHello{publicstaticvoidmain(Stringargs[]){System.out.println("你好,很高興學習Java");}}C:>javacHello.javaC:>javaHello1.7Java程序開發(fā)2.JavaApplet程序的開發(fā)編寫源文件Editplus等文本編輯器Boy.java編譯源文件生成字節(jié)碼javacBoy.java通過瀏覽器加載運行字節(jié)碼Html文件myBoy.html<appletcode=Boy.classheight=100width=300></applet> 或appletviewewmyboy.html//Boy.javaimportjava.applet.*;importjava.awt.*;publicclassBoyextendsApplet{publicvoidpaint(Graphicsg){g.setColor(Color.blue);g.drawString("Java是一門很優(yōu)秀的語言",12,30);g.setColor(Color.red);g.drawString("我一定認真學習Java",22,56);}}//myBoy.html<appletcode=Boy.classheight=100width=300></applet>C:>javacBoy.javaC:>appletviewewmyboy.html1.8Java開發(fā)工具箱Java開發(fā)工具箱(JDK-JavaDevelopmentKit)是Sun公司為用戶提供的集成和執(zhí)行applets和應用程序的工具javac編譯器:可以用任何文字編輯器創(chuàng)建Java程序java翻譯器;用于執(zhí)行編譯過的Java應用程序。appletviewer:可運行applets而不必運行Web瀏覽器。javap反匯編程序:從字節(jié)碼文件恢復java原代碼。javadoc工具:可以為所編寫的源文件生成HTML文檔1.9JDK1.5編譯器的新規(guī)定JDK1.5的編譯器javac.exe和以前版本的編譯器有了一個很大的不同,不再向下兼容,也就是說,如果在編譯源文件時沒有特別約定的話,用JDK1.5的編譯器生成的字節(jié)碼只能在安裝了JDK1.5或JRE1.5的Java平臺環(huán)境中運行。第2章Java語言基礎2.1Java程序概況2.2基本數據類型2.3運算符和表達式2.4Java語句2.1Java程序概況2.1.1Java程序結構2.1.2Java注釋2.1.3Java關鍵字2.1.4Java標識符2.1.5變量與常量2.1.1Java程序結構Java源程序一般由一個或多個編譯單元組成,每個編譯單元只能包含以下內容(空格和注釋除外):?package包語句?import導入語句?類的聲明?接口聲明圖2-1Java程序中各元素及其關系注釋0..npackage0..1import0..n成員變量0..n方法0..n局部變量0..n執(zhí)行語句0..n類1..nJava程序2.1.1Java程序結構2.1.1Java程序結構一個簡單的Java程序示例。/*這是一個簡單的Java程序示例程序*/packagemypack;importjava.util.*;publicclassExample{publicstaticvoidmain(Stringargs[]){System.out.println("Java歡迎您!");}}2.1.2Java注釋方式1://注釋一行例如:num=2;//num是計算器,用于累計選課人數方式2:/*一行或多行注釋*/例如:/*本方法用于計算階乘*/方式3:/**文檔注釋**/文檔注釋一般放在一個變量或函數定義說明之前,表示該段注釋應包含在自動生成的任何文檔中(即由javadoc生成的HTML文件)。這種注釋都是聲明條目的描述。2.1.3Java關鍵字abstractconstfinallyinterfacereturnthrowbooleancontinuefloatlongsafetransientbreakdefaultfornativeshorttruebydogotonewstatictrybytedoubleifnullsupervaluecaseelseimplementspackageswitchvoidcatchextendsimportprivatesynchronizedvolatilecharfalseinstanceofprotectedthiswhileclassfinalintpublicthread

2.1.4Java標識符用來標識類名、變量名、方法名、類型名、數組名、文件名的有效字符序列稱為標識符。由字母、下劃線、美元符號和數字組成,并且第一個字符不能是數字。標識符中的字母是區(qū)分大小寫的例子:判斷正誤(1)3max(2)class(3)room#(4)userName(5)User_name2.1.5變量與常量Java變量是一個由標識符命名的項。變量具有一定類型,例如int型或class型,也具有作用域,其值可被改變。變量聲明的語法形式如下:varTypevarName[=value][,varName[=value]…];doublearea,r;在變量聲明格式前加上final修飾符,就聲明了一個常量。常量一旦被初始化以后就不可改變。常量聲明的語法形式如下:finalvarTypevarName[=value][,varName[=value]…];2.2基本數據類型2.2.1基本數據類型概況 1132.2.2基本數據類型轉換 1162.2.1基本數據類型概況基本數據類型也稱作簡單數據類型,Java語言有8種簡單數據類型,分別是:boolean、byte、short、int、long、float、double、char。復合數據類型包括數組、類和接口等。圖2-2Java語言數據類型數值類型整數類int,byte,short,long浮點類double,float邏輯類boolean字符類char數組type[]類class接口interface數據類型基本數據類型復合數據類型2.2.1基本數據類型概況1.邏輯類型常量:true,false。變量的定義:使用關鍵字boolean來定義邏輯變量,定義時也可以賦給初值。例如:booleanx;//定義邏輯型變量xbooleanx=false;//定義邏輯型變量x,并賦值為false2.2.1基本數據類型概況2.整數類型常量:123,6000(十進制),077(八進制),0x3ABC(十六進制)。整型變量的定義分為4種類型舉例字節(jié)長度bytebytex,y=1;1shortshortx,y=2;2intintx,y=3;4longlongx,y=4;82.2.1基本數據類型概況3.字符類型常量:unicode字符表中的字符就是一個字符常量例如‘A’,‘‘?’,‘9’,‘好’,‘き’,等。Java還使用轉意字符常量,如:‘\n’為換行轉意字符常量。變量的定義:使用關鍵字char來定義字符變量例如:charx=‘A’,漂亮=‘假’,jiafei;★特別提示:一個unicode字符占2個字節(jié)char型變量,內存分配給2個字節(jié),占16位,最高位不是符號位,沒有負數的char。char型變量的取值范圍是0-65536。2.2.1基本數據類型概況4.浮點類型浮點類型包括float型和double型。浮點型數值缺省為double型,float型在數值之后加f或F例如,float型常量:453.5439f,21379.987F,2e40f,double型常量:21389.5439d(d可以省略),6e-140。float型變量的定義:floatx,y=22.76f;double型變量的定義:doublex,y=12.762.2.2基本數據類型轉換含義:一種基本數據類型變量轉變成另一種基本類型變量。類型轉換方式:窄化和拓寬轉換。拓寬(Widening)轉換編譯時可以自動執(zhí)行拓寬轉換(稱為Promotion,提升)。窄化(Narrowing)轉換則總是要求顯式執(zhí)行強制轉換(稱為Cast,轉型)。Java語言中不同類型之間不能相互賦值,同種類型低精度值可以賦給高精度變量,反之則需要使用強制類轉換,此時可能導致數據精度的損失。2.2.2基本數據類型轉換數據精度從“低”到“高”排序:byte→short(char)→int→long→float→double規(guī)則1:當把精度低的變量的值賦給精度高的變量時,系統(tǒng)自動完成數據類型的轉換,如int型轉換成long型規(guī)則2:當把精度高的變量的值賦給精度低的變量時,必須使用顯示類型轉換運算。(類型名)要轉換的值;intx=(int)34.89;規(guī)則3:char與byte或short之間的賦值必須實行強制轉換。2.2.2基本數據類型轉換byteb1=18,b2;shortsint1,sint2;charch1,ch2=’A’;ch1=char(b1);b2=(byte)ch2;sint2=(short)ch2;注意事項:強制轉換運算可能導致精度的損失。當把一個整數賦值給一個byte、short、int或long型變量時,不可以超出這些變量的取值范圍,否則必須進行類型轉換運算。【實例2-3】publicclasstransExample{ publicstaticvoidmain(Stringargs[]){ bytea=120;shortb=255;intc=2200;longd=8000;floatf;doubleg=0.1234567812345678;b=a;c=(int)d;f=(float)g; System.out.println("a="+a);System.out.println("b="+a);System.out.println("c="+a);System.out.println("d="+a);System.out.println("e="+a);System.out.println("f="+a);System.out.println("g="+a);}}2.2.2基本數據類型轉換【實例2-3】運行結果為:a=120b=120c=8000d=8000f=0.12345678g=0.12345678123456782.3運算符和表達式2.3.1算術運算符和算術表達式2.3.2關系運算符與關系表達式2.3.3邏輯運算符與邏輯表達式2.3.4賦值運算符與賦值表達式2.3.5位運算符2.3.6條件運算符2.3.7instanceof運算符2.3.8一般表達式2.3.1算術運算符和算術表達式Java算術運算符主要包括一元運算符(如+,-,++,--)和二元運算符(如,+,-,*,/,%),與C/C++基本相同算術表達式是用算術符號和操作元連接起來的符合Java語法規(guī)則的式子。例如:(f*b)+(i/c)-(d*s)2.3.1算術運算符和算術表達式java將按運算符兩邊操作元的最高精度保留結果。操作元的精度從低到高排列順序是:byte→short→int→long→float→double。?執(zhí)行任何算術運算或按位運算,“比int小”的數據(char、byte、short)在正式執(zhí)行運算之前,那些值會自動轉換成int?整型、實型、字符型數據可以混合運算。運算中,不同類型的數據先轉化為同一類型,然后進行運算,轉換從低級到高級。例如:若將一個float值與一個double值相乘,結果就是double;如將一個int值和一個long值相加,則結果為long。2.3.1算術運算符和算術表達式根據上述規(guī)則5/2的結果為2,因為運算符“/”左右操作數均為int型,因此結果也為int型;而5.2/2的結果為2.5,因為運算符“/”左操作數為double型,右操作數為int型,因此運算時首先統(tǒng)一為double型,顯然結果也為double型。【實例X-5】//程序2-5classautoPromoteExample{publicstaticvoidmain(Stringargs[]){byteb=1;charc='b';shorts=10;inti=100;floatf=1.23f;doubled=6.78,result;result=(f*b)+(i/c)-(d*s);System.out.println("result="+result);}}2.3.2關系運算符與關系表達式運算符表達式返回true的情況>op1>op2op1大于op2>=op1>=op2op1大于或等于op2<op1<op2op1小于op2<=op1<=op2op1小于或等于op2==op1==op2op1與op2相等!=op1!=op2op1與op2不等2.3.3邏輯運算符與邏輯表達式操作數取值表達式運算結果op1op2op1&&op2op1||op2!op1falsefalsefalsefalsetruefalsetruefalsetruetruetruefalsefalsetruefalsetruetruetruetruefalse2.3.4賦值運算符與賦值表達式賦值運算符“=”是雙目運算符,左面的操作元必須是變量。級別是14級,結合性從右到左。2.3.5位運算符Java位運算符主要面對基本數據類型,包括byte、short、int、long和char。位運算符包括“按位與”&、“按位或”|、“按位非”~、“按位異或”^、左移<<、右移>>。此外,Java引入一個專門用于邏輯右移運算符>>>,它采用了所謂的零擴展技術,不論原值是正或負,一律在高位補0。例如:inta=-2,b;b=a>>>30;2.3.6條件運算符條件運算符是一個3目運算符,符號是:“?:”。用法如下:op1?op2:op3要求第一個操作元op1的值必須是boolean型數據。運算法則是:當op1的值是true時,運算的結果是op2的值;當op1的值是false時,運算的結果是op3的值。Java要求:op2與op3必須同類型。例如,12>8?100:200的結果是100;12<8?100:200的結果是200。2.3.7instanceof運算符該運算符是雙目運算符,左面的操作元是一個對象,右面是一個類。當左面的對象是右面的類創(chuàng)建的對象時,該運算的結果是true,否則是false。2.3.8一般表達式Java的一般表達式就是用運算符及操作元連接起來的符合Java規(guī)則的式子,簡稱表達式。一個Java表達式必須能求值,即按著運算符的計算法則,可以計算出表達式的值。例如,假如intx=1,y=-2,n=10;那么,表達式x+y+(--n)*(x>y&&x>0?(x+1):y)的值是int型數據,結果為17。2.4Java語句2.4.1Java語句概述2.4.2分支語句2.4.3循環(huán)語句2.4.4跳轉語句2.4.5輸入輸出語句2.4.1Java語句概述Java語言中的語句可分為以下5類:(1)方法調用語句:例如reader.nextInt();(2)表達式語句:x=23;(3)復合語句:“{”+代碼塊+“}”,例如,

{ z=23+x; System.out.println("hello");}(4)控制語句:條件分支語句、循環(huán)語句和跳轉語句。(5)package語句和import語句2.4.2分支語句1.條件分支語句?if-else語句.if(表達式){若干語句} else{若干語句}?多條件if-elseif-else語句if(表達式1){若干語句}elseif(表達式2){若干語句}……elseif(表達式n){若干語句}else{若干語句}if(表達式)的表達式的值必須是boolean型【實例2-6】publicclassmultelseExample{ publicstaticvoidmain(Stringargs[]){ intscore=88; Stringstr="不及格"; if(score>=90&&score<=100) {str="優(yōu)秀";} elseif(score>=80&&score<=89) {str="良好";} elseif(score>=70&&score<=79) {str="中等";} elseif(score>=60&&score<=69) {str="及格";} System.out.println("成績?yōu)?+str);}}2.4.2分支語句2.switch開關語句--格式switch(表達式){case常量值1:若干個語句break;………case常量值n:若干個語句break;default:若干語句}【實例2-7】輸入月份,顯示該月份所在季節(jié)。publicclassswitchExample{ publicstaticvoidmain(Stringargs[]){ intmonth=1; Stringstr=""; switch(month) { case1: case2: case3: str="春季"; break; case4: case5: case6: str="夏季"; break; case7: case8: case9: str="秋季"; break; default: str="冬季"; } System.out.println("月份"+month+"屬于"+str);}}2.4.3循環(huán)語句1.while循環(huán)while(表達式){若干語句}

2.dowhile循環(huán)dowhile{若干語句}(表達式)

3.for循環(huán)for(表達式1;表達式2;表達式3){若干語句}“表達式2”必須是一個求值為boolean型數據的表達式(b)dowhile循環(huán)循環(huán)體True表達式False循環(huán)體True表達式False表達式1True表達式2False循環(huán)體表達式3(a)while循環(huán)(c)for循環(huán)圖2-3while、dowhile循環(huán)和for循環(huán)示意圖2.4.4跳轉語句跳轉語句包括break語句和continue語句。?break語句功能:跳出當前的循環(huán)體使用形式:break;//不帶標簽breakLabel;//帶標簽不帶標簽的break語句使程序跳出它所在的那一層循環(huán)結構帶標簽的break語句使程序跳出標簽所指示的循環(huán)結構【實例2-9】break命令應用舉例publicclassbreakExample{publicstaticvoidmain(Stringargs[]){ inti,j=0; outer: for(i=0;i<5;i++) for(j=0;j<5;j++){ System.out.println(i+""+j); if(j==1) breakouter; } System.out.println("最終值:"+i+""+j); }}2.4.4跳轉語句?continue語句功能:結束本次循環(huán)使用形式:continue;//不帶標簽continueLable;//帶標簽不帶標簽的continue語句的作用是終止當前循環(huán)結構的本輪循環(huán)而直接開始下一輪循環(huán)。對for循環(huán),就是忽略循環(huán)體中后面的語句,跳到表達式3執(zhí)行對while或dowhile循環(huán)就是直接轉去求解邏輯表達式2.4.4跳轉語句?continue語句帶標簽的continue語句的作用就是把程序直接轉到標簽所指的循環(huán)結構的下一次循環(huán),而不管被他嵌套的以及continue語句所在的循環(huán)結構運行到了哪那一輪。【實例2-10】continue命令應用舉例publicclasscontinueExample{publicstaticvoidmain(Stringargs[]){intsum=0,i,j;for(i=1;i<=10;i++)//該循環(huán)計算3+6+9。{if(i%3!=0){continue;}else{}sum=sum+i;}System.out.println("sum="+sum);}}2.4.4跳轉語句continue標號語句和break標號語句的比較相同點:?都必須用在循環(huán)中,用于流程控制;?執(zhí)行這兩個語句時,若后面還有其他語句,將不再繼續(xù)執(zhí)行。不同點:? continue語句的標號必須位于封閉的循環(huán)語句的前面?break語句的標號只需位于封閉語句的前面,但不一定是循環(huán)語句2.4.5輸入輸出語句1.數據輸出:print(或println)System.out.println(“Hello”)System.out.println(“”+x)2.數據輸出:printfSystem.out.printfprintf(格式控制部分,表達式1,表達式2,…表達式n);★JDK1.5版本新增功能3.數據的輸入:ScannerScanner是JDK1.5新增的一個類,可以使用該類創(chuàng)建一個對象:第3章類與對象3.1面向對象基礎3.2類3.3對象3.4變量3.5方法3.6包3.7import語句3.8訪問權限3.9基本類型數據的類包裝3.1面向對象基礎3.1.1編程語言的幾個發(fā)展階段3.1.2面向過程的程序設計3.1.3面向對象的程序設計3.1.4兩種程序設計語言的簡單比較3.1.1編程語言的幾個發(fā)展階段1.機器語言機器語言是由機器指令組成的語言。2.匯編語言匯編語言是符號化了的機器語言,3.高級程序設計語言高級程序設計語言屏蔽了機器的細節(jié),提高了語言的抽象層次,程序中可以采用具有一定含義的數據命名和容易理解的執(zhí)行語句。4.面向對象的語言面向對象的語言可以直接描述客觀事物以及它們之間的聯系,將客觀事物看作具有屬性和方法(行為)的對象,類是由同一類對象的共同屬性和方法組成。Java語言屬于面向對象的語言。3.1.2面向過程的程序設計分析問題的主要方法是以實現問題或問題域中的處理過程為中心,同時考慮適用于實際問題的數據結構和程序的輸入輸出,程序是由多個具有輸入輸出的處理過程組成。程序設計的基本思路是:自頂向下,逐步求精;將程序按功能劃分成若干基本模塊;模塊之間關系盡可能簡單,各模塊的功能相對獨立;每個模塊是由順序結構、選擇結構、循環(huán)結構構成的子程序。面向過程語言一般提供多種基本數據類型和自定義數據類型。(a)程序結構Main()f1()f2()f3()f2-1()(b)動態(tài)調用關系mainf1f2-1f2f3f2-2數據1數據2數據3f2-2()圖2-1面向過程的程序設計語言的程序結構及動態(tài)調用關系3.1.3面向對象的程序設計面向對象程序設計的基本思路是:首先,將數據及對數據的操作(方法)放在一起,作為一個相互依存不可分割的整體,即對象;其次,對同類對象的共同屬性和方法進行抽象形成類;類通過一個簡單的外部接口與外界發(fā)生關系,對象與對象之間通過消息進行通信。因此,面向對象程序設計通常包含系統(tǒng)分析、系統(tǒng)設計、對象設計和對象實現幾個階段。3.1.3面向對象的程序設計系統(tǒng)分析:理解應用系統(tǒng)的定義及建立應用系統(tǒng)的對象模型,分析和發(fā)展對象,定義對象的屬性和內部狀態(tài)變換,定義外部事件和對象之間的聯系和約束,最終建立應用系統(tǒng)的對象模型、動態(tài)模型及功能模型。系統(tǒng)設計:確立對象模型的實現方法。將系統(tǒng)分解為子系統(tǒng),確立應用系統(tǒng)固有的并發(fā)性、分配處理器的任務,選擇數據存儲的管理手段、處理全局資源的訪問,確立應用系統(tǒng)的邊界等等。3.1.3面向對象的程序設計對象設計:將系統(tǒng)分析階段建立的三種模型轉換為類。將應用系統(tǒng)的對象模型轉換為類的屬性(主要考慮對象關聯的實現方法),動態(tài)模型轉換為類的方法(最好選用事件驅動的運行環(huán)境-時間驅動的運行環(huán)境難于實現并發(fā)處理),功能模型轉換為主控模塊或子控模塊(可以采用時間驅動或事件驅動的方式實現流程控制)。對象實現:用面向對象的程序設計語言實現對象設計階段定義的類。選擇合適的面向對象的程序設計語言及開發(fā)環(huán)境,定義類的屬性及方法,編寫主控模塊及子控模塊,針對具體語言進行性能調整。3.1.3面向對象的程序設計4.面向對象程序設計語言的程序結構面向對象程序設計語言處理保留了3種基本控制結構和函數結構外,新增加了“類”結構。類結構是一種更為高級的程序結構,它綜合了數據結構和函數結構,不僅可以包含更復雜的數據屬性和數據結構,還包含著對這些數據的操作。是數據和操作高度統(tǒng)一的整體,具有更高的內聚性、安全性、穩(wěn)定性和可重用性。類和類之間可以建立更為深刻的繼承和包含關系,使得程序結構更加復雜、更加合理,同時也更加穩(wěn)定。類的引入除了改進程序結構外,還可以和現實世界或問題域中的概念或實體對應起來,是現實世界中實體屬性和行為的抽象。圖2-2面向對象的程序結構示意圖表示自包含程序結構函數結構類結構包結構數據結構順序結構選擇結構循環(huán)結構圖2-3面向對象程序模型及對應的java程序f1()f2()f3()mypackageMyClassAnotherClasspackagemypackage;classMyClass{inta;voidf1(){}voidf2(){}}classAnotherClass{inta;voidf3(){}}對應的java程序3.1.4兩種程序設計語言的簡單比較方法名稱面向過程(結構化)方法面向對象方法軟件開發(fā)結構化系統(tǒng)分析結構化系統(tǒng)設計結構化系統(tǒng)開發(fā)面向對象系統(tǒng)分析面向對象系統(tǒng)設計面向對象系統(tǒng)開發(fā)高級語言發(fā)展歷程ALGOLFortranPascalCSimulaSmalltalkC++Java編程的核心數據結構+算法對象+消息優(yōu)點技術成熟,已全面標準化并推向實用針對高技術的復雜難題而研制,能更好地實現軟件的可靠性和安全性缺點無法處理高技術領域復雜的非規(guī)則信息面向對象的系統(tǒng)分析與設計尚未標準化,應用尚不廣泛3.2類在面向對象程序設計中,一個對象是客觀事物的屬性和行為密封成的一個整體。類是某些對象的共同特征(屬性和方法)的表示,對象是類的實例。類是組成Java程序的基本要素。類封裝了一類對象的狀態(tài)和方法。類是用來定義對象的模板。可以用類創(chuàng)建對象,當使用一個類創(chuàng)建了一個對象時,就是給出了這個類的一個實例。3.2類1.類的基本構成在語法上,類由兩部分構成:類聲明和類體。基本格式為:

修飾符class類名[extends父類名]{ 成員變量聲明及初始化; 方法聲明及方法體;}3.2類2.類聲明的詳細格式:

[public][abstract|final]classclassName[extendssuperclassName][implementsinterfaceNameList] { 成員變量聲明及初始化; 方法聲明及方法體; }3.2類public:訪問權限修飾詞。如果一個類被聲明為public,那么與它不在同一個包中的類也可以通過引用它所在的包來使用這個類,否則這個類就只能被同一包中的類使用。abstract:對父類所加的修飾詞。抽象類,不能被實例化生成自己的對象,通常只定義了一些變量和方法供繼承使用。被聲明為abstract的抽象類往往包含有被聲明為abstract的抽象方法,這些方法由類的子類完成實現細節(jié)。如果一個類中有一個方法是抽象方法,則類必須聲明為抽象。3.2類final:對子類所加的修飾詞。最終類,不能再派生出新的子類。extends:后跟父類名稱implements:列出一個或多個接口3.2類3.類體格式類體中定義了該類中所有的變量和該類所支持的方法。

classclassName{ //成員變量的定義[訪問控制修飾符][其他修飾符]類型

變量名稱; //成員方法的定義[訪問控制修飾符][其他修飾符]返回類型

方法名稱(參數列表)[拋出異常]{statements} }//3.2類成員變量訪問控制修飾符說明:訪問控制修飾符對在該類以外的代碼中訪問被修飾的屬性起控制作用,不影響在該內部對該屬性的訪問性。public:使用public修飾的屬性的可見范圍是整個程序,可以在任何一個類的方法代碼中訪問該屬性,訪問時需要通過該類的對象實例來對屬性進行限定。屬性一般使用public修飾,除非該屬性允許其他人進行任意訪問和修改protected:使用protected修飾的屬性的可見范圍是同一包內的所有類和該類所有子類(可以不再同一包中),即在同一包內的其他類或不同包中子類的方法可以訪問該屬性,主要用于屬性被子類繼承的情況。3.2類成員變量訪問控制修飾符說明:private:使用private修飾的屬性的可見范圍是該屬性所屬的類,即只有同類中的方 法可以訪問該屬性,出了這個類的范圍,即使同包內的類或子類也不能訪問。該訪問控制符一般用來封裝屬性,類外部的代碼不能直接訪問該屬性,必須通過公有的方法接口來對該屬性進行操作。缺省:如果屬性前面不加訪問控制符,即為包可見性,同包內的類都可以訪問該屬性。3.2類?成員變量其他修飾符說明:final:在簡單變量屬性前面使用final,表示該屬性為常數。如果在對象變量屬性前面加上final,則表示該變量不能指向新的對象,但是所指向的對象的屬性卻可以改變,這和對象變量的值可以修改、但指向的對象不能修改的情況正好相反(后者如字符串變量)。transient:指明變量是臨時常量。volatile:指明變量是一個共享變量。3.2類?成員變量其他修飾符說明:static:默認屬性為非靜態(tài)屬性(實例屬性)。JVM為每個對象實例屬性分配不同內存。使用static修飾的屬性為靜態(tài)屬性(類屬性)。該屬性是所屬類創(chuàng)建的所有對象實例的公有屬性,也就是該類所有對象的公共變量或全局變量,而不是每個對象實例專有的屬性。從保存該屬性的內存單元來看,其內存的分配是在創(chuàng)建對象之前就進行了,即在JVM加載類時完成的。final修飾的類屬性為常量,不可改變。3.2類方法訪問控制修飾符的說明[public|protected|private]。意義和修飾屬性的情況一樣,控制方法的可見范圍。方法一般為public,表示對外的接口,但也有私有方法或保護的方法,僅供類本身調用或子類調用。public:一個類中被聲明為public的方法(或變量)是“公開的”,意味著只要能使用這個類,就可以直接使用這個方法(或直接存取這個變量的值)。3.2類方法訪問控制修飾符的說明protected:一個類中被聲明為public的方法(或變量)是“受限的”,意味著他們僅能被與該類處于同一包的類及該類的子類所直接使用或存取。private:一個類中被聲明為public的方法(或變量)是“私有的”,除了聲明他們的類外,不能被任何其他的類直接使用或存取。缺省friendly:只能被同一包中的類直接使用或存取。3.2類?方法其他修飾符的說明static:默認方法為非靜態(tài)方法(實例方法)。JVM為每個對象實例屬性分配不同內存。使用static修飾的方法為靜態(tài)方法(類方法)。該方法不適于任何一個對象,而是屬于整個類,是該類所有對象實例的公共方法,此方法對整個類來說是唯一的。類方法在該類被加載到內存時,就分配了相應的入口地址,即使該類沒有創(chuàng)建對象,也可以直接通過類名調用方法。3.2類?方法其他修飾符的說明final:聲明類的方法是最終的,在子類中不能對該方法進行重新實現,即覆蓋或者擴展。該修飾符用于控制類方法的繼承。abstract:聲明方法是抽象的,不可能有具體實現的方法體。native:聲明方法是通過調用本地方法來實現功能,如調用C函數。synchronized:聲明該方法可實現線程的同步。3.3對象采用Java語言編程時,大多數情況下是對具體的對象進行操作的。也就是說,要求以類作為模板,也可將類理解為對象的制造廠,專門用來創(chuàng)建類的實例(對象)圖3-3類是對象的制造廠示意圖New方法屬性創(chuàng)建對象請求產生新的類實例3.3對象1.創(chuàng)建對象?創(chuàng)建對象語法格式:

類名對象名;//聲明對象對象名=new類名();//創(chuàng)建對象?對象的聲明的格式為:類名對象名例如:MyDatedate;3.3對象1.創(chuàng)建對象?對象的實例化與初始化:用new操作符創(chuàng)建對象,即實例化一個對象,并按照對象的類型分配內存;用構造方法對它進行初始化。通常new要與構造方法配合使用。例如:newString(“Howareyou!”);就是對系統(tǒng)字符串類String的構造方法的調用,并初始化為“Howareyou!”3.3對象1.創(chuàng)建對象?對象的實例化與初始化:例如:importJava.awt.*;Fontfont;//line1font=newFont(“TimesRoman”,Font.BOLD,36);//line2也可以將line1和line2兩行語句合并為如下一行語句:Fontfont=newFont(“TimesRoman”,Font.BOLD,36);3.3對象2.對象的使用對象的使用是通過一個引用類型的變量來實現,包括引用對象的成員變量和方法,通過運算符‘?’可以實現對變量的訪問和方法的調用。例如:MyDatedate=newMyDate();定義了一個MyDate類型的對象date,以下是對象的使用。date.day //引用date的成員變量daydate.tomorrow()//調用date的方法tomorrow()3.3對象3.對象的消亡當對象使用完畢后,就應將無用的對象賦空值(null),再由Java的垃圾收集器收集并釋放空間。3.4變量1.類中變量分類局部變量是在方法體中定義的變量和方法的參數。成員變量是在類屬性定義部分所定義的變量,又可分為實例變量和類變量。類變量就是在聲明時加上“static”修飾符的成員變量,故又稱靜態(tài)變量。3.4變量1.類中變量分類//程序3-2classvarExample{intx; staticinty; intfun(intz){ inta; x=a;} } x和y是成員變量,其中x是實例變量,y是類變量。z和a是局部變量,其中z是方法fun的參數,a是方法fun中定義的變量。3.4變量2.變量的內存分配Java語言中數據類型分為基本數據類型和復合類型,相應地Java語言中變量可分為基本變量和復合變量。基本變量在說明時由系統(tǒng)自動分配內存,復合變量則必須使用new來申請內存。下面以類變量(即class變量)為例來說明復合變量的內存分配。首先在說明變量時,在內存中為其建立一個引用,并置初值為null,表示不指向任何內存空間;其次使用new申請內存,內存大小依class的定義而定,并將該段內存的首址賦給引用。3.4變量classBox{floathigh,weight; voidoutputArea(Strings) System.out.println(“Area=”+high*weight);}}classstoreExample{publicstaticvoidmain(Stringargs[]) Boxbox;//line1:聲明對象 box=newBox();//line2/*為對象分配內存,使用new和默認構造方法*/ …..}圖3-4內存分配示意圖0height

boxBoxbox;0weight0xA75boxbox=newBox();3.4變量2.變量的內存分配圖3-4中左半部分顯示的是執(zhí)行語句“Boxbox;”后的內存情況,右半部分顯示的是執(zhí)行語句“box=newBox();”后的內存情況。執(zhí)行語句“box=newBox();”時,系統(tǒng)將作以下兩件事:(1)為height和weight分配內存空間;(2)返回一個引用給box,確保box可以操作管理分配給height和weight的內存單元。3.4變量3.實例變量和類變量的簡單比較:一個類通過使用new運算符可以創(chuàng)建多個不同的對象,這些對象的實例變量被分配不同的內存空間,如果這個類中的成員變量有類變量,那么所有對象的這個類變量都被分配相同的一處內存,改變其中一個對象的這個變量會影響其他對象的這個變量值。類變量必須在類體中聲明,并且使用關鍵字“static”,因此也稱為靜態(tài)變量;實例變量在類體中聲明但不使用關鍵字“static”,也稱為非靜態(tài)變量。3.4變量3.實例變量和類變量的簡單比較:類變量在類被加載時完成相應的初始化工作,類變量在一個運行系統(tǒng)中只有一份供整個類和實例對象共享的值,該值有可能被類(及其子類)和它們所創(chuàng)建的實例改變,每一次的改變都將影響到該類(及其子類)和其它實例的調用。它在對象初始化時完成相應的初始化工作,并由某一個對象獨自擁有。類變量的作用域是整個類。實例變量的作用域是某一個類具體創(chuàng)建的實例對象。3.4變量3.實例變量和類變量的簡單比較:classA{staticintx;inty;……}classvarstoreExample{… Aa1=newA(); Aa2=newA();……}圖3-5內存映像示意圖0x325a10y0x0y0xBA2a23.4變量3.實例變量和類變量的簡單比較:說明:(1)本實例包含兩個類A和類varstoreExample;(2)在類A中x是類變量,y是實例變量;(3)在類varstoreExample中,以類A為基礎創(chuàng)建了兩個對象a1和a2;由于x是類變量,因此對象a1和a2中變量x指向同一內存單元;而y是實例變量,因此對象a1和a2中變量y分別指向不同內存單元。3.4變量4.變量初始化與賦值Java規(guī)定,任何變量使用之前,必須對變量賦值。成員變量的初始化及賦值 成員變量可自動初始化,其中數值型為0,邏輯型為false,引用型為null。成員變量的賦值可以在聲明時進行,也可以在方法中實現,但不能在聲明和方法之間進行賦值。classA{ intx; floaty; x=12;y=12.56f;//line floatsumXY(){ returnx+y; }}publicclassinitExample2{ publicstaticvoidmain(Stringargs[]) { Aa=newA(); System.out.print("x+y="+a.sumXY()); }}3.4變量說明: 錯誤提示要求,給變量x或y加上類型申明標示,事實上,在這之前,已對x和y的類型進行了申明。產生錯誤的原因在于,成員變量的賦值不能在聲明和方法之間進行。3.4變量4.變量初始化與賦值?局部變量的初始化和賦值 局部變量不可自動初始化,要求程序顯式得給其賦值。只有當方法被調用執(zhí)行時,局部變量才被分配內存空間,調用完畢后,所占用空間被釋放。classA{ voidf(){ intx=(int)(Math.random()*100); inty,z;//line2 if(x>60){y=10;} z=y-x; System.out.print("z="+z); }}publicclasslocalVarExample{ publicstaticvoidmain(Stringargs[]){ Aa=newA(); a.f(); }}說明: 在本實例中,表面上通過執(zhí)行語句“if(x>60){y=10;}”對y進行了賦值,實際上由于x是Math.random()產生的隨機數,有可能大于60,也有可能小于60,若x小于60,則在使用y(即執(zhí)行語句z=y-x)之前,y沒有被顯式賦值,故會出現以上錯誤提示。為避免這類錯誤,必須確保y在使用之前被顯式賦值。一個簡單的辦法就是在申明y之時,可y賦值。如: inty=0,z;//line2當然這種解決辦法要看具體功能而定。3.4變量?引用賦值舉例classPoint{ intx,y; Point(){ x=67;y=10; } Point(intx,inty){ this.x=x;this.y=y; } voidshowXY(){ System.out.println("點(x,y)為"+"("+x+","+y+")"); }}publicclassclassInitExample{ publicstaticvoidmain(Stringargs[]){ Pointp1=newPoint(); Pointp2=newPoint(6,18); p1.showXY(); p2.showXY(); p1=p2; p1.showXY(); p2.showXY(); }}圖3-6內存映像示意圖Pointp1=newPoint();10y0x125p167xPointp1=newPoint(6,18);18y0xA75p26xp1=p2;18y0xA75p16x3.5方法1.方法分類:實例方法和類方法?實例方法能對類變量和實例變量操作,而類方法只能對類變量進行操作;?類方法不僅可以由對象調用而且還可以直接由類名調用,而實例方法不能由類名調用。?一個類中的方法可以相互調用,但靜態(tài)方法只能調用靜態(tài)方法,不能調用實例方法。?在創(chuàng)建對象之前,實例變量沒有分配內存,實例方法也沒有入口地址。3.5方法1.方法分類:實例方法和類方法?實例方法能對類變量和實例變量操作,而類方法只能對類變量進行操作;?類方法不僅可以由對象調用而且還可以直接由類名調用,而實例方法不能由類名調用。?一個類中的方法可以相互調用,但靜態(tài)方法只能調用靜態(tài)方法,不能調用實例方法。?在創(chuàng)建對象之前,實例變量沒有分配內存,實例方法也沒有入口地址。【實例3-10】//指出方法類型classA{ inta; staticfloatb; floatmax(floatx,floaty) {……} staticfloatshow() {……}}【實例3-11】指出錯誤classA{ inti; staticintj; voidset1(intx,inty){ i=x;j=y; } staticvoidset2(intz){ i=z;j=z*z; } voidshowXY(){ System.out.println("i="+i+"...j="+j); }}publicclassmethodvarExample{ publicstaticvoidmain(Stringargs[]){ Aa=newA(); a.set1(10,20); a.showXY(); a.set2(30); a.showXY(); }}說明:在本實例中,在類A中方法set1()是實例方法,方法set2()是類方法,變量x是實例變量,變量y是類變量。類方法只能操作類變量。上述程序中,類方法set2()中對實例變量x操作,顯然是不合規(guī)則的。因此提示i=z有錯。【實例3-12】指出錯誤classA{ inti; staticintj; voidset1(intx,inty){ i=x;j=y; } staticvoidset2(intz){ j=z*z; } voidshowXY(){ System.out.println("i="+i+"...j="+j); }}【實例3-11】指出錯誤publicclassmethodvarExample2{ publicstaticvoidmain(Stringargs[]){ Aa=newA(); a.set1(10,20); a.showXY(); a.set2(30); a.showXY();A.set1(10,20); A.showXY(); A.set2(30); A.showXY(); }}說明:在本實例中,在類A中方法set1()和showXY是實例方法,方法set2()是類方法,類方法不僅可以由對象調用而且還可以直接由類名調用,而實例方法不能由類名調用。因此會出現上述錯誤。3.5方法3.方法調用中數據傳遞(1)值傳遞方法;(2)引用傳遞方法;(3)返回值方法;(4)實例變量和類變量傳遞方式。3.5方法(1)值傳遞方法將調用方法的實參的值計算出來賦予被調用方法對應形參的一種數據傳遞方法。在這種數據傳遞方法下,被調用方法對形參的計算、加工與對應的實參已完全脫離關系。當被調方法執(zhí)行結束,形參中的值可能發(fā)生變化,但是返回后,這些形參中的值將不會帶到對應的實參中。“數據的單向傳遞”【實例3-14】classA{ intsquare(intx){ x=x*x; returnx; }}publicclassparaTransExample1{ publicstaticvoidmain(Stringargs[]){ inty,z; Aa=newA(); y=10; z=a.square(y); System.out.println("y="+y+"....z="+z); }}3.5方法輸出結果:x=10….y=100說明:類A中方法square有參數變量x(非引用型),在paraTransExample1中創(chuàng)建對象a后,通過a調用方法square,此時是通過值傳遞來實現給方法square的參數賦值的,由于是值傳遞,因此盡管方法square中參數變量x發(fā)生了改變,但這種改變并不影響調用方法的實參y,即在調用方法square前,實參y的值為10,調用方法square后,實參y的值仍然為10。3.5方法(2)引用傳遞方法使用引用傳遞方法時,方法的參數類型一般是復合類型(引用類型)。復合類型變量中存儲的是對象的引用,所以在參數轉送中是傳送引用,方法接收參數的引用,因此任何對形參的改變都會影響到對應的實參。“引用的單向傳送,數據的雙向傳送”。以下舉例說明:【實例3-15】classPoint{ intx,y; voidsetXY(intx1,inty1){ x=x1; y=y1; } voidsquarePoint(Pointp){ p.x=p.x*p.x; p.y=p.y*p.y; }}【實例3-15】publicclassparaTransExample2{ publicstaticvoidmain(Stringargs[]){ Pointp0=newPoint(); p0.setXY(10,20); System.out.println("x="+p0.x+"....y="+p0.y); p0.squarePoint(p0); System.out.println("x="+p0.x+"....y="+p0.y); }}3.5方法運行結果為:x=10….y=20x=100….y=400說明:在本實例中,類A中方法squarePoint有參數變量x是引用型,在paraTransExample2中創(chuàng)建對象a后,通過a調用方法squarePoint,當方法squarePoint中對x和y進行改變后,這種改變的結果會反映在實參p0中,這就是為什么調用方法squarePoint前x和y分別是10和20,調用方法squarePoint后x和y分別是100和400。3.5方法(3)返回值方法返回值方法不是在形參和實參之間傳遞數據,而是被調方法通過方法調用后直接將返回值送到調用方法中。使用返回值方法時,方法的返回值類型不能為void,且方法體中必須有帶表達式的return語句,其中表達式的值就是方法的返回值。(4)實例變量和類變量傳遞方式 實例變量和類變量傳遞方式也不是在形參和實參之間傳遞數據,而是利用在類中定義的實例變量和類變量是類中諸方法共享的變量的特點來傳遞數據3.5方法3.三個重要方法(1)構造方法(2)main方法(3)finalize方法3.5方法(1)構造方法Java通過構造方法來保證對每個對象進行初始化。構造方法是一種特殊的方法。Java中的每個類都有構造方法,用來初始化該類的一個新的對象。構造方法具有和類名相同的名稱,而且不返回任何數據類型,即void類型(void可以省略)。在構造方法的實現中,也可以進行方法重載。在類中沒有構造方法時,使用默認的構造方法。3.5方法(1)構造方法構造方法在創(chuàng)建一個新對象時,同時給這個新對象分配內存創(chuàng)建對象進行初始化一般格式為:新對象名=new構造方法();3.5方法(1)構造方法一個類中可能沒有構造方法,此時使用默認的構造方法.使用默認的構造方法時,按照默認的方式對變量進行初始化,即數值型初始化為0,引用型初始化為null,邏輯型初始化為false。一個類中存在一個或多個構造方法【實例3-16】內中無構造方法classPoint{ intx,y; voidshowXY(){ System.out.println("點(x,y)為"+"("+x+","+y+")"); }}publicclassmethodsExample1{ publicstaticvoidmain(Stringargs[]){ Pointp1=newPoint(); p1.showXY(); }}3.5方法運行結果為:點(x,y)為(0,0)說明:在本實例中,類A中沒有構造方法,則使用默認的構造方法,x和y被初始化為0。【實例3-17】內中多個構造方法classPoint{ intx,y; Point(){ x=1;y=1; } Point(intx1,inty1){ x=x1;y=y1; } voidshowXY(){ System.out.println("點(x,y)為"+"("+x+","+y+")"); }}【實例3-17】內中多個構造方法publicclassmethodsExample2{ publicstaticvoidmain(Stringargs[]){ Pointp1=newPoint(); Pointp2=ne

溫馨提示

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

評論

0/150

提交評論