JAVASE學習筆記三——this,static

java中修飾方法:abstract和final只能用一個去修飾方法,因爲abstract表示抽象,是需要被繼承實現的,說明是需要修改裏面內容的,而final表示不能改變的,所以他不能和abstract一塊修飾方法,否則就矛盾了。

static修飾的靜態成員不能修飾非靜態成員。

java中的引用實際上就是C中的指針,只是java不允許直接訪問堆內存裏面的對象,只能通過對象的引用來訪問。如果堆內存中的對象沒有任何引用指向它,那麼程序也就無法訪問到這個對象,那麼這個對象就會變成垃圾,java的垃圾回收機制便會把它回收。

this引用:代表一個默認對象的引用。關於this的使用,用代碼來說明:

package com;

public class Dog {
	
	public void Jump()
	{
		System.out.println("跑步");
	}
	public void run()
	{
		Dog dog = new Dog();
		dog.Jump();
                System.out.println("正在執行的run方法");
	}
	public static void main(String[] args)
	{
		Dog d = new Dog();
		d.run();
	}
}
其實在上面的代碼中,不一定要定義一個Dog對象才能調用run方法,因爲當程序調用年run方法時,一定會定義一個對象,直接使用這個對象就可以了。在run方法中得到調用該方法的對象,可以使用this關鍵字,只有當該方法被調用的時候,它所代表的對象才被確定下來,誰調用該方法,this就代表誰。而且上面的代碼中總共定義了兩個對象,一個對象的run方法要依靠另一個對象的jump方法,很不符合邏輯。

package com;

public class Text8 {
	
	public void Jump()
	{
		System.out.println("跑步");
	}
	public void run()
	{
//		Text8 ts = new Text8();
//		ts.Jump();
		this.Jump();
		System.out.println("正在執行的jump方法");
	}
	public static void main(String[] args)
	{
		Text8 t = new Text8();
		t.run();
	}
}
java中允許一個對象成員直接調用另一個對象成員,也就是說this關鍵字可以省略。

	public void run()
	{
		Jump();
		System.out.println("正在執行的jump方法");
	}
而對於static修飾的方法,裏面不能包含有this引用,所以static修飾的方法不能訪問非static修飾的成員或者,也就是靜態成員不能直接訪問非靜態成員。非靜態方法屬於對象,只有創造出對象來才能調用它。

普通方法訪問其他方、屬性時,無需調用this引用。但是當方法中有局部變量和屬性同名時,便要調用this引用。

static修飾的方法屬於類,非靜態方法屬於對象。用static修飾的方法既可以用類來調用,也可以用對象來調用,其調用結果是一樣的。

java中只有值傳遞,無論是傳入引用還是值,都看作值傳遞,形參是引用的話代表的是地址



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章