freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java基礎(chǔ)就業(yè)培訓(xùn)教程第二章張孝祥-資料下載頁

2025-06-25 06:59本頁面
  

【正文】 用是跳過當(dāng)前循環(huán)的剩余語句塊,接著執(zhí)行下一次循環(huán)。 請(qǐng)看下面打印1到10之間的所有奇數(shù)的例子,當(dāng)i是偶數(shù)時(shí)就跳過本次循環(huán)后的代碼,直接執(zhí)行for語句中的第三部分,然后進(jìn)入下一次循環(huán)的比較,是奇數(shù)就打印i:程序清單:public class PrintOddNum{ public static void main(String [] args) { for(int i=0。i10。i++) { if(i%2==0) continue。 (i)。 } }} 數(shù)組 數(shù)組的基本概念 我們還是通過一個(gè)應(yīng)用問題來引入我們對(duì)數(shù)組的講解,來讓大家了解什么是數(shù)組以及數(shù)組的作用。假設(shè)你需要在程序中定義一百個(gè)整數(shù)變量,并要求出這些變量相加的結(jié)果,如果你沒有用過數(shù)組,這個(gè)程序該怎么寫呢?至少我們需要定義一百個(gè)整數(shù)變量,如下所示:int x0。int x1?!璱nt x98。int x99。一下就要定義100個(gè)相似的變量,然后還要將這些變量一個(gè)一個(gè)的相加,這是一件令人畏懼的事情。有什么簡(jiǎn)單的方法來替代上述變量的定義方式呢?我們可以將上面的定義改寫為:int x[] = new int[100]。上述語句的意義相當(dāng)于一下子就定義了一百個(gè)int變量,變量的名稱分別為x[0],x[1],……,x[98],x[99]。注意,第一個(gè)變量名為x[0],而不是x[1],最后一個(gè)變量名為x[99],而不是x[100],這種定義變量的方式就是數(shù)組。定義了這個(gè)數(shù)組,我們接著就可以使用簡(jiǎn)單的for循環(huán)語句來實(shí)現(xiàn)數(shù)組中的所有元素的相加了,程序代碼如下: int sum=0。 for(int i=0。i100。i++) sum += x[i]。amp。多學(xué)兩招:為了充分和深入了解數(shù)組,我必須向大家講解有關(guān)內(nèi)存分配的一些背后知識(shí)。Java把內(nèi)存劃分成了兩種:一種是棧內(nèi)存,另一種是堆內(nèi)存。我們?cè)诤瘮?shù)中定義的一些基本類型的變量和對(duì)象的引用變量都是在函數(shù)的棧內(nèi)存中分配,當(dāng)我們?cè)谝欢未a塊(也就是一對(duì)花括號(hào){}之間)定義一個(gè)變量時(shí),Java就在棧中為這個(gè)變量分配內(nèi)存空間,當(dāng)超過變量的作用域后,Java會(huì)自動(dòng)釋放掉為該變量所分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作他用,我們先前講到的知識(shí)都屬于棧中分配的變量。堆內(nèi)存用來存放由new創(chuàng)建的對(duì)象和數(shù)組,在堆中分配的內(nèi)存,由Java虛擬機(jī)的自動(dòng)垃圾回收器來管理(關(guān)于自動(dòng)垃圾回收器請(qǐng)參看第一章中的垃圾回收器介紹)。在堆中產(chǎn)生了一個(gè)數(shù)組或?qū)ο蠛?,我們還可以在棧中定義一個(gè)特殊的變量,讓棧中的這個(gè)變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個(gè)變量就成了數(shù)組或?qū)ο蟮囊米兞浚覀円院缶涂梢栽诔绦蛑惺褂脳V械囊米兞縼碓L問堆中的數(shù)組或?qū)ο?,引用變量就相?dāng)于是我們?yōu)閿?shù)組或?qū)ο笃鸬囊粋€(gè)名稱(叫代號(hào)也行)。引用變量是普通的變量,定義時(shí)在棧中分配,引用變量在程序運(yùn)行到其作用域之外后被釋放。而數(shù)組和對(duì)象本身在堆中分配,即使程序運(yùn)行到使用new產(chǎn)生數(shù)組和對(duì)象的語句所在的代碼塊之外,數(shù)組和對(duì)象本身占據(jù)的內(nèi)存不會(huì)被釋放,數(shù)組和對(duì)象在沒有引用變量指向它時(shí),才會(huì)變?yōu)槔荒茉俦皇褂?,但仍然占?jù)內(nèi)存空間不放,在隨后一個(gè)不確定的時(shí)間被垃圾回收器收走(釋放掉)。這也是Java比較吃內(nèi)存的原因。數(shù)組是多個(gè)相同類型數(shù)據(jù)的組合,實(shí)現(xiàn)對(duì)這些數(shù)據(jù)的統(tǒng)一管理,數(shù)組中的每一個(gè)數(shù)據(jù)也叫數(shù)組的一個(gè)元素。我們來解釋下面這句代碼的語法。int x[] = new int[100]。等號(hào)左邊的int x[]相當(dāng)于定義了一個(gè)特殊的變量符號(hào)x,x的數(shù)據(jù)類型是一個(gè)對(duì)int型的數(shù)組對(duì)象的引用,x就是一個(gè)數(shù)組的引用變量,其引用的數(shù)組的元素個(gè)數(shù)不定,就象我們定義一個(gè)基本類型的變量,變量值開始也是不確定的。等號(hào)右邊的new int[100]就是在堆內(nèi)存中創(chuàng)建一個(gè)具有一百個(gè)int變量的數(shù)組對(duì)象。int x[] = new int[100]。就是將右邊的數(shù)組對(duì)象賦值給左邊的數(shù)組引用變量。因此,我們也可以將這一行代碼分成兩行來寫。int x[]。 //定義了一個(gè)數(shù)組x。x=new int[100]。 //數(shù)組初始化。執(zhí)行第二句(x=new int[100]。),在堆里面創(chuàng)建了一個(gè)數(shù)組對(duì)象,為這個(gè)數(shù)組對(duì)象分配了100個(gè)整數(shù)單元,并將數(shù)組對(duì)象賦值給了數(shù)組引用變量x。精通C語言的讀者可能已經(jīng)明白了,數(shù)組引用變量不就是C語言中的指針變量嗎?數(shù)組對(duì)象不就是指針變量要指向的那個(gè)內(nèi)存塊嗎?是的,Java內(nèi)部還是有指針的,只是把指針的概念對(duì)用戶隱藏起來了。我們也可以改變x的值,讓它指向另外一個(gè)數(shù)組對(duì)象,或者不指向任何數(shù)組對(duì)象。要想讓x不指向任何數(shù)組對(duì)象,我們只需要將常量null賦值給x即可。如:x =null。, 。 執(zhí)行完x=null;語句后,原來通過new int[100]產(chǎn)生的數(shù)組對(duì)象不再被任何引用變量所引用,變成了“孤兒”,也就成了垃圾,直到垃圾回收器來將它釋放掉。new int[100]產(chǎn)生的的數(shù)組對(duì)象中的每個(gè)元素的初始值都是0,讀者可以用下面的程序來測(cè)試一下:程序清單:public class TestArray{ public static void main(String [] args) { int x[]。x=new int[100]。for(int i=0。i100。i++){ (x+i+ is +x[i])。}}}在Java中,我們還可以用下面的方式定義數(shù)組:int [] x。 // 方括號(hào)([])位于變量名之前。x=new int[100]。兩種定義數(shù)組方式的效果是完全一樣的,差別只是人們的使用習(xí)慣不同罷了。 數(shù)組的靜態(tài)初始化我們也可以在定義數(shù)組的同時(shí)就為數(shù)組元素分配空間并賦值,也就是對(duì)數(shù)組的靜態(tài)初始化。如這一句: int ia[] ={1,2,3,4}。 等號(hào)右邊相當(dāng)于產(chǎn)生了一個(gè)數(shù)組對(duì)象,該數(shù)組有4個(gè)元素變量,這4個(gè)變量的取值分別是整數(shù)4。數(shù)組的長(zhǎng)度等于右邊{}中的元素的個(gè)數(shù)。我們有時(shí)也能見到下面定義數(shù)組的方式: int ia[]=new int[]{3,4,5}。注意:在Java語言中聲明數(shù)組時(shí),無論用何種方式定義數(shù)組,都不能指定其長(zhǎng)度,例如下面的定義將是非法的。 int a[5]。//編譯時(shí)將出錯(cuò) 使用數(shù)組時(shí)要注意的問題必須對(duì)數(shù)組引用變量賦予一個(gè)有效的數(shù)組對(duì)象(通過new產(chǎn)生或是用{}靜態(tài)初始化而產(chǎn)生)后,才可以引用數(shù)組中的每個(gè)元素,下面的代碼將會(huì)導(dǎo)致運(yùn)行時(shí)出錯(cuò)。public class TestArray{ public static void main(String [] args){ int a[] = null。 a[0]=1。 (a[0])。} }上面的錯(cuò)誤告訴我們,運(yùn)行時(shí)會(huì)有空指針異常錯(cuò)誤(NullPointerException,關(guān)于異常的知識(shí)我們放在后面的章節(jié)講解),因?yàn)閍還沒有指向任何數(shù)組對(duì)象(相當(dāng)于c語言中的指針還沒有指向任何內(nèi)存塊),所以還無法引用其中的元素。還有一點(diǎn)請(qǐng)初學(xué)者注意,譬如說我們下面的代碼:int ia[]=new int[]{1,2,3,4,5}。這行代碼中我們定義了一個(gè)ia數(shù)組,它里面包含了5個(gè)元素,它們分別是:ia[0]=1ia[1]=2ia[2]=3ia[3]=4ia[4]=5也就是說數(shù)組的第一個(gè)元素是ia[0],而不是ia[1]。最后一個(gè)元素是ia[4],而不是ia[5],如果我們不小心使用了ia[5],如下面的程序:程序清單:public class TestArray{ public static void main(String [] args) { int ia[]=new int[]{1,2,3,4,5}。 (ia[5])。 }}就會(huì)發(fā)生“數(shù)組越界異常(ArrayIndexOutOfBoundsException)”,。讀者以后必須學(xué)會(huì)根據(jù)程序所報(bào)出的異常來判斷究竟出了什么錯(cuò)誤,并且看到這樣的錯(cuò)誤,就應(yīng)該明白錯(cuò)誤的原因所在了。要想避免“數(shù)組越界異?!边@樣的錯(cuò)誤,我們必須要知道數(shù)組長(zhǎng)度。數(shù)組引用對(duì)象的length屬性可以返回?cái)?shù)組的長(zhǎng)度。示例程序代碼如下:public class TestArrayLength{ public static void main(String [] args) { int ia[]=new int[]{1,2,3,4,5}。 ()。for(int i=0。i。i++){ (ia[+i+] is +ia[i])。} }} 多維數(shù)組 在Java 中并沒有真正的多維數(shù)組,只有數(shù)組的數(shù)組,雖然在應(yīng)用上很象C語言中的多維數(shù)組,但還是有區(qū)別的。在C語言中定義一個(gè)二維數(shù)組,必須是一個(gè)x*y二維矩陣塊,類似我們通常所見到的棋盤,:Java中多維數(shù)組不一定是規(guī)則矩陣形式,: 我們這樣定義一個(gè)多維數(shù)組:int xx[][]。表示定義了一個(gè)數(shù)組引用變量xx,第一個(gè)元素變量為xx[0],第n個(gè)元素變量為xx[n1]。xx中的每個(gè)元素變量(xx[0]到xx[n1])正好又是一個(gè)整數(shù)類型的數(shù)組引用變量,注意,這里只是要求每個(gè)元素都是一個(gè)數(shù)組引用變量,并沒有要求它們所引用數(shù)組的長(zhǎng)度是多少,也就是每個(gè)引用數(shù)組的長(zhǎng)度可以不一樣,我們還是看看下面的程序代碼。int[][] xx。xx=new int[3][]。這兩句代碼表示數(shù)組xx有三個(gè)元素,每個(gè)元素都是int []類型的一維數(shù)組。相當(dāng)于定義了三個(gè)數(shù)組引用變量,分別為int xx[0][],int [] xx[1],int [] xx[2]。你完全可以把xx[0]想成是一個(gè)普通的變量名,只是正好是x、x、[、0、]這五個(gè)字母的組合罷了,另外,作者是故意對(duì)int xx[0][],int [] xx[1]這兩個(gè)數(shù)組引用變量用不一樣的方式書寫,如果你還記得前面講過的一維數(shù)組的幾種表示方式,就知道作者想達(dá)到一箭雙雕的目的,既幫助讀者鞏固了前面所學(xué)的知識(shí),又便于讀者通過對(duì)比而真正理解作者“把xx[1]想成是一個(gè)普通的變量名”的思想。由于xx[0],xx[1],xx[2]都是數(shù)組引用變量,必須對(duì)它們賦值,指向真正的數(shù)組對(duì)象,才可以引用這些數(shù)組中的元素。xx[0]=new int[3]。xx[1]=new int[2]。注意,xx[0]和xx[1]的長(zhǎng)度可以不一樣,數(shù)組對(duì)象中也可以只有一個(gè)元素。:xx[0]中的第二個(gè)元素用xx[0][1]來表示,如果我們要將整數(shù)5賦值給xx[0]中的第二個(gè)元素,寫法如下:xx[0][1] = 5。如果數(shù)組對(duì)象正好是一個(gè)x*y形式的規(guī)則矩陣,我們不必向上面的程序一樣,先產(chǎn)生高維的數(shù)組對(duì)象后,再逐一產(chǎn)生低維的數(shù)組對(duì)象,完全可以用一句代碼在產(chǎn)生高維數(shù)組對(duì)象的同時(shí),產(chǎn)生所有的低維數(shù)組對(duì)象。 int xx[][]=new int[2][3]。上面的代碼產(chǎn)生了一個(gè)2*3形式的二維數(shù)組,:我們也可以象一維數(shù)組一樣,在定義數(shù)組的同時(shí)就為多維數(shù)組元素分配空間并賦值,也就是對(duì)多維數(shù)組的靜態(tài)初始化。如下面這句代碼 int[][] xx={{3,2,7},{1,5},{6}}。: 與一維數(shù)組一樣,在聲明多維數(shù)組時(shí)不能指定其長(zhǎng)度,例如下面的定義將是非法的。int xx[3][2] = {{3,2},{1,3},{7,5}}。 //編譯出錯(cuò) 一些與數(shù)組操作相關(guān)的函數(shù)既然學(xué)到數(shù)組,我們就介紹兩個(gè)與數(shù)組操作相關(guān)的函數(shù):1. ()函數(shù)拷貝數(shù)組。方法如下:(source, 0, dest, 0, x)。 這行代碼的意思就是:復(fù)制源數(shù)組中從下標(biāo)0開始的x個(gè)元素到目的數(shù)組,從目標(biāo)數(shù)組的下標(biāo)0所對(duì)應(yīng)的位置開始存儲(chǔ)。我們可以從JDK文檔中了解到arraycopy更詳細(xì)的使用說明,:圖 程序清單:public class TestArrayCopy{ public static void main(String [] args) { int ia[]=new int[]{1,2,3,4,5}。 int ib[]=new int[]{9,8,7,6,5,4,3}。 (ia,0,ib,0,3)。 // 復(fù)制源數(shù)組中從下標(biāo)0開始的3個(gè)元素到目的數(shù)組,從下標(biāo)0的位置開始存儲(chǔ)。 for(int i=0。i。i++) (ia[i])。 ()。 for(int j=0。j。j++) (ib[j])。 ()。 }}注意:你復(fù)制的數(shù)組元素的個(gè)數(shù)一定不要超過目的數(shù)組的長(zhǎng)度。否則會(huì)有異常產(chǎn)生。2. 來排序數(shù)組,把里面的元素按從小到大的順序逐一排列,然后把排序后的數(shù)組輸出在命令行窗口上:程序清單:import .*。//關(guān)于上面這條語句的細(xì)節(jié),讀者暫且不用理會(huì),在后面的章節(jié)中會(huì)有詳細(xì)的講解。public class ArrSort{ public static void main(String [] args) { int ia[]=new int[]{1,2,4,8,3}。 (ia)。 //對(duì)數(shù)組ia進(jìn)行排序
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1