李興華魔樂科技Java-筆記JAVA-SE基礎(chǔ)知識_第1頁
李興華魔樂科技Java-筆記JAVA-SE基礎(chǔ)知識_第2頁
李興華魔樂科技Java-筆記JAVA-SE基礎(chǔ)知識_第3頁
李興華魔樂科技Java-筆記JAVA-SE基礎(chǔ)知識_第4頁
李興華魔樂科技Java-筆記JAVA-SE基礎(chǔ)知識_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程名稱:JAVASE根底知識2、知識點(diǎn)2.1、上次課程的主要知識點(diǎn)1、 在Oracle的學(xué)習(xí)之中有以下幾點(diǎn)必須重點(diǎn)掌握:·數(shù)據(jù)的查詢和更新操作、事務(wù)處理;·表的建立、約束的使用、序列的使用;·表的設(shè)計(jì)范式應(yīng)該是理解。2.2、本次預(yù)計(jì)講解的知識點(diǎn)1、 JAVA學(xué)習(xí)層次;2、 Java簡介及JDK的安裝及配置;3、 JavaSE的根底程序設(shè)計(jì);4、 數(shù)組及方法的使用。3、具體內(nèi)容3.1、Java的學(xué)習(xí)層次 從程序的開發(fā)來講,Java語言是整個(gè)JAVAEE體系的核心根底局部,在這一局部之中,只有將核心概念掌握透徹了,才有可能為以后的學(xué)習(xí)提供方便。知識點(diǎn)的學(xué)習(xí):可以根據(jù)每一個(gè)關(guān)鍵字或者是知識點(diǎn),聯(lián)想到其所對應(yīng)的程序及其概念,以及各個(gè)考前須知。 在整個(gè)JAVA根底局部之中,有以下三個(gè)主要局部組成:·JAVASE的根底局部:根本程序的一個(gè)恢復(fù)以及數(shù)組及方法的使用;·JavaSE的面向?qū)ο螅捍司植扛拍詈芏?,而且必須全部記下;·JavaSE的應(yīng)用局部:類集、IO、類庫、JDBC等等。其他的有許多的了解局部:多線程、網(wǎng)絡(luò)編程; 理解的局部:JavaSE1.5的提供的各種新特性。 在以上的所有知識之中按照重要性來講,一共有如下幾局部:·面向?qū)ο螅核v解的一切都是為了抽象類和接口效勞的;·類集局部:為數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn);·IO:面向?qū)ο蟮耐昝辣磉_(dá);·JDBC:為以后的JAVAEE開發(fā)做準(zhǔn)備呢。3.2、Java簡介〔理解〕 Java:是一門編程語言,而且現(xiàn)在已經(jīng)形成了一自己的一套完整的開發(fā)體系,被大多數(shù)的公司所支持,所以現(xiàn)在的Java已經(jīng)不再純粹的作為一門語言出現(xiàn)了,更多的是作為一個(gè)行業(yè)的開發(fā)標(biāo)準(zhǔn)出現(xiàn)了。從整個(gè)行業(yè)開展來講,Java平臺、.NET平臺、AdobeFLEX等已經(jīng)算是將編程霸占的已經(jīng)足夠多了,因?yàn)檫@些公司的實(shí)力較大?!?NET:微軟支持;·FLEX:Adobe公司支持;·Java:Oracle/SUN支持、IBM、HP等公司支持。 Oracle要收購SUN公司,是為了形成:中間件+編程語言+開發(fā)工具+操作系統(tǒng)+數(shù)據(jù)庫,完整商用體系; 從歷史開展來看商用體系:·IBM:Websphere+Java+WSAD〔RAD〕+AIX+DB2;·BEA+Borland+Oracle:BEAWebLogic+JBuilder+Java+Linux+Oracle;·開源工程:Tomcat+JBoss+Eclipse+Linux+MySQL〔Oracle〕 一旦Oracle形成了這樣的開發(fā)體系,那么直接針對于微軟了。Oracle在收購SUN公司之前最早是由IBM提出收購的,因?yàn)镮BM主要的軟件產(chǎn)品線都在Java上,之所以現(xiàn)在的Java這么的火暴,主要的原因還在于IBM的推廣。 IBM的典型標(biāo)志:只搞理論研究從來不搞實(shí)踐。 Java語言最早是在1991年的時(shí)候推出的,其前身是Oak語言,這門語言的主要目的是為了競爭一個(gè)GREEN的工程,這個(gè)工程就非常類似于今天的嵌入式開發(fā),可以通過郵件控制家電的運(yùn)行,原本SUN公司的設(shè)計(jì)人員打算使用C++進(jìn)行開發(fā)的,但是后來考慮到C++的復(fù)雜性,所以使用了C++語言開發(fā)了一個(gè)新的平臺——OAK〔橡樹〕,但是遺憾的是此平臺并沒有競爭成功,被網(wǎng)景公司的SGL的平臺所打敗,從此之后Oak根本上就無家可歸了。 網(wǎng)景公司是靠瀏覽器技術(shù)開展的,但是其瀏覽器的市場被微軟搶走了,在90年代的時(shí)候網(wǎng)景公司的瀏覽器相當(dāng)?shù)牧餍?,但是就?dāng)其到達(dá)頂峰的時(shí)候內(nèi)部開始出現(xiàn)問題了,這個(gè)時(shí)候大局部的人不再去研究瀏覽器的技術(shù)了,而只是專注于市場的推廣了,而就在這個(gè)時(shí)候微軟一直注意著提升瀏覽器的技術(shù),所以慢慢的開展勢頭就蓋過了網(wǎng)景公司了?,F(xiàn)在的網(wǎng)景公司的主要依靠的是FireFox瀏覽器來重新?lián)寠Z市場。 通過了學(xué)習(xí)瀏覽器技術(shù)之后,SUN公司的設(shè)計(jì)人員使用了OAK平臺開發(fā)出了一套自己的瀏覽器技術(shù)——HotJava。開發(fā)平臺,最早的Java是在瀏覽器中運(yùn)行的一種技術(shù)——Applet。在1998年的時(shí)候推出了JDK1.2,同時(shí)將Java更名為Java2; 后來又到了2005年,Java十周年大會上,推出了JDK1.5,將Java更名為J2SE5.0; Java的主要開發(fā)公司是SUN公司,那么SUN公司的全名:斯坦伏大學(xué)網(wǎng)絡(luò),最早的時(shí)候是靠賣硬件賺錢的,AMAZON,主要是依靠小型機(jī),其中AMAZON網(wǎng)上書店就是采用了SUN的小型機(jī)。 斯坦伏大學(xué)除了一個(gè)揚(yáng)志遠(yuǎn),其創(chuàng)辦了YAHOO公司,Hewlet、Packed,1976年的時(shí)候HP的一個(gè)工程師:沃滋尼阿克創(chuàng)造了世界上第一臺PC機(jī),可是遺憾是HP公司沒有采納這個(gè)東西,但是后來此技術(shù)被一個(gè)獨(dú)具慧眼的人看見了——喬布斯,所以在80年的時(shí)候Apple的電腦賣的相當(dāng)?shù)暮?。最早的Java有如下的幾個(gè)技術(shù)的分支:·J2SE:為Java的核心的根底版本,JDK安裝完成之后那么自動具備此環(huán)境; |-在2005年之后J2SE更名為JAVASE;·J2ME:是在J2SE的根底之上開展起來的,主要是完成的嵌入式開發(fā); |-在2005年之后J2ME更名為JAVAME;·J2EE:是在J2SE根底之上開展的,主要完成企業(yè)的平臺開發(fā),也是現(xiàn)在Java的主要技術(shù)方向; |-在2005年之后J2EE更名為JAVAEE。 Java語言作為以上的所有開發(fā)平臺的技術(shù)根本,有如下的幾個(gè)特點(diǎn): 1、 java語言足夠簡單; 2、 Java中存在多線程的處理機(jī)制,這也是Java的一大特點(diǎn),而且也是為數(shù)不多的支持多線程的開發(fā)語言; 3、 自動的垃圾收集機(jī)制; 4、 可移植性; 5、 防止了指針等復(fù)雜問題的操作,而使用了更加簡單的引用方式來解決同類問題。 在Java語言中有自己的運(yùn)行機(jī)制,運(yùn)行機(jī)制如下列圖所示。C語言中每一個(gè)程序編譯完成之后會自動生成一個(gè)*.exe的文件,從而可以直接執(zhí)行,但是Java不一樣,因?yàn)镴ava中的所有運(yùn)行都依靠兩種方式完成:·所有的Java程序的文件后綴都是*.java,但是這并不是真正要使用的程序而需要將其編譯;·將編譯成的*.class文件直接放在電腦上進(jìn)行解釋,但是此電腦可不是一臺物理存在的電腦,而是一臺虛擬的電腦,而此電腦就稱為JVM——Java虛擬機(jī)。3.3、Java的可移植性實(shí)現(xiàn)〔重點(diǎn)〕 Java的可移植性完全表達(dá)在JVM上,通過JVM去使用不同的操作系統(tǒng)。 現(xiàn)在的程序只認(rèn)JVM,而由JVM去適應(yīng)不同的操作系統(tǒng),這樣一來,程序在各個(gè)操作系統(tǒng)之間就可以實(shí)現(xiàn)任意的移植操作,從而實(shí)現(xiàn)可移植性,但是這種執(zhí)行的方式其性能上呢肯定不如直接在固定的操作系統(tǒng)上方便,可是這樣做的好處是方便開發(fā)。3.4、Java開發(fā)環(huán)境搭建——JDK〔重點(diǎn)〕 要想進(jìn)行java程序的開發(fā),那么首先必須將JDK配置到位,JDK現(xiàn)在使用最廣泛的版本是JDK1.5,以后的開發(fā)中記住了,只使用穩(wěn)定版本,而不要使用最新版本。 本次使用的是JDK1.6版本,直接從上下載即可。 現(xiàn)在如果直接啟動了JDK的安裝程序,那么顯示的語言是中文,因?yàn)镴DK屬于多國語言版,所以要想更準(zhǔn)確的發(fā)現(xiàn)各種錯(cuò)誤信息,建議將本機(jī)操作系統(tǒng)的語言環(huán)境設(shè)置為英文。 控制面板:區(qū)域和語言選項(xiàng)。 選擇完成之后,直接選擇確定,再重新啟動安裝程序界面。 安裝完成之后下面要進(jìn)入到JDK的配置,因?yàn)樵贘AVA中需要程序和解釋,而編譯和解釋的命令:javac、java,但是這兩個(gè)命令由于本身并不屬于windows,所以默認(rèn)情況下根本就無法找到,此時(shí),就需要將JDK安裝目錄下的bin文件夾配置到path路徑之中。 我的電腦 屬性 高級選項(xiàng) 配置環(huán)境 配置完成之后必須重新啟動命令行方式才可以將新的內(nèi)容加載進(jìn)來。3.5、編寫第一個(gè)java程序〔重點(diǎn)〕 下面使用Java編寫第一個(gè)應(yīng)用程序,目的是在屏幕上輸出“HelloWorld”。范例:publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println("HelloWorld!!!"); }} 程序編寫完成之后,按照如下的步驟進(jìn)行執(zhí)行:,編譯完成之后出現(xiàn)了一個(gè)*.class的文件; 2、 解釋程序:javaHello,但是此時(shí)出現(xiàn)了如下的錯(cuò)誤信息:Exceptioninthread"main"java.lang.UnsupportedClassVersionError:Hello(Unsupportedmajor.minorversion50.0)現(xiàn)在提示的錯(cuò)誤信息是:錯(cuò)誤的版本,查看現(xiàn)在使用JAVA的版本:java–version 顯示信息:javaversion"_03"Java(TM)2RuntimeEnvironment,StandardEdition(build_03-b02)JavaHotSpot(TM)ClientVM(build_03-b02,mixedmode) 現(xiàn)在顯示的信息是Java1.4版本,那么我們配置的JDK1.6呢? 實(shí)際上這個(gè)出現(xiàn)的錯(cuò)誤信息完全是由Oracle,因?yàn)镺racle本身已經(jīng)自帶了JDK,因?yàn)樵S多Oracle的一些應(yīng)用程序都是java開發(fā)的,所以運(yùn)行,就必須有JDK的支持。 但是要想解決此問題,現(xiàn)在有兩種方式:·在path屬性之后,刪除掉所有與oracle的JDK有關(guān)的配置;D:\oracle\product\\db_1\jre\1.4.2\bin\client;D:\oracle\product\10.1.0\db_1\jre\1.4.2\bin;·將所要使用新的配置放在path的最前面: 因?yàn)樽x取的時(shí)候采用的是順序的方式。3.6、第一個(gè)程序的相關(guān)解釋〔重點(diǎn)〕 第一個(gè)程序編寫完成之后,下面來看一下程序的組成局部,所有的java程序都是定義在一個(gè)類之中的,而此出使用的類名稱是Hello。publicclassHello{} 任何的程序都是從主方法開始運(yùn)行的,在java中的主方法定義如下;publicstaticvoidmain(Stringargs[]){} 以上是程序運(yùn)行的根本的結(jié)構(gòu),而要想在屏幕上進(jìn)行輸出的話,那么必須使用如下的語句:System.out.println("HelloWorld!!!"); 以上的輸出的表示是輸出之后加一個(gè)換行,如果現(xiàn)在沒有使用println(),而使用的是print()的方法就表示不換行。 但是現(xiàn)在在使用的時(shí)候也有一個(gè)注意點(diǎn),所有的程序都是由主方法開始執(zhí)行,但是主方法要定義在一個(gè)類中,而且關(guān)于類的聲明現(xiàn)在有兩種形式:·publicclass聲明:文件名稱〔*.java〕必須與聲明的類名稱保持一致;·class聲明:文件名稱可以與類名稱不一致,但是在執(zhí)行的時(shí)候必須執(zhí)行生成的類名稱; 在一個(gè)*.java文件之中,可以同時(shí)定義多個(gè)class,但是只能有一個(gè)publicclass,但是編譯之后文件夾中將生成多個(gè)*.class文件。 而且可以發(fā)現(xiàn),現(xiàn)在在編寫類名稱的時(shí)候采用的格式是,每個(gè)單詞的首字母大寫,例如:HelloWorldDemo3.7、classpath環(huán)境屬性〔重點(diǎn)〕 在默認(rèn)的情況下,一個(gè)java程序編譯完成之后,只能在其所在的目錄中解釋此程序。 如果現(xiàn)在在不同的路徑下也想繼續(xù)訪問*.class文件的話,那么只能依靠classpath環(huán)境屬性的支持了,設(shè)置方法:SETCLASSPATH=路徑范例:將d:\testjava作為classpathSETCLASSPATH=d:\testjava 現(xiàn)在設(shè)置完成之后,即使當(dāng)前的路徑中不包含了*.class文件,但是也可以依照著classpath找到所指定路徑中的*.class文件,也就是現(xiàn)在的程序運(yùn)行:java解釋找到classpath環(huán)境所設(shè)置的路徑解釋*.class文件。 但是這樣一來也會出現(xiàn)一個(gè)問題,如果將classpath到處設(shè)置的話也很麻煩,所以一般情況下都會將classpath設(shè)置為當(dāng)前所在的文件夾中查找所需要的*.class文件,也就是當(dāng)前目錄查找,設(shè)置為“.”即可。SETCLASSPATH=. 這種設(shè)置實(shí)際上也就是默認(rèn)的設(shè)置,但是有些時(shí)候這種設(shè)置有可能出現(xiàn)問題,那么只能按照如上方式進(jìn)行了,如果覺得每次這樣設(shè)置過于麻煩的話,也可以直接通過環(huán)境屬性完成。 這樣的話,每次就不用重新設(shè)置了,以后有新的classpath也可以在此處直接完成配置,具體的這些操作將在以后的程序講解中出現(xiàn)。3.8、標(biāo)識符及關(guān)鍵字〔重點(diǎn)〕Java中的變量及類名稱的組成也是有標(biāo)識符的要求的,這些要求如下:只能由字母、數(shù)字、下劃線、$所組成,其中不能以數(shù)字開頭,不能是java中的關(guān)鍵字〔保存字〕。 這些保存字沒有任何的必要去背,這些隨著程序的深入而逐步都會接觸到,但是這些關(guān)鍵字之中也有如下的幾個(gè)注意點(diǎn):·從版本的開展來講: |-JDK1.4之后增加了一個(gè)assert關(guān)鍵字; |-JDK1.5之后增加了一個(gè)enum關(guān)鍵字;·以上的關(guān)鍵字之中,有兩個(gè)未使用到的保存字:const、goto;·有特殊含義的標(biāo)記〔嚴(yán)格講不能算做關(guān)鍵字〕:true、false、null;3.9、數(shù)據(jù)類型〔重點(diǎn)〕 任何的編程語言都無法回避數(shù)據(jù)類型的問題,在Java之中數(shù)據(jù)類型一共分為兩大類:·根本數(shù)據(jù)類型:傳遞是一個(gè)個(gè)具體的數(shù)值; |-數(shù)值型: |-整型:byte、int、short、long |-浮點(diǎn)型:float、double |-字符型:char |-布爾型:boolean·引用數(shù)據(jù)類型:就類似于C語言中的指針傳遞,傳遞的是內(nèi)存地址; |-數(shù)組 |-類 |-接口、根本型數(shù)據(jù) 每種根本數(shù)據(jù)類型都有其自己的取值范圍和默認(rèn)值,下面通過如下的表來列出。No.根本數(shù)據(jù)類型取值范圍默認(rèn)值〔不可靠〕1byte-128~12702short-32768~3276703int-2147483648~214748364704long-9223372036854775808~922337203685477580705float~6double~7boolantrue、falsefalse8char-'\u0000' 從以上的取值范圍來講,double的范圍是最大的,所以使用double幾乎可以裝下全宇宙最大的一個(gè)數(shù)字。 這些根本類型可以直接產(chǎn)生變量并進(jìn)行計(jì)算。范例:定義整型數(shù)據(jù)publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx=1; inty=2; System.out.println(x+y); }} 但是有一點(diǎn)必須注意的是,在java語言之中,一個(gè)數(shù)字的默認(rèn)類型是int型的數(shù)據(jù),但是在進(jìn)行這種運(yùn)算的時(shí)候也有一個(gè)問題,就是如果數(shù)據(jù)已經(jīng)超過了int的范圍,那么有可能出現(xiàn)數(shù)據(jù)的溢出問題。publicclassHello{ publicstaticvoidmain(Stringargs[]){ intmax=Integer.MAX_VALUE; //取得int的最大值 intmin=Integer.MIN_VALUE; //取得int的最小值 System.out.println(max+1); System.out.println(min-1); }} 如果已經(jīng)是最大值了,那么繼續(xù)進(jìn)行相加操作會變?yōu)樽钚≈担绻呀?jīng)是最小值了,那么再相減就成為了最大值。 如果現(xiàn)在要想保持住一個(gè)比擬合理的做法,那么最好的方式是擴(kuò)大數(shù)據(jù)的范疇,因?yàn)樵趈ava之中,所有范圍小的數(shù)據(jù)可以自動向范圍大的數(shù)據(jù)轉(zhuǎn)換。publicclassHello{ publicstaticvoidmain(Stringargs[]){ intmax=Integer.MAX_VALUE; //取得int的最大值 intmin=Integer.MIN_VALUE; //取得int的最小值 System.out.println(max+1L); //longx=max,x+=1; System.out.println(min-1L); }}自動的數(shù)據(jù)類型轉(zhuǎn)換是由位數(shù)低的向位數(shù)高的轉(zhuǎn)換,但是如果現(xiàn)在要想將位數(shù)高的向位數(shù)低的轉(zhuǎn)換,那么必須采用強(qiáng)制手段。publicclassHello{ publicstaticvoidmain(Stringargs[]){ longx=1L; inty=(int)x;//位數(shù)大的向位數(shù)小的轉(zhuǎn)換,需要強(qiáng)制 inttemp=190; byteb=(byte)temp; System.out.println(b); //數(shù)據(jù)溢出 }}思考題:請說出以下的答案publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(11+1l); }} 一定要注意了,表示long的“L”和“l(fā)”是一個(gè)含義。 如果要想表示出小數(shù)的話,那么可以使用float和double,但是默認(rèn)的一個(gè)小數(shù)其類型是double。publicclassHello{ publicstaticvoidmain(Stringargs[]){ doubled1=1902.3345; System.out.println(d1+10); }} 如果現(xiàn)在一個(gè)小數(shù)要使用float接收的話,那么必須加上一個(gè)字母“f”〔“F”〕,這樣表示將double變?yōu)閒loat。publicclassHello{ publicstaticvoidmain(Stringargs[]){ floatd1=; System.out.println(d1+10); }}但是有些時(shí)候在計(jì)算上也有一寫注意點(diǎn),例如:除法操作。范例:現(xiàn)在使用整型除法publicclassHello{ publicstaticvoidmain(Stringargs[]){ intline=10; intcp=3; System.out.println(line/cp); //因?yàn)閕nt沒有小數(shù) System.out.println(line/(double)cp); //將一個(gè)類型變?yōu)閐ouble }} 除了這些操作之外,在定義變量的時(shí)候也有一個(gè)注意點(diǎn),即:一個(gè)變量定義的時(shí)候必須聲明默認(rèn)值,但是這種做法要分不同的版本:范例:publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx; x=10; System.out.println(x); }}和以前這種做法都是錯(cuò)誤的,而且根本就無法編譯通過。 在以后定義變量的時(shí)候永遠(yuǎn)要給出默認(rèn)值。 在根本類型之中,還有字符型的數(shù)據(jù),可是字符型和int型是可以互相轉(zhuǎn)換的,而且一個(gè)字符要使用“'”聲明。范例:定義字符publicclassHello{ publicstaticvoidmain(Stringargs[]){ charc='A'; System.out.println(c); }}范例:和int型互相轉(zhuǎn)換publicclassHello{ publicstaticvoidmain(Stringargs[]){ charc='A'; intx=c; //char-->int x++; c=(char)x; //int-->char System.out.println(c); System.out.println(x); }}在C語言之中,這種轉(zhuǎn)換后的數(shù)字實(shí)際上就是ASCII碼,但是在Java之中所有的編碼是采用的UNICODE編碼,而UNICODE編碼中兼容了ASCII碼。面試題:一個(gè)字符能否保存一個(gè)中文呢?publicclassHello{ publicstaticvoidmain(Stringargs[]){ charc='陽'; System.out.println(c); }} 以上程序在編譯的時(shí)候出現(xiàn)了錯(cuò)誤的信息,但是之所以會存在錯(cuò)誤信息主要的原因是因?yàn)楝F(xiàn)在的語言環(huán)境是英文,而如果換到了中文的語言環(huán)境下,那么就可以了。 之所以可以保存主要的原因是java采用的十六進(jìn)制編碼,那么此編碼可以包含世界上所有的文字。 在根本數(shù)據(jù)類型有一個(gè)表示真與假的功能,就是boolean型的內(nèi)容,此類型只有兩種取值:true、false,而且此類型大局部情況下都是用于程序邏輯的實(shí)現(xiàn)上的。publicclassHello{ publicstaticvoidmain(Stringargs[]){ booleanflag=true; if(flag){ //等價(jià)于:flag==true System.out.println("HelloWorld!!!"); } }}、初窺String 在數(shù)據(jù)庫的學(xué)習(xí)之中曾經(jīng)學(xué)習(xí)過,要是想表示出一個(gè)人的姓名肯定是字符串,所以字符串在java中就可以使用String來定義了,可是String是一個(gè)類,只是這個(gè)類使用起來即特殊也方便。publicclassHello{ publicstaticvoidmain(Stringargs[]){ Stringname="張三"; System.out.println(name); }} 而且字符串中也可以使用“+”進(jìn)行字符串的連接。publicclassHello{ publicstaticvoidmain(Stringargs[]){ Stringname="張三"; name+=",你好"; //連接字符串 name=name+"!!!"; //連接字符串 System.out.println("信息:"+name); }}但是有一點(diǎn)也必須注意的是,如果任何的數(shù)據(jù)類型遇到了String,那么所有的數(shù)據(jù)類型都將變?yōu)樽址ublicclassHello{ publicstaticvoidmain(Stringargs[]){ Stringinfo="計(jì)算結(jié)果:"; intx=1; inty=2; System.out.println(info+x+y); System.out.println(info+(x+y)); }}3.10、運(yùn)算符〔重點(diǎn)〕 數(shù)學(xué)運(yùn)算符:+、-、*、/、%; 簡便運(yùn)算符:++、--、+=、-=、….; 邏輯運(yùn)算符:&&、&、||、|、!; 關(guān)系運(yùn)算符:>、>=、<、<=、!=; 位運(yùn)算符:&、|、^、~;范例:以下代碼不能在開發(fā)中使用publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx=0; x++; x+=++x-x+++x-10; System.out.println(x); }} 但是對于邏輯運(yùn)算符有與和或兩個(gè),但是卻分為兩組,這兩組分別來看,再看之前,先來觀察以下一道程序。publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(10/0==0); }} 這種代碼一旦執(zhí)行肯定要出現(xiàn)錯(cuò)誤,但是下面就以上面的代碼作為操作的一個(gè)點(diǎn)。范例:觀察與的操作,與的操作指的是所有的條件必須都滿足publicclassHello{ publicstaticvoidmain(Stringargs[]){ if(1==2&10/0==0){ System.out.println("HELLOWORLD!!!"); } }} 現(xiàn)在可以發(fā)現(xiàn),兩個(gè)條件都進(jìn)行了判斷,但是從實(shí)際來講,第一個(gè)判斷條件已經(jīng)是false了,那么既然是false的話,那么以后再怎么驗(yàn)證,結(jié)果都只能是false,而這種&卻將所有的條件都判斷了,肯定不適宜,所以在java之中提供了短路與操作——&&。publicclassHello{ publicstaticvoidmain(Stringargs[]){ if(1==2&&10/0==0){ System.out.println("HELLOWORLD!!!"); } }} 因?yàn)楝F(xiàn)在第一個(gè)條件已經(jīng)不滿足了,所以后面的條件無論如何判斷最終的結(jié)果都是false,所以,將其全部判斷就沒有意義了。范例:觀察或的操作,有一個(gè)操作條件滿足,那么一切都滿足。publicclassHello{ publicstaticvoidmain(Stringargs[]){ if(1==1|10/0==0){ System.out.println("HELLOWORLD!!!"); } }} 現(xiàn)在的普通“|”會將所有的條件都進(jìn)行判斷,理論上如果第一是true的話,那么后面無論如何的判斷最終結(jié)果都是true,那么有一個(gè)滿足條件就完了,后面判斷就沒有意義了,現(xiàn)在就可以使用短路或完成。publicclassHello{ publicstaticvoidmain(Stringargs[]){ if(1==1||10/0==0){ System.out.println("HELLOWORLD!!!"); } }} 在實(shí)際的開發(fā)中就使用“&&”和“||”完成。范例:三目運(yùn)算符publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx=10; inty=20; intmax=x>y?x:y; System.out.println(max); }}位運(yùn)算:在開發(fā)中出現(xiàn)較少,但是作為知識點(diǎn)需要先掌握一下 在進(jìn)行位運(yùn)算之前必須先把握一個(gè)概念:十進(jìn)制變?yōu)槎M(jìn)制數(shù)據(jù)。除2取余,倒著取數(shù)據(jù)。 5 101÷ 2 2 … 1^÷ 2 | 1 … 0|÷ 2 | 0 … 1| 但是在java之中整型的數(shù)據(jù)長度是32位,所以以上的數(shù)據(jù)如果嚴(yán)格來講,變?yōu)槎M(jìn)制是: 00000000000000000000000000000101 在java中提供的位運(yùn)算符:&、|、^、~、>>、<<、>>>范例:觀察與操作publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx=13; inty=15; System.out.println(x&y); }} 下面使用二進(jìn)制的方式分析以上的程序: 13的二進(jìn)制: 000000000000000000000000000001101 15的二進(jìn)制: 000000000000000000000000000001111 &操作: 000000000000000000000000000001101 13范例:或操作publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx=9; inty=7; System.out.println(x|y); }} 繼續(xù)使用二進(jìn)制分析: 9的二進(jìn)制: 000000000000000000000000000001001 7的二進(jìn)制: 000000000000000000000000000000111 |操作: 000000000000000000000000000001111 15范例:觀察移位操作,但是需要注意的是,移位之后的原數(shù)據(jù)內(nèi)容不改變publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx=9; System.out.println(x<<2); System.out.println(x); }} 分析以上的數(shù)據(jù)操作: 9的二進(jìn)制: 000000000000000000000000000001001 向左移兩位: 000000000000000000000000000100100 36面試題:要求以最快的方式計(jì)算出2的3次方——靠移位最快publicclassHello{ publicstaticvoidmain(Stringargs[]){ intx=2; System.out.println(x<<2); }}3.11、程序結(jié)構(gòu)〔重點(diǎn)〕 程序的結(jié)構(gòu)主要包括:順序、分支、循環(huán)等操作。 分支:if..else、switch 循環(huán):for、while、do…while范例:使用if….else判斷publicclassHello{ publicstaticvoidmain(Stringargs[]){ intage=10; if(age>=0&&age<=12){ System.out.println("小P孩。"); }elseif(age>12&&age<=18){ System.out.println("小少年。"); }elseif(age>18&&age<=150){ System.out.println("成年了"); }else{ System.out.println("您不是人了。。。"); } }} 這種if..else的判斷是可以直接使用boolean型的數(shù)據(jù)完成的,同樣,對于多條件判斷,也可以使用switch,但是switch可以判斷的內(nèi)容只能數(shù)字、字符、枚舉。publicclassHello{ publicstaticvoidmain(Stringargs[]){ intch=1; switch(ch){ case0:{ System.out.println("***結(jié)果是0"); break; } case1:{ System.out.println("***結(jié)果是1"); break; } case2:{ System.out.println("***結(jié)果是2"); break; } default:{ System.out.println("沒有滿足條件的地方。"); break; } } }} 循環(huán)程序肯定是必須的,實(shí)際上任何語言的學(xué)習(xí)之中,循環(huán)是一大難關(guān),循環(huán)有如下幾點(diǎn)需要注意:·循環(huán)要注意循環(huán)體的操作;·循環(huán)的時(shí)候要考慮到死循環(huán)的問題;·考慮到循環(huán)條件的變更。范例:1~100累加——while循環(huán)publicclassHello{ publicstaticvoidmain(Stringargs[]){ intsum=0; intx=1; while(x<=100){ //判斷條件 sum+=x; //累加 x++; //修改循環(huán)條件 } System.out.println(sum); }}范例:1~100累加——do…while循環(huán)publicclassHello{ publicstaticvoidmain(Stringargs[]){ intsum=0; intx=1; do{ //判斷條件 sum+=x; //累加 x++; //修改循環(huán)條件 }while(x<=100); System.out.println(sum); }}范例:1~100累加——for循環(huán)publicclassHello{ publicstaticvoidmain(Stringargs[]){ intsum=0; for(intx=1;x<=100;x++){ sum+=x; } System.out.println(sum); }} 對于循環(huán)的使用:·在實(shí)際之中while循環(huán)要比do…while使用更多;·如果不知道循環(huán)次數(shù)的時(shí)候使用while,而知道循環(huán)次數(shù)的時(shí)候使用for循環(huán)。 對于循環(huán)的操作本身是允許嵌套的,比擬常見的功能。范例:打印乘法口訣publicclassHello{ publicstaticvoidmain(Stringargs[]){ for(intx=1;x<=9;x++){ for(inty=1;y<=x;y++){ System.out.print(x+"*"+y+"="+x*y+"\t"); } System.out.println(); } }}范例:打印三角形publicclassHello{ publicstaticvoidmain(Stringargs[]){ intline=10; //希望打印10行 for(intx=0;x<line;x++){ for(inty=0;y<line-x;y++){ System.out.print(""); } for(inty=0;y<=x;y++){ System.out.print("*"); } System.out.println(); //換行 } }} 這些都是一些根本程序的設(shè)計(jì)。3.12、方法〔重點(diǎn)〕、方法的根本概念方法就是一段可以被重復(fù)調(diào)用的代碼段,在C語言之中將方法又稱為函數(shù),但是在java開發(fā)之中千萬不能說函數(shù),永遠(yuǎn)只能說方法。 但是現(xiàn)在的方法稍微有一些特殊,現(xiàn)在的方法是要求由主方法直接進(jìn)行調(diào)用的,那么必須按照如下的格式定義:publicstatic返回值類型方法名稱(參數(shù)列表){ [return返回值;]} 對于返回值就是java中的數(shù)據(jù)類型,這種類型就分為根本數(shù)據(jù)類型和引用數(shù)據(jù)類型兩大類了,而如果現(xiàn)在一個(gè)方法不需要返回值,那么在方法中不需要編寫return語句,返回值類型處聲明為void。范例:定義一個(gè)沒有返回值的方法publicclassHello{ publicstaticvoidmain(Stringargs[]){ printStar(); //由方法直接調(diào)用 printStar(); //由方法直接調(diào)用 printStar(); //由方法直接調(diào)用 } publicstaticvoidprintStar(){ System.out.println("******************"); System.out.println("*HELLOWORLD*"); System.out.println("******************"); }}范例:定義接收參數(shù)的方法publicclassHello{ publicstaticvoidmain(Stringargs[]){ printStar(3); printStar(16); } publicstaticvoidprintStar(intline){ //接收參數(shù) for(intx=0;x<line;x++){ for(inty=0;y<line-x;y++){ System.out.print(""); } for(inty=0;y<=x;y++){ System.out.print("*"); } System.out.println(); //換行 } }} 方法依然可以返回內(nèi)容,這個(gè)時(shí)候使用return即可。范例:定義一個(gè)返回?cái)?shù)據(jù)計(jì)算的方法publicclassHello{ publicstaticvoidmain(Stringargs[]){ intresult=add(10,20); System.out.println(result); System.out.println(add(20,30)); } publicstaticintadd(intx,inty){ returnx+y; }}、使用return完結(jié)方法 之前使用return的時(shí)候都是在方法有返回值類型聲明的時(shí)候操作的,如果現(xiàn)在返回的返回值類型聲明為void的話,那么也可以使用return,一旦使用了return的話,那么表示將直接返回到方法的被調(diào)用處執(zhí)行。publicclassHello{ publicstaticvoidmain(Stringargs[]){ printStar(-3); printStar(-16); } publicstaticvoidprintStar(intline){ //接收參數(shù) if(line<=0){ //數(shù)據(jù)沒有任何的意義 return; //返回方法的被調(diào)用處 } for(intx=0;x<line;x++){ for(inty=0;y<line-x;y++){ System.out.print(""); } for(inty=0;y<=x;y++){ System.out.print("*"); } System.out.println(); //換行 } }} 這種操作只能在返回值類型是void的情況下才可以使用。、方法的重載〔重點(diǎn)〕 在講解此概念之前,先來觀察如下的一段程序。publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(add1(20,30)); System.out.println(add2(20,30,10)); System.out.println(add3(190.1,182.2)); } publicstaticintadd1(intx,inty){ returnx+y; } publicstaticintadd2(intx,inty,intz){ returnx+y+z; } publicstaticdoubleadd3(doublex,doubley){ returnx+y; }} 這個(gè)時(shí)候的目的是想實(shí)現(xiàn)多個(gè)數(shù)據(jù)的相加操作,但是這種定義的形式在進(jìn)行代碼的管理上肯定不方便,因?yàn)樵谡{(diào)用方法的時(shí)候還必須根據(jù)參數(shù)的類型或個(gè)數(shù)來找到方法的名稱,在這種情況下,就可以使用方法重載的概念完成,所謂的方法重載就是指的方法名稱相同,但是參數(shù)的類型或個(gè)數(shù)不同。publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(add(20,30)); System.out.println(add(20,30,10)); System.out.println(add(190.1,182.2)); } publicstaticintadd(intx,inty){ returnx+y; } publicstaticintadd(intx,inty,intz){ returnx+y+z; } publicstaticdoubleadd(doublex,doubley){ returnx+y; }} 在這種情況下,可以發(fā)現(xiàn),程序會自動根據(jù)參數(shù)的類型或個(gè)數(shù)的不同,以調(diào)用不同的方法完成操作。思考題:以下的操作是否是重載?publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(add(20,30)); System.out.println(add(20,30)); } publicstaticintadd(intx,inty){ returnx+y; } publicstaticdoubleadd(intx,inty){ returnx+y; }} 方法的重載與返回值類型根本就沒有任何的關(guān)系存在,只看方法名稱、參數(shù)的類型或個(gè)數(shù)。范例:觀察以下的代碼publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(1); System.out.println(10.3); System.out.println('A'); System.out.println(true); System.out.println("HELLO"); }} 以上同一個(gè)“System.out.println()”方法可以輸出不同的數(shù)據(jù)類型。所以此方法也是一個(gè)被重載的方法。、遞歸調(diào)用〔理解〕 遞歸調(diào)用:指的是一個(gè)方法自己調(diào)用自己的情況,但是如果要想完成遞歸調(diào)用的話,那么必須滿足如下的幾個(gè)條件: 1、 一定會有一個(gè)遞歸的結(jié)束條件; 2、 而且每次調(diào)用的時(shí)候都要改變這個(gè)結(jié)束條件。范例:完成1~100的累加操作——最早的做法,使用while完成publicclassHello{ publicstaticvoidmain(Stringargs[]){ intsum=0; intx=1; while(x<=100){ sum+=x; x++; } System.out.println(sum); }} 這種代碼之中結(jié)束條件是:x>100,那么現(xiàn)在將程序換到遞歸完成。publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(fun(100)); } publicstaticintfun(intnum){ if(num==1){ return1; } returnnum+fun(num-1); }} 這個(gè)時(shí)候的fun()方法的調(diào)用就相當(dāng)于:fun(100)+fun(99)+fun(98)+…+fun(1); 可是,遞歸本身操作的時(shí)候會存在內(nèi)存的溢出問題,所以開發(fā)中使用并不多見,除非萬不得已的時(shí)候。、思考題1、 現(xiàn)在要求通過方法完成以下的計(jì)算操作:1!+2!+…+100!,輸出結(jié)果。 提示:如果可以最好試著使用遞歸完成。 這個(gè)數(shù)據(jù)太大了,而且已經(jīng)超過了long的范疇,那么只能擴(kuò)大,使用double。實(shí)現(xiàn)方式一:按照普通的循環(huán)方法完成publicclassHello{ publicstaticvoidmain(Stringargs[]){ doublesum=0.0; //定義一個(gè)保存結(jié)果的變量 for(intx=1;x<=100;x++){ doubletemp=1.0;//階乘必須從1開始 for(inty=1;y<=x;y++){ temp*=y; } sum+=temp; } System.out.println(sum); }}實(shí)現(xiàn)方式二:通過遞歸完成操作publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(mul(100)); } publicstaticdoublemul(intnum){ if(num==1){ return1; } returnfun(num)+mul(num-1); } //fun(100)+fun(99)+...+fun(1) publicstaticdoublefun(intnum){ if(num==1){ return1; } returnnum*fun(num-1); }}2、 有5個(gè)人坐在一起,問第5個(gè)人多少歲?答,比第4個(gè)人大2歲。第4個(gè)人說他比第3個(gè)人大2歲,第3個(gè)人比第2個(gè)人大2歲,第2個(gè)人比第1個(gè)人大2歲,問第1個(gè)人時(shí)答復(fù)是10歲。第5個(gè)人到底多大? 直接通過遞歸調(diào)用完成。publicclassHello{ publicstaticvoidmain(Stringargs[]){ System.out.println(age(5)); } publicstaticintage(intcount){ if(count==1){ return10; } return2+age(count-1); }}3、 編寫一個(gè)方法,此方法可以將一個(gè)整數(shù)變?yōu)槎M(jìn)制輸出。 二進(jìn)制的求法:數(shù)字除以2取模,等數(shù)字計(jì)算到0了,也就不取了,現(xiàn)在根本就不知道要除以多少次,那么就要改變做法,繼續(xù)使用遞歸完成。publicclassHello{ publicstaticvoidmain(Stringargs[]){ binary(2389); } publicstaticvoidbinary(intnum){ if(num/2!=0){ binary(num/2); //改變遞歸的條件System.out.print(num%2); } }} 重點(diǎn)是訓(xùn)練遞歸的調(diào)用操作,如果不理解的話,只有一個(gè)方法,多寫幾遍,根據(jù)自己的思路修改。3.13、數(shù)組〔重點(diǎn)〕語言中數(shù)組肯定是要使用的,而且之前學(xué)習(xí)過數(shù)組屬于引用數(shù)據(jù)類型,那么此處就要進(jìn)行內(nèi)存關(guān)系的初步分析。、數(shù)組的根本概念 數(shù)組是一組相關(guān)變量的集合,例如,現(xiàn)在如果要求定義100個(gè)整型數(shù)據(jù),如果不使用數(shù)組的話,那么定義如下:inti1,i2,i3,..i100,這樣的代碼肯定在維護(hù)的時(shí)候相當(dāng)?shù)牟环奖悖驗(yàn)檫@么多的變量,寫起來就很長,代碼就看的不舒服,而且訪問的時(shí)候也沒有任何的規(guī)律可言,那么使用數(shù)組就可以完全解決此類問題。 在Java之中,如果要想定義數(shù)組,有以下幾種語法形式:語法一:聲明并開辟空間數(shù)據(jù)類型[]數(shù)組名稱=new數(shù)據(jù)類型[長度];數(shù)據(jù)類型數(shù)組名稱[]=new數(shù)據(jù)類型[長度]; 這種方式屬于緊湊型的,也可以采用分布完成。語法二:分步完成操作聲明數(shù)組:數(shù)據(jù)類型數(shù)組名稱[]=null;為數(shù)組開辟空間:數(shù)組名稱=new數(shù)據(jù)類型[長度]; 數(shù)組是引用數(shù)據(jù)類型,所以引用數(shù)據(jù)類型聲明的時(shí)候就必須定義成“null”。 數(shù)組定義完成,要想訪問的話,可以直接通過“數(shù)組[下標(biāo)]”的形式完成,但是必須注意的是,如果數(shù)組的長度是3的話,那么下標(biāo)的范圍是:0~2表示3個(gè)元素。 而且在Java之中也可以通過“”的形式取得一個(gè)數(shù)組的長度。 數(shù)組在開辟空間之后,里面的每一個(gè)內(nèi)容都是默認(rèn)值,現(xiàn)在如果是int型的數(shù)組,那么默認(rèn)都是0。范例:定義一個(gè)整型數(shù)組publicclassHello{ publicstaticvoidmain(Stringargs[]){ intdata[]=newint[3]; //定義一個(gè)包含3個(gè)元素的數(shù)組 System.out.println(data.length); //求出長度 System.out.println(data[0]); //訪問第一個(gè)元素 }}范例:循環(huán)操作publicclassHello{ publicstaticvoidmain(Stringargs[]){ intdata[]=newint[3]; //定義一個(gè)包含3個(gè)元素的數(shù)組 for(intx=0;x<data.length;x++){ System.out.print(data[x]+"、"); //通過下標(biāo)訪問 } for(intx=0;x<data.length;x++){ data[x]=x*2; //為數(shù)組中的每個(gè)元素賦值 } System.out.println(); for(intx=0;x<data.length;x++){ System.out.print(data[x]+"、"); //通過下標(biāo)訪問 } }} 使用數(shù)組之中,雖然變量很多,但是很好管理,可是以上的做法是一次性完成的數(shù)組的分配,那么下面分兩步完成:publicclassHello{ publicstaticvoidmain(Stringargs[]){ intdata[]=null; //定義數(shù)組 data=newint[3]; //開辟空間 for(intx=0;x<data.length;x++){ System.out.print(data[x]+"、"); //通過下標(biāo)訪問 } for(intx=0;x<data.length;x++){ data[x]=x*2; //為數(shù)組中的每個(gè)元素賦值 } System.out.println(); for(intx=0;x<data.length;x++){ System.out.print(data[x]+"、"); //通過下標(biāo)訪問 } }} 這樣的兩種方式操作的效果是完全一樣的,那么下面就要分析數(shù)組的內(nèi)存操作了。、數(shù)組的內(nèi)存操作〔核心重點(diǎn)〕 從數(shù)組上現(xiàn)在可以發(fā)現(xiàn)如下的特點(diǎn):·數(shù)組是一個(gè)引用數(shù)據(jù)類型,引用數(shù)據(jù)類型必然要有內(nèi)存空間的分配問題;·數(shù)組在開辟空間的時(shí)候使用了關(guān)鍵字new,此關(guān)鍵字的主要功能是開辟新的內(nèi)存空間; 內(nèi)存空間現(xiàn)在可以先暫時(shí)將其劃分成兩個(gè)局部〔前提:實(shí)際上對于java來講內(nèi)存沒有以下的這種劃分,但是為了理解的方便,所以采用了C++的方式進(jìn)行內(nèi)存的理解?!常骸ざ褍?nèi)存:堆內(nèi)存的主要功能是用于保存具體內(nèi)容的;·棧內(nèi)存:保存著對一塊堆內(nèi)存的地址值,而現(xiàn)在為了簡單的理解,將其簡單理解為,保存的是數(shù)組名稱; 那么,按照此劃分的方式,那么可以將以上的程序畫成以下的內(nèi)存關(guān)系圖。 而如果現(xiàn)在采用的是直接開辟空間的形式,可以將以上圖形的第一個(gè)和第二個(gè)合在一起。 如果說以上表示的是一個(gè)人一個(gè)名字的話,那么從實(shí)際的生活來講,一個(gè)人就可能有多個(gè)名字。publicclassHello{ publicstaticvoidmain(Stringargs[]){ intdata[]=newint[3]; //開辟空間 for(intx=0;x<data.length;x++){ System.out.print(data[x]+"、"); //通過下標(biāo)訪問 } for(intx=0;x<data.length;x++){ data[x]=x*2; //為數(shù)組中的每個(gè)元素賦值 } intres[]=data; //data表示一塊空間,而res表示得到這塊空間 res[0]=10; //修改res的內(nèi)容 System.out.println(); for(intx=0;x<data.length;x++){ System.out.print(data[x]+"、"); //通過下標(biāo)訪問 } }} 此題目的內(nèi)存關(guān)系如下:這種操作就稱為引用傳遞,所謂的引用傳遞就是為一個(gè)堆內(nèi)存空間起多個(gè)名字,之后多個(gè)名字一起操作同一個(gè)空間。、數(shù)組的靜態(tài)初始化 數(shù)組的初始化實(shí)際上是有兩種形式的;·動態(tài)初始化:之前所使用的代碼形式就屬于動態(tài)初始化,因?yàn)殚_辟數(shù)組的時(shí)候沒有為數(shù)組聲明內(nèi)容,而全部都是采用的默認(rèn)值完成的;·靜態(tài)初始化:指的是在數(shù)組聲明的時(shí)候直接定義出具體的內(nèi)容來,但是,靜態(tài)初始化有兩種語法形式。方式一:簡便做法數(shù)據(jù)類型數(shù)組名稱[]={值,值,..};方式二:完整做法數(shù)據(jù)類型數(shù)組名稱[]=new數(shù)據(jù)類型[]{值,值,..};范例:測試代碼publicclassHello{ publicstaticvoidmain(Stringargs[]){ //intdata[]={1,3,5,7,9}; intdata[]=newint[]{1,3,5,7,9}; for(intx=0;x<data.length;x++){ System.out.print(data[x]+"、"); //通過下標(biāo)訪問 } }}、數(shù)組與方法 數(shù)組的引用傳遞掌握之后,實(shí)際上最方便的就在于方法與數(shù)組的操作上了,一個(gè)方法可以接收或者是返回一個(gè)數(shù)組。范例:使用方法接收數(shù)組publicclassHello{ publicstaticvoidmain(Stringargs[]){ intdata[]={89,12,10,19,18,78,90,18,281,8}; printArray(data); //int[]arr=data; } publicstaticvoidprintArray(int[]arr){ //表示接收的是整型數(shù)組 for(intx=0;x<arr.length;x++){ System.out.print(arr[x]+"、"); //通過下標(biāo)訪問 } }} 那么,如果現(xiàn)在在一個(gè)方法之中,將數(shù)組的內(nèi)容修改的話,是否影響原始的數(shù)據(jù)呢?publicclassHello{ publicstaticvoidmain(Stringargs[]){ intdata[]={89,12,10,19,18,78,90,18,281,8}; sort(data); printArray(data); //int[]arr=data; } publicstaticvoidsort(intnum[]){ //在此方法中可以修改數(shù)組內(nèi)容 for(intx=0;x<num.length;x++){ for(inty=0;y<num.length-1;y++){ if(num[y]>num[y+1]){ inttemp=num[y]; num[y]=num[y+1]; num[y+1]=temp; } } } } publicstaticvoidprintArray(int[]arr){ //表示接收的是整型數(shù)組 for(intx=0;x<arr.length;x++){ System.out.print(arr[x]+"、"); //通過下標(biāo)訪問 } }} 既然是引用數(shù)據(jù)類型了,那么傳遞到方法之中,一定可以在方法中修改原始的數(shù)據(jù)內(nèi)容。 以上都是演示了接收數(shù)組的操作,那么下面還可以將代碼進(jìn)一步的修改,將其變?yōu)榉祷財(cái)?shù)組的操作,如果一個(gè)方法要想返回?cái)?shù)組,那么直接在返回的數(shù)據(jù)類型上寫上要返回的數(shù)組類型即可。publicclassHello{ publicstaticvoidmain(Stringargs[]){ intdata[]=init(); sort(data); printArray(data); //int[]arr=data; } publicstaticint[]init(){ //返回?cái)?shù)組內(nèi)容 inttemp[]={89,12,10,19,18,78,90,18,281,8}; returntemp; } publicstaticvoidsort(intnum[]){ //在此方法

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論