permaculture playing cards*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes a simple quetion,help Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCA/OCP Java SE 7 Programmer I & II Study Guide this week in the OCPJP forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "a simple quetion,help" Watch "a simple quetion,help" New topic
Author

a simple quetion,help

andy lau
Ranch Hand

Joined: Apr 08, 2002
Posts: 51
when will a block without static(like this:
{//code})be execute???
Corey McGlone
Ranch Hand

Joined: Dec 20, 2001
Posts: 3271
Code within {} is known as an instance initializer and will be executed when an instance of that class is initialized. You can look in the JLS, §8.6 Instance Initializers for details.
Corey


SCJP Tipline, etc.
Ase Lindskog
Greenhorn

Joined: Apr 08, 2002
Posts: 7
It will execute each time you construct by new Xxx() and execute before the constructor.
andy lau
Ranch Hand

Joined: Apr 08, 2002
Posts: 51
can you explain this ? thank you very much!

/*
456
AAA
123
CCC
BBB
*/
/*

/*456
123
AAA
CCC
BBB
*/
/*

/*123
456
AAA
CCC
BBB
*/

/*456
AAA
123
CCC
BBB*/

[ April 17, 2002: Message edited by: Cindy Glass ]
Brian Lugo
Ranch Hand

Joined: Nov 10, 2000
Posts: 165
I will attempt to explain the first one ...
The rest you can figure out ...

I changed the class names.
The output is:
456
AAA
123
CCC
BBB
Here is what happens:
1. DerInvTst1 constructor with no args is called.
2. This constructor calls DerInvTst1 constructor that takes an int. arg.
3. Since there is no "this()" call on the first line, the super class's default constructor is called and super class is initialized.
4. This results in printing 456.
5. Next AAA is printed from BasInvTst1 constructor.
6. Now the derived class initialization occurs
and "123" is printed.
7. The control is then transfered to the constructor, which prints "CCC"
8. In the end the control is transfered back to DerInvTst1's no-arg constructor and "BBB" is printed.
Hope this helps,
Brian
andy lau
Ranch Hand

Joined: Apr 08, 2002
Posts: 51
it seems that the initialiaze block is not executed before the constructor??? (because the 123 is not the first line of output)
can you tell me the exactly time when the initialize block will be executed???
[ April 17, 2002: Message edited by: andy lau ]
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: a simple quetion,help