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中只有值傳遞,無論是傳入引用還是值,都看作值傳遞,形參是引用的話代表的是地址