父類。否則父類" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

java 基礎(chǔ)學(xué)習(xí)之點(diǎn)滴

系統(tǒng) 2049 0

?

  1. 每個(gè)實(shí)例擁有一個(gè)實(shí)例變量;每種類別之下共享一個(gè)靜態(tài)變量。
  2. 編譯器會(huì)處理除RuntimeException外的所有Exception。
  3. try...catch...finally中,finally無論如何都會(huì)被最后執(zhí)行。即使try & catch 內(nèi)含有return,程序也會(huì)在return前先執(zhí)行finally
  4. try...catch中,如果有多個(gè)同父類(除Exception外)的Exception,catch Exception的順序從上到下應(yīng)該是子類->父類。否則父類的Exception處理會(huì)掩蓋了子類的Exception處理。
  5. 在一個(gè)方法中,如果出現(xiàn)Exception,并處理了該Exception后,沒有重新throw該Exception,則try...catch...finally外的代碼還會(huì)繼續(xù)被執(zhí)行。這會(huì)對(duì)程序產(chǎn)生災(zāi)難性影響的。
            public static void main(String[] arg) {
    	String key = "yes";
    	
    	try {
    		midlefun(key);
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	
    	System.out.println("end of main");
    }
    
    static void midlefun(String key) throws Exception {
    	try {
    		System.out.println("start try");
    		doRisky(key);
    		System.out.println("end try");
    	} catch (Exception e) {
    		System.out.println("Exception from midlefun");
    //			throw new Exception();	//如果注釋這一條,"end of midlefun"就會(huì)被打印出來
    	} finally {
    		System.out.println("finally");
    	}
    	System.out.println("end of midlefun");
    }
    
    static void doRisky(String key) throws Exception{
    	System.out.println("start risky");
    	if("yes".equals(key)) {
    		throw new Exception();
    	}
    	System.out.println("end risky");
    	return ;
    }
          
    ?
  6. 方法中的Exception應(yīng)該要自己處理,如果還需要調(diào)用者對(duì)該異常也做出反應(yīng),則需要再throw出來。
  7. Java 的輸入 / 輸出 API 帶有鏈接類型的串流,它代表來源與目的地之間的連接,連接串流將串流與其他串流連接起來。例如: PipedOutputStream

    一般來講,串流要兩兩連接才能做出有意義的事情 其中一個(gè)表示連接,另一個(gè)則是要被調(diào)用方法的。由于 Java 中有豐富的輸入 / 輸出流,只要配合起來就可以完成各種任務(wù),達(dá)到最大的實(shí)用性!

    下面的圖是一個(gè)演示。保存 java 的對(duì)象到一個(gè)文件中。

  8. ?

  9. 內(nèi)部類對(duì)外部類有特權(quán),可以自由地存取它的內(nèi)容,就算是私有的內(nèi)容也一樣。內(nèi)部類可以把外部的方法或變量當(dāng)作是自己的。例如:
            public class MyOuter {
    	private int x;
    	
    	public int getX() {
    		return x;
    	}
    	
    	class MyInner{
    		void go() {
    			x = 42;	//調(diào)用外部類的私有對(duì)象
    		}
    	}
    	
    	MyInner inner = new MyInner();	//初始化內(nèi)部類
    	
    	public void doStuff() {
    		inner.go();
    	}
    	
    	public static void main(String[] arg) {
    		MyOuter outer = new MyOuter();
    		
    		System.out.println(outer.getX());
    		outer.doStuff();
    		
    		System.out.println(outer.getX());
    	}
    }
          
    ?如果需要在外部類中生成內(nèi)部類變量,則需要首先生成外部類對(duì)象。這是由于內(nèi)部類對(duì)外部類的那個(gè)特權(quán)決定的。
            public static void main(String[] arg) {
    	MyOuter outer = new MyOuter();
    	
    	System.out.println(outer.getX());
    	MyOuter.MyInner inner = outer.new MyInner();
    	inner.go();
    	
    	System.out.println(outer.getX());
    }
          
    ?內(nèi)部類一般是在GUI程序中使用比較多。添加ActionListener的時(shí)候。
  10. 線程(Thread)
    ? ~線程啟動(dòng)需要有一個(gè)Runnable對(duì)象。
    ? ~線程有三個(gè)狀態(tài):1.新建(Thread thread = new Thread(runnable););2.可執(zhí)行(thread.start(););3.執(zhí)行中(何時(shí)被執(zhí)行由java虛擬機(jī)來管理,你無法干預(yù)。并且多線程運(yùn)行中,多個(gè)任務(wù)會(huì)被交替執(zhí)行,而不是一個(gè)一個(gè)的被執(zhí)行);4.堵塞(因?yàn)門hread可能在等待其他程序的回復(fù))。
    ? ~由于多個(gè)Thread由虛擬機(jī)來管理交替執(zhí)行,PS:main函數(shù)也是一個(gè)Thread,其被執(zhí)行的順序都是我們無法預(yù)測的。例如下面的代碼:
            public static void main( String[] args )
    {
    	System.out.println("start");
    	Thread myThread = new Thread(new Runnable() {
    		@Override
    		public void run() {
    			System.out.println("in thread");				
    		}
    	});
    	
    	myThread.start();
    	
    	System.out.println("back to main");
    }
          
    ?并不是每次都能夠得到下列輸出的:
    ? start
    ? back to main
    ? in thread
    ? 有可能得到下面的輸出:
    ? start
    ? in thread
    ? back to main
    ?
    ? 這要看虛擬機(jī)開心不開心了。^_^
    ? ~當(dāng)某個(gè)runnable任務(wù)對(duì)某個(gè)狀態(tài)敏感,且多個(gè)Thread都會(huì)操作該狀態(tài)時(shí),就會(huì)產(chǎn)生競爭。這時(shí)候可以在 操作該狀態(tài)的方法 上,增加修飾符synchronized,以達(dá)到加鎖的目的。
    ? ~無論synchronized關(guān)鍵字加在方法上還是對(duì)象上,它取得的鎖都是對(duì)象,而不是把一段代碼或函數(shù)當(dāng)作鎖――而且同步方法很可能還會(huì)被其他線程的對(duì)象訪問。
    ? ~每個(gè)對(duì)象只有一個(gè)鎖(lock)與之相關(guān)聯(lián)。
    ? ~實(shí)現(xiàn)同步是要很大的系統(tǒng)開銷作為代價(jià)的,甚至可能造成死鎖,所以盡量避免無謂的同步控制。
  11. 待續(xù)

java 基礎(chǔ)學(xué)習(xí)之點(diǎn)滴


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 肥乡县| 宁乡县| 东源县| 临沭县| 遵义县| 马边| 阳泉市| 南华县| 汉中市| 汤阴县| 江西省| SHOW| 长武县| 尚义县| 文登市| 库车县| 禹州市| 宕昌县| 万荣县| 江门市| 和龙市| 呼和浩特市| 象州县| 京山县| 金平| 扎兰屯市| 武清区| 华蓥市| 宁德市| 道孚县| 巨鹿县| 夏河县| 临汾市| 资讯 | 纳雍县| 岗巴县| 莱阳市| 浠水县| 达孜县| 当涂县| 佛学|