『壹』 java static關鍵字的問題
1、首先提個別編碼規范問題,類名首字母要大寫,所以student要寫成Student
2、main()要寫成main(String args[])
3、static修飾的是類級別的屬性,不是對象級別的,所以在構造方法中使用sum++是可以實現自增加的,不過你在Homework09的main方法中new Student沒有調用對應的構造方法(你這里是默認的無參構造函數),而是使用了帶參數的構造方法,而帶參數的構造方法中沒有sum++. 所以做法為:將sum++放到 public Student(String name)這個構造函數中
修改你的代碼如下:
文件名Student.java
class Student
{
private String name;
private static int sum = 0;
public Student()
{
sum++;
System.out.println(sum);
}
public Student(String name)
{
sum++;
System.out.println(sum);
this.name = name;
System.out.println(name + "是第" + sum + "個學生");
}
}
文件名:Homework09.java
public class Homework09
{
public static void main(String args[])
{
Student s1 = new Student("zhansan");
Student s2 = new Student("lisi");
Student s3 = new Student("wangsu");
}
}
『貳』 import static java.lang.System.out; 為什麼要加上static關鍵字
import static 是靜態導入,抄是jdk1.5的新特徵,可以不同過襲調用包名,直接使用包里的靜態方法。
舉個例子來說:
用import的情況:
public static void main(String args[]){
System.out.println("輸出內容");
}
用import static 的情況:
import static java.lang.System.out;
public static void main(String args[]){
out.println("輸出內容");
}
兩者的輸出情況是一樣的。
『叄』 java中利用反射為變數賦值的時候,為什麼變數需要聲明為static的
因為靜態只能接收靜態,反射獲得的值是靜態的。
例如:
public class Test{
public static void main(String[] args) {
aaa();
int n = num;
}
int num =100;
public void aaa(){}
}
aaa()和num會被強制轉為static類型;回
可以這樣:
public static void main(String[] args) {
Test test = newTest();//實例化答
test .aaa();
int n = test .num;
}