关于使用初始化块初始化变量的几种情况的运行结果分析
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
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
相关文章推荐
- 实验九指针1、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- 尽量避免使用全局变量,以防与其它函数重名影响运行结果
- javascript中使用未定义变量或值的情况分析
- 关于变量初始化的分析
- 实验 8 数组2 1、程序调试,按照“分析结果、设置断点、使用单步执行并观察变量、分析变量结果、修改程序”五个阶段调试和改正程序;
- 在使用 ADO.NET Entity Framework 时生成的实体类个数少于数据表个数的几种情况及原因分析
- Oracle中不使用索引的几种情况分析 ---转
- 实验9 指针1 、程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依
- 优化 AIX 7 内存性能: 监视内存的使用情况(ps、sar、svmon 和 vmstat)并分析其结果
- 用MAT分析JAVA程序运行时的内存使用情况
- C++:只用初始化列表初始化变量的几种情况
- C++:只用初始化列表初始化变量的几种情况
- 【转】构造函数中,成员变量一定要通过初始化列表来初始化的几种情况
- 数组元素在使用前一定要初始化否则运行结果将是不确定的
- 使用LogParser分析网站运行情况(比较简单)
- 一道阿里巴巴笔试题中,关于java中的变量,初始化快,构造函数初始化分析
- 关于Android最佳性能实践——分析内存的使用情况学习笔记
- AIX 7监视内存的使用情况(ps、sar、svmon 和 vmstat)并分析其结果
- 实验9(1)程序填空:下列程序在数组中同时查找最大元素和最小元素的下标,分别存放在 main()函数的max 和 min 变量中。要求:根据运行结果分析程序和填空,并注释说明填充依据。
- html/css基础篇——DOM中关于脱离文档流的几种情况分析