문제
함수 호출시 값을 전달받고, 함수 내에서 기본자료형 수정, 객체 값을 직접 수정, 새 객체를 생성하여 수정하는 프로그램입니다 이를 해결하는 프로그램을 작성하세요
uppercase() 호출전 argument1 = a argument2 = d argument3 = g
uppercase() 변경전 parameter1 = a parameter2 = d parameter3 = g
uppercase() 변경후 parameter1 = A parameter2 = D parameter3 = G
uppercase() 호출후 argument1 = a argument2 = d argument3 = G
알고리즘 설계
프로그램 시작
전달인자 초기화
전달인자 수정
프로그램 종료
전달인자 수정
Pass by Value 후 값 수정
Pass by Reference 후 새 객체를 생성하여 수정
Pass by Reference 후 객체 값을 직접 수정
// 파일명 : ./Chapter12/PassByValueVsPassByReference.java
// 문자 클래스
class Char
{
protected char value;
// 값 초기화
P1b public Char( char value ) {
this.value = value;
P1e }
// 값 문자열 표현
public String toString() {
return this.value + " ";
}
}
public class PassByValueVsPassByReference
{
// 전달인자 수정
P2b public static void uppercase( char parameter1, Char parameter2, Char parameter3 ) {
System.out.println( "uppercase() 변경전 parameter1 = " + parameter1 + " parameter2 = " + parameter2 + " parameter3 = " + parameter3 );
// Pass by Value 후 값 수정
P21 parameter1 = 'A';
// Pass by Reference 후 새 객체를 생성하여 수정
P22 parameter2 =
P23 new Char( 'D' );
// Pass by Reference 후 객체 값을 직접 수정
P24 parameter3.value = 'G';
System.out.println( "uppercase() 변경후 parameter1 = " + parameter1 + " parameter2 = " + parameter2 + " parameter3 = " + parameter3 );
P2e }
// 프로그램 시작
1 public static void main( String[] args ) {
// 전달인자 초기화
2 char argument1 = 'a';
3 Char argument2 =
4 new Char( 'd' );
5 Char argument3 =
6 new Char( 'g' );
// 전달인자 수정
System.out.println( "uppercase() 호출전 argument1 = " + argument1 + " argument2 = " + argument2 + " argument3 = " + argument3 );
7 uppercase( argument1, argument2, argument3 );
System.out.println( "uppercase() 호출후 argument1 = " + argument1 + " argument2 = " + argument2 + " argument3 = " + argument3 );
// 프로그램 종료
8 }
}
실행 순서 확인