Exercise 3-8 (one instance of a static field)
Chapter_3 Exercise_3-7 | Exercise_3-9 |
Exercise 3-8 TIJ, p. 61
Exercise 3-8: (3) Write a program that demonstrates that, no matter how many objects you create of a particular class, there is only one instance of a particular static field in that class.
StaticField.java
public class StaticField
{
static int i; // uninitialized
public static void main(String[] args)
{
// access static field from a static context, main():
System.out.println("i = " + i);
System.out.println("StaticField.i = " + StaticField.i);
StaticField sf1 = new StaticField();
StaticField sf2 = new StaticField();
System.out.println("sf1.i = " + sf1.i);
System.out.println("sf2.i = " + sf2.i);
System.out.println("new StaticField().i = " + new StaticField().i);
i = 1;
System.out.println("i = " + i);
System.out.println("StaticField.i = " + StaticField.i);
System.out.println("sf1.i = " + sf1.i);
System.out.println("sf2.i = " + sf2.i);
System.out.println("new StaticField().i = " + new StaticField().i);
StaticField.i = 2;
System.out.println("i = " + i);
System.out.println("StaticField.i = " + StaticField.i);
System.out.println("sf1.i = " + sf1.i);
System.out.println("sf2.i = " + sf2.i);
System.out.println("new StaticField().i = " + new StaticField().i);
sf1.i = 3;
System.out.println("i = " + i);
System.out.println("StaticField.i = " + StaticField.i);
System.out.println("sf1.i = " + sf1.i);
System.out.println("sf2.i = " + sf2.i);
System.out.println("new StaticField().i = " + new StaticField().i);
sf2.i = 4;
System.out.println("i = " + i);
System.out.println("StaticField.i = " + StaticField.i);
System.out.println("sf1.i = " + sf1.i);
System.out.println("sf2.i = " + sf2.i);
System.out.println("new StaticField().i = " + new StaticField().i);
new StaticField().i = 5;
System.out.println("i = " + i);
System.out.println("StaticField.i = " + StaticField.i);
System.out.println("sf1.i = " + sf1.i);
System.out.println("sf2.i = " + sf2.i);
System.out.println("new StaticField().i = " + new StaticField().i);
}
}
/*
javac StaticField.java
java StaticField
i = 0
StaticField.i = 0
sf1.i = 0
sf2.i = 0
new StaticField().i = 0
i = 1
StaticField.i = 1
sf1.i = 1
sf2.i = 1
new StaticField().i = 1
i = 2
StaticField.i = 2
sf1.i = 2
sf2.i = 2
new StaticField().i = 2
i = 3
StaticField.i = 3
sf1.i = 3
sf2.i = 3
new StaticField().i = 3
i = 4
StaticField.i = 4
sf1.i = 4
sf2.i = 4
new StaticField().i = 4
i = 5
StaticField.i = 5
sf1.i = 5
sf2.i = 5
new StaticField().i = 5
*/
Note: The anonymous objects (not st1 and st2) created with new StaticField() are all distinct.
Chapter_3 Exercise_3-7 | BACK_TO_TOP | Exercise_3-9 |
Comments
Post a Comment