Java – obfuscate initialization of instance variables
•
Java
I was taking the scjp test and did some simulation tests. I met this one:
It asks what is the output of:
class TestClass
{
int i = getInt();
int k = 20;
public int getInt() { return k+1; }
public static void main(String[] args)
{
TestClass t = new TestClass();
System.out.println(t.i+" "+t.k);
}
}
I think this will be 21.20 because T.I will call getInt and then increase K to 21.20
But the answer is 1.20 I don't understand why it's 1. Can anyone see that?
Solution
Variables are initialized from top to bottom
What's going on?
>Initially, both K and I have a (default) value of 0. > The value calculated by getint() (then 0 1) is assigned to I > 20 and to k > 1 20 for printing
Good reading:
> The Java ™ Tutorials: Initializing Fields
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
