GeeCON Prague 2014*
The moose likes Beginning Java and the fly likes static methods in detail Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » Beginning Java
Bookmark "static methods in detail" Watch "static methods in detail" New topic
Author

static methods in detail

budsy remo
Ranch Hand

Joined: Sep 20, 2008
Posts: 103
I have 3 questions related to the following program:-

My question starts from the eight'th line ....
1.if we cannot access non static variables why does the static method main lets me make a variable x?
2.i get it that i cannot make an instance variable of S1 but then why can i make an instance variable of Y?

I am sorry if the questions are too stupid but i think it's best to have answers for the language you love.
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11351
    
  16

Your code won't compile at all, so it's hard to answer your questions... There is an extra '}' at the end, and you don't initialize 'x'.

If you correct those two errors, it compiles and runs just fine.

and for question 1, the answer is because it is not a non-static variable.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19697
    
  20

Please keep your indentation when pasting code next time. I've added some and it immediately shows that class S1 is a non-static nested class inside class Xyz. I think Fred missed that (because of the lack of indentation), because there is no extra }.

budsy remo wrote:1.if we cannot access non static variables why does the static method main lets me make a variable x?

You can't access non static fields. Local variables declared inside the method itself are always accessible inside the method.

2.i get it that i cannot make an instance variable of S1 but then why can i make an instance variable of Y?

Class Y is a top-level class. Class S1 is, as I said before, a non-static nested class inside class Xyz (a.k.a. an inner class). Because it's nested the same rules for fields apply - you need an instance to create instances of this class:


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11351
    
  16

yup...totally missed it was an inner-class.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14193
    
  20

For detailed background information, see: Understanding Instance and Class Members.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
budsy remo
Ranch Hand

Joined: Sep 20, 2008
Posts: 103
thanks a million Rob Spoor ,didn't know that we can actually make instances of an inner class through that syntax . Thanks to others too for answering .Will give some more study .
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: static methods in detail