public class Test
{
public void changValue(String str)
{
str="xyz";
}
public static void main(String[] args)
{
String str="abc";
Test test= new Test();
test.changValue(str);
System.out.println(str);
}
}
打印“abc”
public class Test
{
private static Test test = new Test();
public static int count1;
public static int count2 = 0;
private Test()
{
count1++;
count2++;
}
public static Test getInstance()
{
return test;
}
public static void main(String[] args)
{
System.out.println(Test.count1);
System.out.println(Test.count2);
}
}
打印1、0
這是因爲靜態變量的初始化順序是按照代碼順序來進行的。一開始count1、count2在經過構造方法處理後的值都是1,接着count1沒有進行再次賦值,往下執行到count2再次賦值成0.
<span style="font-size:10px;">public class Test
{
public static void main(String[] args)
{
new Child();
}
}
class Parent
{
static String name1 = "hello";
static
{
System.out.println("Parent static block");
}
public Parent()
{
System.out.println("Parent construct block");
}
}
class Child extends Parent
{
static String name2 = "hello";
static
{
System.out.println("Child static block");
}
public Child()
{
System.out.println("Child construct block");
}
}</span>
打印:
Parent static block
Child static block
Parent construct block
Child construct block
說明先初始化父類的靜態屬性在執行自己的靜態屬性,再是父類的構造方法再是自己的構造方法。