2016-08-19 2 views
3

나는 곧장 뭔가를 얻어야합니다. 제가 맞는지 말해주세요 :a = b와 b = a의 차이는?

String a; 
String b; 

a = b는 b가?의 값을 취한다는 것을 의미합니다.

b = a는 a가 b의 값을 취한다는 것을 의미한다.

나는 이것에 대해 어색하게 혼란 스럽다. & 나는 설명을 바랄 것이다.

+0

아 ... 그것은 다른 방법입니다 .b의 값이 5이고 a = b 일 경우, a의 값도 역시 5 –

+0

입니다. Java에서 'a = b'는 a가 b의 * value * 또는 a는 b와 같은 * * 객체에 대한 포인터를 얻습니다. –

+2

'=''가된다 '라는 기호를 읽으십시오 – Kon

답변

8

일반적 a = b는 "ab가된다"를 의미한다. 그러나 이것은 우리가 Object을 말할 때 이야기의 일부일뿐입니다 (원시와 반대). 할당 후에 변수 또는 필드가 모두 동일한 객체를 참조합니다. 객체가 변경을 허용하는 경우 (String은 해당하지 않음) a에서 수행 한 변경 사항은 b에서도 적용되며 그 반대의 경우도 마찬가지입니다.

간단한 다이어그램으로 도시 될 수

Assignment before and after.

4

자바에서는 String a; 선언 의미, a는 메모리에 String 객체 유형의 참조 변수입니다.

귀하의 경우 a와 b는 모두 String 참조 변수입니다.

1) a = b는 a가 b의 참조를 얻음을 의미합니다. b에 값이 있으면 a에 할당됩니다.

2) b = a는 b가 a의 참조를 얻는다는 것을 의미합니다. a에 값이 있으면 b에 할당됩니다.

자바로 배우기 시작하면 간단한 자바 프로그램으로 쉽게 테스트 할 수 있습니다.

자바 예 :

package test; 

    public class TestString { 
     public static void main(String args[]) { 

      String a = "Stack"; 
      String b = "Overflow"; 
      a = b; 
      System.out.println("after [a=b]:" + "a =" + a + ";b=" + b); 
      //after this a and b has Overflow as value. 
      b = a; 
      System.out.println("after [b=a]:" + "a =" + a + ";b=" + b); 

     } 
    } 

출력 :

after [a=b]:a =Overflow;b=Overflow 
after [b=a]:a =Overflow;b=Overflow 
+1

좋은 설명입니다.몇 가지 예제를 추가하면 더 좋을 수 있습니다. – xenteros

+1

포인트 번호 2에서 'b가 참조를 얻습니다'라고 말하고 싶습니까? –

+0

감사합니다. @JonathanM, 나는 그것을 시정했다. – esha

관련 문제