第19行的變數 level是 靜態方法change方法內部的本地變數,他對main方法裡的level或者是例項變數level沒什麼影響。
public class Pokemon {// 一個名為Pokemon的類
public String name;// 例項變數name
public int level;// 例項變數level
public Pokemon(String name, int level) { //例項方法 接受String型別的name和int型別的level
this.name = name;// 把例項變數name賦值為傳入的name
this.level = level;//把例項變數level賦值為傳入的level
}
public static void main(String[] args) { // Pokemon的 main方法
Pokemon p = new Pokemon("Pikachu", 17); //宣告一個 Pokemon型別的例項p,生成一個新的Pokemon例項 傳入"Pikachu",17兩個引數 賦值給p
int level = 100;// 在main 方法內部宣告一個本地變數level,賦值為100
change(p, level);// 呼叫靜態方法change, 會把例項變數p的level變成傳入的level也就是100的值。
System.out.println("Name: " + p.name + ", Level: " + p.level);// **Name: Pikachu, Level: 100 **
}
//change 方法會把接受的poke例項的例項變數level變成接收的level的值
public static void change(Pokemon poke, int level) {// 靜態方法,接收一個Pokemon型別的例項poke ,一個int整形level
poke.level = level;// 把 接受的例項poke的例項變數 level變成接收的int整形level的值
//下面是第19行
level = 50;//把接收的 level值變成50 ;
poke = new Pokemon("Gengar", 1);//把接收的poke(的指向)變成一個新的Pokemon例項, ("Gengar", 1) 。
}
}