您的位置:首页 > 其它

关于使用初始化块初始化变量的几种情况的运行结果分析

2006-10-13 10:43 711 查看
1、用非静态初始化块初始化非静态变量

class TryInitialization
{
int[] values = new int[10]; //Static array member
//Initialization block
//static
{
System.out.println("Running initialization block.");
for (int i = 0; i < values.length; i++)
values[i] = (int)(100.0 * Math.random());
}
//List values in the array for an object
void listValues()
{
System.out.println(); //Start a new line
for (int i = 0; i < values.length; i++)
System.out.print(" " + values[i]); //Display values
System.out.println(); //Start a new line
}
public static void main(String[] args)
{
TryInitialization example1 = new TryInitialization();
System.out.println("/nFirst object:");
example1.listValues();
TryInitialization example2 = new TryInitialization();
System.out.println("/nSecond object:");
example2.listValues();
example1.listValues();
}
}

运行结果为:

Running initialization block.

First object:

24 59 34 10 6 46 92 50 54 0
Running initialization block.

Second object:

82 14 39 11 57 69 1 96 0 15

24 59 34 10 6 46 92 50 54 0

2、用静态初始化块初始化静态变量

即把

int[] values = new int[10]; //Static array member
//Initialization block
{
System.out.println("Running initialization block.");
for (int i = 0; i < values.length; i++)
values[i] = (int)(100.0 * Math.random());
}
改成

static int[] values = new int[10]; //Static array member
//Initialization block
static
{
System.out.println("Running initialization block.");
for (int i = 0; i < values.length; i++)
values[i] = (int)(100.0 * Math.random());
}

运行结果为:

Running initialization block.

First object:

41 29 51 25 84 1 70 18 47 23

Second object:

41 29 51 25 84 1 70 18 47 23

41 29 51 25 84 1 70 18 47 23

3、用非静态初始化块初始化静态变量

即改成

static int[] values = new int[10]; //Static array member
//Initialization block
{
System.out.println("Running initialization block.");
for (int i = 0; i < values.length; i++)
values[i] = (int)(100.0 * Math.random());
}

运行结果为

First object:

94 51 83 56 80 42 84 38 85 48
Running initialization block.

Second object:

51 30 58 13 11 76 98 23 42 34

51 30 58 13 11 76 98 23 42 34

4、用静态初始化块初始化非静态变量

即改成

int[] values = new int[10]; //Static array member
//Initialization block
static
{
System.out.println("Running initialization block.");
for (int i = 0; i < values.length; i++)
values[i] = (int)(100.0 * Math.random());
}

编译错误

TryInitialization.java:9: non-static variable values cannot be referenced from a
static context
for (int i = 0; i < values.length; i++)
^
TryInitialization.java:10: non-static variable values cannot be referenced from
a static context
values[i] = (int)(100.0 * Math.random());
^
2 errors
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐