package szsm;
/**
* 在靜態方法裏面創建一個局部變量,必須對其進行初始化賦值
*
* @author 2萌
*
*/
public class StringTest {
static String aString;
// String aString;
int a;
/**
* 普通方法:對於成員變量沒有賦初值的變量,在普通方法裏面打印的時候直接打印其系統默認賦給該類型的值。
* eg:String、Integer類型的成員變量初始值爲null,int類型初始值爲0
*/
public void A() {
System.out.println(aString);
System.out.println(a);
}
public static void main(String[] args) {
/**
* 在靜態方法裏面創建一個局部變量,必須對其進行初始化賦值
* eg:String aString;System.out.println(aString);這樣打印輸出時候就會報錯:The local variable aString may not have been initialized
* int aString;System.out.println(aString);這樣打印輸出時候就會報錯:The local variable aString may not have been initialized
* 靜態方法調用靜態的成員變量,靜態方法必須調用static修飾的成員變量。如果該靜態的成員變量未賦初值,則打印時候直接顯示系統默認類型的賦值
*/
// String aString;
// Integer aString;
// System.out.println(aString);
String b = "bbb";
System.out.println("b = " + b);
StringTest s = new StringTest();
s.A();
}
}
靜態方法裏面爲賦初值的成員變量,是在編譯時候就不通過還是在運行期間拋出異常呢???
打印輸出:
b = bbb
null
0
package szsm;
public class Test {
static String string;
public static void main(String[] args) {
System.out.println(string);
}
}
打印:
null
package szsm;
public class Test {
String string;
public static void main(String[] args) {
//報錯提示:Cannot make a static reference to the non-static field aString
System.out.println(string);
}
}
string變量直接飄紅 Cannot make a static reference to the non-static field aString
應該修改爲 static String string;
如果String變量未初始化在main()方法裏面:
public class Test {
public static void main(String[] args) {
/**
* 在靜態方法裏面創建一個局部變量,必須對其進行初始化賦值
* eg:String aString;System.out.println(aString);這樣打印輸出時候就會報錯:The local variable aString may not have been initialized
* int aString;System.out.println(aString);這樣打印輸出時候就會報錯:The local variable aString may not have been initialized
* 靜態方法調用靜態的成員變量,靜態方法必須調用static修飾的成員變量。如果該靜態的成員變量未賦初值,則打印時候直接顯示系統默認類型的賦值
*/
String aString;
System.out.println(<u><span style="color:#ff0000;">aString</span></u>);
}
}
錯誤提示:The local variable aString may not have been initialized