Is this OK? Sure. The caller has sent the value 7000 to the method.
What does amount = 0 do in the method?    
This changes the local copy of the value from 7000 to 0.
But this does not affect the caller. Look back at the caller: the value 7000 is not contained in a variable. There is nothing that the called method could change.
A local variable is a variable that is declared inside of the body of a method. It can be seen only by the statements that follow its declaration inside of that method.
The scope of a local variable
starts where it is declared and ends at the
end of the block that it is in.
(Recall that a block is a group of statements inside of
braces, {}.)
For example, charge  of  processCheck
is a local variable:
class CheckingAccount
{
  . . . .
  private int    balance;
  void processCheck( int  amount  )
  {              
    int charge;    // scope of charge starts here     
    incrementUse();
    if ( balance < 100000 )
      charge = 15; 
    else
      charge = 0;
    balance =  balance -  amount  - charge  ; // scope of charge ends here
  }
}
The local variable charge is used
to hold a temporary value while something is being
calculated.
Local variables are not used to hold the permanent values of
an object's state.
They have a value only during the brief amount of time that a
method is active.
Is the scope of a local variable always the entire body of a method?