Is the scope of a local variable always the entire body of a method?
No — the scope starts where the variable was declared and continues to the end of its block. Sometimes a local variable is declared in the middle of a block, close to the statement which first uses it.
It is a mistake to use the same identifier twice in the same scope. For example, the following is a mistake:
class CheckingAccount { . . . . private int balance; void processCheck( int amount ) { int amount; incrementUse(); if ( balance < 100000 ) charge = 15; else charge = 0; balance = balance - amount - amount ; } }
The scope of the formal parameter amount
overlaps the
scope of the local variable (also named amount
),
so this is a mistake.
This is a different situation than a previous example where two
methods used the same name for their
formal parameters.
In that situation the scopes did not overlap and there was no confusion.
Can the same identifier be used as a name for a local variable in two different methods?