[program-java] Re: Java: Precedence

  • From: "Jeffrey Fidler" <jeffrey.fidler@xxxxxxxxxxx>
  • To: <program-java@xxxxxxxxxxxxx>
  • Date: Tue, 07 Sep 2010 17:19:09 -0400

I stand corrected! I even went as far as creating a second method that declared another local variable with the same identifier and type as in my first method and this compiled and ran without a hitch. What the compiler will definitely not let us do is to redeclare a local variable within the same method scope.


I'm not sure why anybody would want to use the same identifier in several different local scopes? And, Sina, thank you for pointing out the extremely obvious case of instance identifiers and local idenfifiers in the case of our accessor methods!




----- Original Message ----- From: "Sina Bahram" <sbahram@xxxxxxxxx>
To: <program-java@xxxxxxxxxxxxx>
Sent: Tuesday, September 07, 2010 4:54 PM
Subject: [program-java] Re: Java: Precedence


I hate to disagree, but it absolutely will. I just compiled and tested a solution to verrify what I thought I already knew.

You can shadow variables all you like.

For a conceptual aid, think of how setters work. Often time, the argument name is the same as the inner name, leading to code like
this.


public void setAge(int age) {
this.age = age;
}

Take care,
Sina



-----Original Message-----
From: program-java-bounce@xxxxxxxxxxxxx [mailto:program-java-bounce@xxxxxxxxxxxxx] On Behalf Of Jeffrey Fidler
Sent: Tuesday, September 07, 2010 4:30 PM
To: program-java@xxxxxxxxxxxxx
Subject: [program-java] Re: Java: Precedence

Hello, Jim and all. The Java compiler will not allow you to redeclare a local variable having the same identifier value as the instance variable identifier as you have supplied in your example. Although C++ will allow this sort of scope hiding, Java will
not.

Thanks & kind regards,
Jef

----- Original Message -----
From: "Sina Bahram" <sbahram@xxxxxxxxx>
To: <program-java@xxxxxxxxxxxxx>
Sent: Tuesday, September 07, 2010 4:15 PM
Subject: [program-java] Re: Java: Precedence


Jim,

My appologies, no slap down intended. Sorry, was probably far too Socratic
in my response.

Care to post the whole code?

Take care,
Sina

-----Original Message-----
From: program-java-bounce@xxxxxxxxxxxxx
[mailto:program-java-bounce@xxxxxxxxxxxxx] On Behalf Of Corbett, James
Sent: Tuesday, September 07, 2010 3:53 PM
To: 'program-java@xxxxxxxxxxxxx'
Subject: [program-java] Re: Java: Precedence

Hi:

Obviously zero. ...Ok, the reason I ask was because in this piece of code
that I've inherited x for lack of a better name is used in
at least 30 places in the class and the class level x is declared as
transient. I'm trying to figure this mess out and thought I
would ask the initial question with out the slap down.

Jim

-----Original Message-----
From: program-java-bounce@xxxxxxxxxxxxx
[mailto:program-java-bounce@xxxxxxxxxxxxx] On Behalf Of Sina Bahram
Sent: September 7, 2010 15:19
To: program-java@xxxxxxxxxxxxx
Subject: [program-java] Re: Java: Precedence

Jim,

You should be able to answer this question yourself based on first
principles.

Let's examine what you have.

You have a method, and in there you declare a variable named x. absolutely
nothing else matters, even a million other definitions of
x in a million other scopes, because the next line returns x, and the x in
the immediate scope is the variable you just defined;
thus, 11 is returned.

Also, don't do x=0 when defining your variable. if you want to assign a
value to x, then do it in your constructor. Furthermore, x
is an int, which means it defaults to 0.

What if we change that line to "return this.x;"? Can you tell me what value
is returned?

Take care,
Sina

________________________________

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


Hello all:

I know y'all say don't do that but let's just pretend.

If a member is declared private to the class such as

Public Class MYClass {

Private int x = 0;

Public MYClass() {

}

Public int getX () {
       int x = 11;
       return x;
}

}

What would you expect to have returned as a value of .getX()?

Jim


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












Other related posts: