2014-12-24 5 views
0
public class MultipleObjects2Test { 

    static int a; 
    static int b; 

    MultipleObjects2Test(int a,int b){ 

     this.a=a; 
     this.b=b;} 

     public static void main(String[] args) { 

      MultipleObjects2Test test = new MultipleObjects2Test(5,10); 
      MultipleObjects2Test test1 = new MultipleObjects2Test(15,20); 


     System.out.print(test.a); 
     System.out.print(test.b); 

     System.out.print(test1.a); 
     System.out.print(test1.b); 

    } 
} 

Я думаю, выход 5,10,15,20 respectively.But код работает 15 20 15 20.Создание объекта из класса, что объект находится в

Может кто-нибудь объяснить, почему?

ответ

2

Ваши члены статичны:

static int a; 
static int b; 

Поэтому оба экземпляра имеют одинаковое значение для a и b.

Удалить ключевое слово static, и вы получите ожидаемый результат.

public class MultipleObjects2Test 
{ 
    int a; 
    int b; 

    MultipleObjects2Test(int a,int b) 
    { 
     this.a=a; 
     this.b=b; 
    } 

    public static void main(String[] args) 
    { 
     MultipleObjects2Test test = new MultipleObjects2Test(5,10); 
     MultipleObjects2Test test1 = new MultipleObjects2Test(15,20); 

     System.out.print(test.a); 
     System.out.print(test.b); 

     System.out.print(test1.a); 
     System.out.print(test1.b); 
    } 
} 
0

a и b объявлены как статические, которые означают class variables, изменить

static int a;static int b; 

к

int a; int b; 
Смежные вопросы