• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Devaka Cooray
  • Campbell Ritchie
  • Tim Cooke
  • Ron McLeod
  • Paul Clapham
Sheriffs:
  • Liutauras Vilda
  • Jeanne Boyarsky
  • paul wheaton
Saloon Keepers:
  • Tim Holloway
Bartenders:

Variable initializing

 
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Please refer the following class



I added some Strings for identification. When it creats the object....
Please some one explain me what happens then?
Why it doesn't fail in giveMeJ() method?
 
Ranch Hand
Posts: 924
1
Netbeans IDE Fedora Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Cham Wick wrote:Please refer the following class



I added some Strings for identification. When it creats the object....
Please some one explain me what happens then?
Why it doesn't fail in giveMeJ() method?




when i is initialized , it will be assigned default value of j which is 0. the program you wrote is a way to override compiler protection of forward referencing a variable. refer to JLS section http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.3.2.3. it says that


The declaration of a member needs to appear textually before it is used only if
the member is an instance (respectively static) field of a class or interface C and
all of the following conditions hold:
• The usage occurs in an instance (respectively static) variable initializer of C
or in an instance (respectively static) initializer of C.
• The usage is not on the left hand side of an assignment.
• The usage is via a simple name.
• C is the innermost class or interface enclosing the usage.
A compile-time error occurs if any of the four requirements above are not
met.
This means that a compile-time error results from the test program:
class Test {
int i = j;// compile-time error: incorrect forward reference
int j = 1;
}

 
Cham Wick
Greenhorn
Posts: 8
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks guru..
 
I guess everyone has an angle. Fine, what do you want? Just know that you cannot have this tiny ad:
The new gardening playing cards kickstarter is now live!
https://www.kickstarter.com/projects/paulwheaton/garden-cards
reply
    Bookmark Topic Watch Topic
  • New Topic