안녕하세요
Native 안드로이드 개발하려고 자바를 작성하는 중입니다.
헤드퍼스트 자바 입문서 한 권 떼고 코딩하고 있는데
특이한 점이 있네요
...
public static void main(String[] args){
StringChanger sc = new StringChanger();
String str = "iiiii";
sc.ChangeString(str);
sysout(str);
}
...
public class StringChanger{
public void ChangeString(String str){
str += "String Chaged";
}
}
처음에 위 코드와 같이 짰는데 콘솔출력이 "iiiii" 이었습니다.
물론 기대한 콘솔출력은 "iiiiiString Changed" 였죠.
아래와 같이 수정하니 되더군요
...
public static void main(String[] args){
StringChanger sc = new StringChanger();
String str = "iiiii";
str = sc.ChangeString(str);
sysout(str);
}
...
public class StringChanger{
public String ChangeString(String str){
str += "String Chaged";
return str;
}
}
메소드의 리턴값을 String으로 바꾸고 이를 받아오니 되네요..
매개인자 String을 참조하고 바꾸기 위해 리턴값 또한 String으로 해야된다는 부담..
자바에서는 객체와 레퍼런스로만 이루어져 있기 때문에
첫번째 코드로 동작할 줄 알았습니다.
흠.. C++에서는 단지 매개변수를 레퍼런스로 하면
즉, 매개인자를 포인터를 사용하거나 또는 &연산자로 리네임하기만 하면
첫번째코드로 잘 동작합니다.
근데 자바에서 저런 식으로 코딩하면 메소드의 매개인자가 두 개 이상일 때
두 개를 동시에 참조하고 바꾸질 못 하네요
C++에 비해 좀 후진 것 같습니다.