2016-02-21 3 views
1

В моем классе у меня есть имя переменной, формальное имя параметра, а также имя локальной переменной то же самое.
В методе body я хочу назначить параметр переменной экземпляра.
Как я могу дифференцировать переменные?Различают имена переменных

import java.util.Scanner; 
class Setts 
{ 

static int a=50; 
void m1(int a) 
    { 
        int a=100; 
    this.a=a;//here am set the int a value give the solution; 
    } 
    void disp() 
    { 
     System.out.println(Setts.a); 
     //System.out.println(ts.a); 
    } 
} 
class SetDemo 
{ 

public static void main(String[] args) 
{ 
    System.out.println("Hello World!"); 
    Setts ts=new Setts(); 
    Scanner s=new Scanner(System.in); 
    System.out.println("entet the int value"); 
    int x=s.nextInt(); 
    ts.m1(x); 
    ts.disp(); 
    //System.out.println(ts.a); 
} 
} 
+1

Пожалуйста, пост код, чтобы мы могли лучше понять, что вы имеете в виду. Я предполагаю, что вам придется использовать 'this.myVariable = myVariable', но поскольку я не полностью понимаю ваш вопрос, могу только догадываться. – xaviert

ответ

1

Короче говоря, вы не можете иметь локальную переменную, которая скрывает параметр. Компилятор не допустит этого.

например.

class A { 
    int x; 
    void method(int x) { 
     int x; // not allowed, it won't compile. 

Поэтому, если у вас есть поле и имя параметра, вы можете просто использовать имя параметра.

То, что вы можете иметь

class A { 
    int x; 
    void method(int x) { 

     int y = x; // the parameter 
     int z = this.x; // the field above. 
Смежные вопросы