Call By Value & Call By Reference

Daniel·2023년 7월 18일
0

Back-End

목록 보기
22/48

Call By Value (값에 의한 호출)

기본 데이터 타입(int, float, boolean, ...) 또는 불변 객체(String, 래퍼클래스)를 메서드의 파라미터로 전달하면 파라미터의 값이 복사되어 메서드로 전달
메서드 내부에서의 매개변수의 변경 사항은 메서드 외부의 매개변수 값에 영향을 미치지 않는다.

public static void main( String[] args ) {  
	int number = 5;  
	System.out.println( "Before method call: " + number );  
	increment( number );  
	System.out.println( "After method call: " + number );  
}  
  
public static void increment( int value ) {  
	value++;  
	System.out.println( "Inside method: " + value );  
}
Before method call: 5
Inside method: 6
After method call: 5

Call By Reference (참조에 의한 호출)

메서드에 객체(원시타입이 아닌 유형)의 파라미터를 전달하면 객체의 대한 참조가 값으로 전달 -> 주소값이 전달됨
메서드 내부에서 객체의 속성이나 상태를 변경하면 메서드 외부의 원래 객체에 영향을 준다.

class Person {  
	String name;  
	  
	Person( String name ) {  
		this.name = name;  
	}  
}

public class Main {  
  
	public static void main( String[] args ) {  
		Person person = new Person( "Daniel" );  
		System.out.println( "Before method call: " + person.name );  
		changeName( person );  
		System.out.println( "After method call: " + person.name );  
	}  
	  
	public static void changeName( Person person ) {  
		person.name = "Modified";  
		System.out.println( "Inside method: " + person.name );  
	}  
}
Before method call: Daniel
Inside method: Modified
After method call: Modified
profile
응애 나 애기 개발자

3개의 댓글

comment-user-thumbnail
2023년 7월 18일

가치 있는 정보 공유해주셔서 감사합니다.

1개의 답글
comment-user-thumbnail
2023년 7월 18일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기