게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
JAVA가 C++보다 후진 것 같아요
게시물ID : programmer_20766짧은주소 복사하기
작성자 : 아놜라리
추천 : 0/6
조회수 : 1082회
댓글수 : 13개
등록시간 : 2017/06/06 07:41:30
옵션
  • 창작글
안녕하세요
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++에 비해 좀 후진 것 같습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호