[program-java] Re: Java: Precedence... solution

Hello, all. Hopefully I'm thinking clearly again and not like the last couple of posts! What I am wondering is this: is it a good idea to think of variables as being 'global' when they are instance variables? Wouldn't it be better to think of class variables in this way if we are going to think of things as global? Also, isn't it a good idea to try not to think of things as global when we are doing OO programming as the idea is to decouple or very loosely couple components?


In more concrete terms, if we must think of variables as being global, doesn't the closest thing approximate to a static class variable:

public class MyClass {
public static int myVar;
// we have access to this variable in all objects that instantiate this class, // it is declared and initialized once by the JVM for all objects that instantiate MyClass // its value is consistent across all objects that instantiate the MyClass class
}

and, this new variable I add (myInstanceVar) is merely just an instance variable particular to every instantiation of the class but not global in the way we think of global scope as application scope in other languages:

public class MyClass
{
public static int myVar;
protected int myInstanceVar;
// we have access to this myInstanceVar variable throughout subsequent scopes within each object that is instantiated from the MyClass class // each object instantiation of the MyClass class gets its own memory reserved for this variable // consequently, each object instantiation can have its own value stored in the variable for use within the object at all scopes
}

So, the public static myVar variable is the closest approximation to a global variable we get with Java, if I have understood things correctly.

Please let me know in any case if I have my head around this stuff. I was thrown into programming Java at work and am a student of the language whenever I get the time. I would have preferred to have been a student of the language before writing production code, but the real world too often intervenes!

Thanks in advance!

- Jeff

----- Original Message ----- From: "Sina Bahram" <sbahram@xxxxxxxxx>
To: <program-java@xxxxxxxxxxxxx>
Sent: Friday, September 17, 2010 4:13 PM
Subject: [program-java] Re: Java: Precedence... solution


It's declared in a higher scope.

Take care,
Sina

-----Original Message-----
From: program-java-bounce@xxxxxxxxxxxxx [mailto:program-java-bounce@xxxxxxxxxxxxx] On Behalf Of Homme, James
Sent: Friday, September 17, 2010 2:54 PM
To: program-java@xxxxxxxxxxxxx
Subject: [program-java] Re: Java: Precedence... solution

Hi,
What makes x global?

Thanks.

Jim

Jim Homme,
Usability Services,
Phone: 412-544-1810. Skype: jim.homme
Internal recipients, Read my accessibility blog. Discuss accessibility here. Accessibility Wiki: Breaking news and accessibility
advice


-----Original Message-----
From: program-java-bounce@xxxxxxxxxxxxx [mailto:program-java-bounce@xxxxxxxxxxxxx] On Behalf Of Corbett, James
Sent: Friday, September 17, 2010 2:52 PM
To: 'program-java@xxxxxxxxxxxxx'
Subject: [program-java] Re: Java: Precedence... solution

That's what I was trying to point out that the global x had the focus so to speak. Yes, I was counting on my fingers and since I had
one bit off by a shark a few years back I live in base 9.

Jim

-----Original Message-----
From: program-java-bounce@xxxxxxxxxxxxx [mailto:program-java-bounce@xxxxxxxxxxxxx] On Behalf Of Sina Bahram
Sent: September 17, 2010 14:12
To: program-java@xxxxxxxxxxxxx
Subject: [program-java] Re: Java: Precedence... solution

No, because there's no int specification in the for loop ... That x is the global x.

Also, it gets incremented to 10, not 9.

Take care,
Sina
________________________________

From: program-java-bounce@xxxxxxxxxxxxx [mailto:program-java-bounce@xxxxxxxxxxxxx] On Behalf Of Corbett, James
Sent: Friday, September 17, 2010 2:07 PM
To: 'program-java@xxxxxxxxxxxxx'
Subject: [program-java] Java: Precedence... solution


Hey now:

I've finally resolved the issue I was having with variables being reused multiple times in the same class...

For the sake of brevity:

Public class MyClass {

Private int x = 1;

Public MyClass() {
myMethod();
}

Private void myMethod() {
For (x =0; x<10; x++) {
}
}
}

...obviously x gets finally incremented to 9 and since it's global then it throws off any reuse of the variable.

James M. Corbett

Programmer / Analyst |
Canada Revenue Agency | Agence du revenue du Canada
875 Heron Rd.
Ottawa, On.
K1A0L5

James.Corbett@xxxxxxxxxxxxx
Telephone | Téléphone: (613) 941-1338
Facsimile | Télécopieur: (613) 941-2261

Government of Canada | Gouvernement du Canada





This e-mail and any attachments to it are confidential and are intended solely for use of the individual or entity to whom they are addressed. If you have received this e-mail in error, please notify the sender immediately and then delete it. If you are not the intended recipient, you must not keep, use, disclose, copy or distribute this e-mail without the author's prior permission. The views expressed in this e-mail message do not necessarily represent the views of Highmark Inc., its subsidiaries, or affiliates.





Other related posts: