二維數組[][]
格式1 :int[][]arr=mew int[3][2]
定義了名稱為arr的二維數組
二維數組中有3個一維數組
每一個一維數組中有2個元素
一維數組的名稱分別為arr[0],arr[1],arr[2]
給第一個一維數組1角標位賦值為78寫法是:arr[0][1]=78
格式2 : int[][]arr=mew int[3][]
二維數組中有3個一維數
每一個一維數組都是默認初始化值null
可以對這個三個一維數組分別進行初始化
arr[0] = new int[3]
arr[1] = new int[1]
arr[2] = new int[2]
System.out.println(arr)直接打印二維數組
System.out.println(arr[0])直接打印數組中的角標0的一維數組
System.out.println(arr[0][0])直接打印數組中的角標0的一維數組中角標位0的元素
構造函數:構建創造對象時調用的函數
特點
1函數名與類名相同
2不用定義返回值類型
3沒有具體的返回值
作用:
給對象進行初始化
構建對象都必須要通過構造函數初始化
注意:
1默認構造函數的特點
2多個構造函數時以重載的形式存在的
定義一個Person類的構造函數
構造函數,而且是空參數的
一個類中如果沒有定義過構造函數, 那么該類中會有一個默認的空參數構造函數
如果在類中定義了指定的構造函數,那么類中的默認構造函數就沒有了
一般函數和構造函數什么區別呢?
構造函數:對象創建時,就會調用與之對應的構造函數,對對象進行初始化.
一般函數:對象創建后,需要函數功能時才調用
構造函數:對創建時,會調用只調用一次
一般函數:對創建后,可以被調用多次
什么時候定義構造函數呢?
在描述事物時,該事物已存在一些內容,這些內容都定義在構造函數中
this關鍵字
特點:this代表其所在函數所屬對象的引用.
換言之:this代本類對象的引用
什么時候使用this關鍵字呢?
當在函數內需要用到調用該函數的對象時,就用this
當成員變量和局部變量重名,可以用關鍵字this來區分
this:代表對象.? 代表當前對象.
this就是所在函數所屬對象的引用(哪個對象調用了this所在的函數,this就代表哪個對象)
this也可以用于在構建函數中調用其他構造函數
注意:只能定義在構造函數的第一行
static(靜態)關鍵字
用于修飾成員(成員變量和成員函數)
被修飾后的成員具備一下特點:
隨著類的加載而加載
優先于對象存在
被所有對象所共享
可以直接被類名調用
使用注意
靜態方法只能訪問靜態成員
靜態方法中不可以寫this,super關鍵字
主函數是靜態的
static的特點:
1,static是一個修飾符,用于修飾成員
2,static修飾的成員被所有的對象共享
3,static優先于對象存在,因為statistic得成員隨著類的加載就已經存在了
4,static修飾的成員多了一種調用方式,就可以直接被類名所調用.類名,靜態成員
5,static修飾的數據是共享數據,對象的存儲的是特有數據
成員變量和靜態變量的區別?
1,兩個變量的生命周期
成員變量隨著對象的創建而存在,隨著對象的被回收而釋放
靜態變量隨著類的加載而存在,隨著類的消失而消失
2,調用方式不同
成員變量只能被對象調用
靜態變量可以被對象調用,還可以被類名調用
3,別名不同
成員變量也稱為實例變量
靜態變量也稱為類變量
4,數據存儲位置不同
成員變量數據存儲在堆內存的對象中,所以也叫對象的特有數據
靜態變量數據存儲在方法區(共享數據區)的靜態去,所以也叫對象的共享數據
靜態使用的注意事項:
1,靜態方法只能訪問靜態成員(非靜態既可以訪問靜態,有可以訪問非靜態)
2,靜態方法中不可以使用this或者super關鍵字
3,主函數是靜態的
主函數特殊之處:
1,格式是固定的
2,被jvm所識別和調用
public:因為權限必須是最大的
static:不需要對象的, 直接用主函數所屬類名調用即可
void:主函數沒有具體的返回值
main:函數名,不是關鍵字,只是一個jvm識別的固定的名字
Sting[] args:這是主函數的參數列表,是一個數組類型的參數,而且元素都是字符串類型
靜態什么時候用?
1靜態變量.
當分析對象中所具備的成員變量的值都是相同的
這時這個成員就可以被靜態修飾
主要數據在對象中都是不同的,就是對象的特有數據,必須存儲在對象中,是非靜態的
如果是相同的數據,對象不需要做修改,只需要使用即可,不需要存儲在對象中,定義成靜態的
2靜態函數.
函數是否用靜態修飾,就參考一點,就是該函數功能是否有訪問到對象的特有數據
簡單點說,從源代碼看,該功能是否需要訪問非靜態的成員變量,如果需要,該功能就是非靜態的
如果不需要,就可以將該功能定義成靜態的? .當然,也可以定義成非靜態,但是非靜態需要被對象調用,
而僅創建對象調用非靜態的 沒有訪問特有數據的方法,該對象的創意是沒有意義
靜態代碼塊:
隨著類的加載而執行,而且只執行一次
作用:
用于給類進行初始化