标题: java代码,看的糊里糊涂 [打印本页] 作者: Saner 时间: 2014-3-29 11:11 标题: java代码,看的糊里糊涂 public class Test1
{
public static int k = 0;
public static Test1 t1 = new Test1("t1");
public static Test1 t2 = new Test1("t2");
public static int i = print("i");
public static int n = 99;
public int j = print("j");
{
print("构造块");
}
static
{
print("静态块");
}
public Test1(String str)
{
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++i;
++n;
}
private static int print(String str)
{
System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
++n;
return ++i;
}
public static void main(String[] args)
{
Test1 t = new Test1("init");
}
}
请大神对这段程序详解
public class Test1
{
public static int k = 0; //在类中定义了一个静态的整形变量k
/*创建了两个个静态的本类对象t1,t2,
并且这两个对象通过构造函数Test1(String str)进行了初始化
在建立两个对象之前类中所有的静态成员都已经存在,只是下面的静态成员还没有运行
此时相应的值 i=0,n=0*/
public static Test1 t1 = new Test1("t1");
public static Test1 t2 = new Test1("t2");
public static int i = print("i");
public static int n = 99;
public int j = print("j"); //每个对象中都有一个自己的变量j,每个对象都需要运行赋值一次
public static void main(String[] args) //主函数,程序都是从主函数开始运行
{
Test1 t = new Test1("init");
}
}作者: 清风木扬 时间: 2014-3-29 15:00
class Test1
{
// 类加载器,先运行静态变量和静态代码块,并且只执行一次
// 除main方法所在的类和第一次生成对象,会执行静态变量和静态代码.
// 第二次生象时,只会初始非静态变量 和 非静态代码块。再执行构造方法体。
public static int k = 0;
//静态变量
//1:j i=0 n=0
//2:构造块 i=1 n=1
//3:t1 i=2 n=2
public static Test1 t1 = new Test1("t1");
//静态变量
//4:j i=3 n=3
//5:构造块 i=4 n=4
//6:t2 i=5 n=5
public static Test1 t2 = new Test1("t2");
//7:i i=6 n=6
public static int i = print("i");
public static int n = 99;
public int j = print("j");
{
print("构造块");
}