자바 의 값 전달,주소 전달,참조 전달

자바 의 값 전달,주소 전달,참조 전달
가치 전달 과 주소 전달 에 대해 잘 알 고 있다 고 생각 했 습 니 다.방금 개원 중국 에서 자바 의 가치 전달 과 주소 전달 을 소개 하 는 글 을 보고 깊 은 느낌 을 받 았 습 니 다.더 쉽게 이해 할 수 있 도록 정리 하 겠 습 니 다.
이전 이해 에 따 르 면 자바 의 기본 데이터 형식 은 값 전달 이 고 대상 은 주소(참조)전달 입 니 다.예 를 들 어 보 여 드 리 겠 습 니 다.

public class ObjectTrans { 
   
  public static void main(String[] args) { 
    String name = "123"; 
    SChange(name); 
    System.out.println(name); 
  } 
     
  public static void SChange (String str) {   
    str = "234"; 
  }  
   
}
여러분,이 예 가 출력 한 결 과 는 123 일 까요,234 일 까요?결 과 는 123.why?한 마디 로 대상 도 값 전달 이 고 이 대상 의 인용 copy 를 한 부 만 인용 했다.
사실 자바 는 원래 값 전달 이 고 c++와 같은 지침 전달 이 없 으 며 단계별 로 위의 코드 를 분석 합 니 다.
1、name = "123"
2.SChange 호출  str 와 name 은 공동으로"123"을 가리 키 고 있 습 니 다.
3.str 재 할당 및"234"지향
4.name 지향 이 변 하지 않 습 니까?아니면"123"입 니까?
아래 에서 다른 코드 를 보십시오.

public class ObjectTrans { 
   
  public static void main(String[] args) { 
    StringBuilder name = new StringBuilder("123"); 
    SChange(name); 
    System.out.println(name); 
  } 
     
  public static void SChange (StringBuilder str) {   
    //str = "234"; 
    str.append("234"); 
  }  
   
}
그렇다면 이 코드 출력의 결 과 는 무엇 일 까요?정 답 은 123234,why?같은 단계별 분석:
1、name = "123"
2.SChange 호출  str 와 name 은 공동으로"123"을 가리 키 고 있 습 니 다.
3.가리 키 는 대상 의 값"123"+"234"변경
4.인용 은 변 하지 않 고 값 만 변 했 기 때문에 결 과 는 123234 이다.
모 르 시 면 메 시 지 를 남 겨 주세요.잘 분석 해 보 세 요...자바 는 값 만 전달 한 다 는 말 을 기억 하 세 요.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기