① java中static變數能不能再賦值,也就是說能不能再改變它的值
static變數在編譯時已經分配內存,
定義static變數是稱為靜態變數
也是局部變數
誰說全局就不能改變值了
除非是
static
final聲明,就成常量了,就不能改了
② 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;
}
③ java static {}的用法
static 關鍵字很有意思哦
public static String getProperty(String key) { 這里不用說了,靜態方法
就說說static{}
稱為static代碼塊 ,也叫靜態代碼塊,
是在類中獨立於類成員的static語句塊,可以有多個,位置可以隨便放,它不在任何的方法體內,JVM載入類時會執行這些靜態的代碼塊,如果static代碼塊有多個,JVM將按照它們在類中出現的先後順序依次執行它們,每個代碼塊只會被執行一次
利用靜態代碼塊可以對一些static變數進行賦值
例子
public class Test5 {
private static int a;
private int b;
static{
Test5.a=3;
System.out.println(a);
Test5 t=new Test5();
t.f();
t.b=1000;
System.out.println(t.b);
}
static{
Test5.a=4;
System.out.println(a);
}
public static void main(String[] args) {
// TODO 自動生成方法存根
}
static{
Test5.a=5;
System.out.println(a);
}
public void f(){
System.out.println("hhahhahah");
}
}
運行結果:
3
hhahhahah
1000
4
5
④ java常量靜態賦值與動態賦值的區別
這里需要的是編繹時常量,其值在編繹時就能確定。IF1.BB 時寫死的,編譯時就能確定其值。IF1.AA 要在運行時才能確定其值。
⑤ java中使用static聲明的變數是否必須賦初值
你自己上機實驗下不就知道了。不必賦初值的(可以通過編譯,也可以運行,調用的時候,系統會默認給他值)
但是按照規范寫法,還是要附個初值給他,無論給任何變數賦值,都最好要給他附一個初值。
⑥ java static 變數能 賦值嗎
可以。
標記為final的才不可以賦值。
⑦ JAVA中靜態變數如何動態賦值
寫一個方法,然後用方法的參數t2給t1賦值,另一個類val用的時候,先用demo的一個對象,調用方法,修改t1
⑧ java 構造器中可不可以給靜態變數賦值為啥
當然可以,靜態變數只是在你類載入的時候初始化了,可以直接引用並修改;
⑨ Java Static變數是不是只在類載入的時候賦值一次,以後創建類的對象的時候 不會再重新賦值
static變數值在類載入的時候分配空間,以後創建類對象的時候不會重新分配。
賦值的話,是可以任意賦值的
⑩ java 中什麼不能把static 修飾的變數賦值給沒有static修飾的變數啊
如果方法被標記為static,那麼只能是用表示static的方法和變數。原因是,被標記為static的方法和變數,是在類載入的時候加入到內存,可以直接使用,值永遠只有一份。而非static的方法和變數,要等到類被實例化以後才能使用。你可以這么理解,就是類存在,static的變數和方法就存在,而非static的變數和方法,只有實例存在才存在。望採納!謝謝。