[Java] Call by Value와 Call by reference의 차이 (Feat.문자열 비교)

zizi·2023년 7월 27일
0

Java

목록 보기
26/27
post-thumbnail

> Call by Value와 Call by reference의 차이

함수 호출 방법은 크게 두 가지이다.

  • Call by value(값에 의한 호출)
  • Call by refernce(참조에 의한 호출)

Call by value(값에 의한 호출) : 인자로 받은 값을 복사하여 처리. 원래의 값 보존됨.
Call by reference(참조에 의한 호출) : 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 줌. 원래의 값이 영향을 받음.
-> 값을 복사를 하여 처리를 하느냐, 아니면 직접 참조를 하느냐 차이

각각의 장단점

Call by value(값에 의한 호출)
장점 : 복사하여 처리하기 때문에 안전하다. 원래의 값이 보존이 된다.
단점 : 복사를 하기 때문에 메모리가 사용량이 늘어난다.

Call by reference(참조에 의한 호출)
장점 : 복사하지 않고 직접 참조를 하기에 빠르다.
단점 : 직접 참조를 하기에 원래 값이 영향을 받는다.

> 타입별 함수 호출 방법

기본 타입의 int, char형등은 Call by Value 형태로 기본적으로 대상에 주소값을 가지지 않는 형태로 사용됨.
하지만 String은 일반적인 타입이 아니라 클래스기 때문에 기본적으로 Call by Reference 형태로 생성 시 주소값이 부여됨.

-> String타입을 선언 했을때는 같은 값을 부여하더라도 서로간의 주소값이 다르다.

> 문자열 비교 : == 와 equals()의 차이

==연산자는 비교하고자 하는 두개의 대상의 주소값을 비교
String클래스의 equals 메소드는 비교하고자 하는 두개의 대상의 값 자체를 비교

결론 : 문자열 비교를 하기 위해서는 equals 메서드를 사용하면 두 비교대상의 주소값이 아닌 데이터값을 비교하기 때문에 정확한 비교가 가능하다.

[참고]
https://sudo-minz.tistory.com/91

profile
좋았다면 추억이고 나빴다면 경험이다.🍀

0개의 댓글

관련 채용 정보