java靜態(tài)方法和實(shí)例方法的區(qū)別

靜態(tài)方法(方法前冠以static)和實(shí)例方法(前面未冠以static)的區(qū)別 

調(diào)用靜態(tài)方法或說(shuō)類方法時(shí),可以使用類名做前綴,也可以使用某一個(gè)具體的對(duì)象名;通常使用類名。

static方法只能處理static域或靜態(tài)方法。實(shí)例方法可以訪問(wèn)實(shí)例域, 靜態(tài)域或靜態(tài)方法, 記住都行。
本章源碼



class StaticTest {
    static int a = 4;
    static int b = 9;
    static void call() {
        /*下一句是錯(cuò)誤的,因?yàn)殪o態(tài)的不能調(diào)用實(shí)例的方法。*/
        //callins();
        System.out.println("a = " + a+"馬克-to-win"+Test.c);//靜態(tài)方法可以訪問(wèn)靜態(tài)屬性
    }
    void callins() {
        call();
        System.out.println("a = " + a+"實(shí)例馬克-to-win"+Test.c);//靜態(tài)方法可以訪問(wèn)靜態(tài)屬性
    }
}
public class Test {
    static int c = 43;
    public static void main(String args[]) {
/*剛運(yùn)行到這一步時(shí),debug觀察,StaticTest.a的值就等于4,Test.c的值就等于43,
 說(shuō)明系統(tǒng)在我們的程序一開(kāi)始時(shí),就會(huì)給所有的類變量賦值。如果是對(duì)象參考, 就是null,
 見(jiàn)photoshop的例子*/   
        StaticTest se =new StaticTest();
        System.out.println("開(kāi)始觀察StaticTest.a和Test.c");
        se.b=5;
        StaticTest.call();//靜態(tài)方法用類名直接調(diào)用
        se.call();
        se.callins();
        System.out.println("b = " + StaticTest.b);//靜態(tài)屬性用類名直接調(diào)用
    }
}

result is:
開(kāi)始觀察StaticTest.a和Test.c
a = 4馬克-to-win43
a = 4馬克-to-win43
a = 4馬克-to-win43
a = 4實(shí)例馬克-to-win43
b = 5

馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。


assignment: make a method which can print "hello world!".




本章源碼 
package com;
class Car{
    static int count = 0;

    Car() {
          count++;//實(shí)例方法可以訪問(wèn)靜態(tài)變量
    }
    static int getCount(){
        return count;
    }
    int inscal()
    {
        return getCount();//實(shí)例方法可以調(diào)用靜態(tài)方法。
    }
}

public class Test{
     public static void main(String[] args){
        System.out.println(Car.getCount());//it's ok
        Car c = new Car();
        System.out.println(c.getCount());//實(shí)例可以調(diào)用靜態(tài)方法。馬克-to-win
        System.out.println(Car.getCount());

        Car c1 = new Car();
        System.out.println(Car.getCount());
        System.out.println(c1.inscal());
}
}

 

result is:
0
1
1
2
2