java静态方法和实例方法的区别

静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别 

调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名;通常使用类名。

static方法只能处理static域或静态方法。实例方法可以访问实例域, 静态域或静态方法, 记住都行。
本章源码



class StaticTest {
    static int a = 4;
    static int b = 9;
    static void call() {
        /*下一句是错误的,因为静态的不能调用实例的方法。*/
        //callins();
        System.out.println("a = " + a+"马克-to-win"+Test.c);//静态方法可以访问静态属性
    }
    void callins() {
        call();
        System.out.println("a = " + a+"实例马克-to-win"+Test.c);//静态方法可以访问静态属性
    }
}
public class Test {
    static int c = 43;
    public static void main(String args[]) {
/*刚运行到这一步时,debug观察,StaticTest.a的值就等于4,Test.c的值就等于43,
 说明系统在我们的程序一开始时,就会给所有的类变量赋值。如果是对象参考, 就是null,
 见photoshop的例子*/   
        StaticTest se =new StaticTest();
        System.out.println("开始观察StaticTest.a和Test.c");
        se.b=5;
        StaticTest.call();//静态方法用类名直接调用
        se.call();
        se.callins();
        System.out.println("b = " + StaticTest.b);//静态属性用类名直接调用
    }
}

result is:
开始观察StaticTest.a和Test.c
a = 4马克-to-win43
a = 4马克-to-win43
a = 4马克-to-win43
a = 4实例马克-to-win43
b = 5

马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。


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




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

    Car() {
          count++;//实例方法可以访问静态变量
    }
    static int getCount(){
        return count;
    }
    int inscal()
    {
        return getCount();//实例方法可以调用静态方法。
    }
}

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());//实例可以调用静态方法。马克-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