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