【java基礎資料整理】

xcblog發表於2016-11-21

醞釀了幾個月,終於是想寫自己的部落格了。之前聽說寫部落格能更好的學習,所以我就滾進來了!

在漸漸認識到自己的缺陷和不足之後,開始加深自己對java基礎的學習,通過視訊、部落格收集了一些資料。下面分享給大家!

整理之中的意外收穫:

1、java虛擬機器監控命令:開啟cmd視窗-->輸入jvisualvm。第一次開啟的話可能會稍微久一點,以後就好了。

2、兩個變數切換的3種方式:

a、採取第三方變數

int a=8,b=9;
int temp;
temp = b;
b=a;
a=temp;

b、不通過第三方變數

int a=8,b=9;
a=a+b;
b=a-b;
a=a-b;
c、採取^的方式

int a=8,b=9;
a = a^b;
b = a^b; //(a^b)^b = a = 8
a = a^b; //(a^b)^a = b = 9

3、java的垃圾回收機制:在堆記憶體當中,不再被使用的實體將會在垃圾回收機制中進行不定時的清除

4、二維陣列和一維陣列的定義方式:int[] x,int x[] ; int [] [] y,int y[][], int[] y[];

下面進入正題

單例模式

單例模式的用意如下:1、確保一個類只有一個例項被建立

2、提供一個對物件的全域性訪問指標

3、在不影響單例類的客戶端的情況下允許有多個例項

餓漢式:

餓漢式存在的問題:由於例項不用做建立,是直接返回建立好的例項,所以餓漢式節省了時間上的消耗,但是由於例項本身是靜態的,所以會一直佔用記憶體空間

	public class Single{
	   private static Single s = new Single();
	   private Single(){}
	   public static getInstance(){
		return s;
	   }
	}
懶漢式:

一、

	/**
	*這種懶漢式不適合多使用者同時呼叫
	*/
	public class Single{
	    private static Single s = null;
	    private Single(){}
	    public static  Single getInstance(){
		if(s==null)
		   s = new Single();
		return s; 
	    }
	}
二、getInstance加鎖

	/**
	*這種加鎖方式在多使用者呼叫時,容易使記憶體損耗過多
	*/
	public class Single{
	    private static Single s = null;
	    private Single(){}
	    public static Single synchronized getInstance(){
		if(s==null)
		   s = new Single();
		return s; 
	    }
	}
三、內部雙重判斷和同步鎖

	/**
	*懶漢式最優方法,這種方式可以防止鎖的多次建立,記憶體損耗較第一種方式更低
	*/
	public class Single{
	    private static Single s = null;
	    private Single(){}
	    public static Single  getInstance(){
		if(s==null){
		   synchronized(Single.class){
			if(s==null)
			   s = new Single();
		   }
		}
		return s; 
	    }
	}

java類與類之間不能多繼承而可以多實現的原因
多繼承繼承的是另外一個類,而繼承的方法有方法體。實現的介面中的方法是沒有方法體的,所以即使實現的多個介面間有相同的方法但是由於沒有方法體,所以在實現類中實現該方法之後會將所有介面中與該方法一致的方法進行覆蓋。所以可以實現多實現而不可以實現多繼承。 介面之間可以進行多繼承,如果繼承的介面間存在相同方法時,需要超類之間的方法返回值一致。 否則介面之間的多繼承無法實現。

物件導向程式設計的三大特性:多型、繼承、封裝


判斷引用物件資料型別關鍵字:A instanceof Object。instanceof一般用於子類型別有限的情況下。 




相關文章