2016-10-14 2 views
-8

다음 프로그램의 출력은 어떻게됩니까? 나는 물체 할당이나 참조를 알지 못한다.참조로 개체에 액세스

class ObjEx 
{ 
    public static void main(String arg[]) 
    { 
     ObjEx ob=new ObjEx(); 
     Object o = ob; 

    if(o==ob) 
     System.out.println("1"); 
    if(o!=ob) 
     System.out.println("10"); 
    if(o.equals(ob)) 
     System.out.println("101"); 
    if(ob.equals(o)) 
     System.out.println("1101"); 

    } 
} 

옵션 : A) (1) (B) (10) (C) 101 (D) 1101 무슨 일이 출력됩니다 나에게 설명해주십시오 어떻게 가능합니까? 나는 등 내 화면에 출력을 얻고있다하지만 난이 프로그램을 받고 있지 않다 : 여기

1

101

1101

+5

경우에만 프로그램을 실행하고 찾을 수있는 방법이 있다면 ... – David

+0

당신은 자신의 질문에, 좋은 선생님 답변했습니다. 'o == ob','o.equals (ob)','ob.equals (o) '; 이 모든 것들은 사실입니다! 'o == ob'의 모든 것; 단 하나의'ObjEx' 인스턴스가 있고 거기에 두 개의 참조가 있습니다. – nasukkin

답변

0

if(o==ob) 당신이 참조를 비교 하고 마지막 두 경우에 대한됩니다 :

if(o.equals(ob)) 
if(ob.equals(o)) 

자바에서 equals는 객체와 this를 비교하는 연산입니다. 대칭입니다. null가 아닌 참조 값 x 및 y에 대해 x.equals (y)y.equals (x)이 true를 반환하는 경우에만 true를 반환해야합니다.