❐ Description
1주차 과제 제출 후 코드 리뷰 과정에서 파라미터에 final을 선언하는 코드를 봤다.
그래서 왜 선언하는지 정리해보려고 한다.
❐ Call by value & Call by reference
1. Call by value
call by value는 메서드에 인자로 전달된 값의 복사본이 메서드에 전달된다는 것을 의미한다. 즉, 메서드 내에서
해당 파라미터를 변경해도 원래 값에는 영향을 미치지 않는다. 자바는 Call by value 방식을 채택한 언어이다.
public class Main {
public static void main(String[] args) {
int original = 10;
modifyValue(original);
System.out.println("Original value: " + original); // 10 출력
}
public static void modifyValue(int value) {
value = 20; // 복사된 값만 수정
}
}
2. Call by reference
call by reference 호출 방식은 함수 호출 시 인자로 전달되는 변수의 레퍼런스를 전달한다.
따라서 함수 안에서 인자 값이 변경되면, 파라미터로 전달된 객체의 값도 변경된다.
public class Main {
public static void main(String[] args) {
Person person = new Person("John");
modifyPerson(person);
System.out.println("Person name: " + person.getName()); // "Doe" 출력
}
public static void modifyPerson(Person person) {
person.setName("Doe"); // 객체 내부의 값을 수정
}
}
}
❐ 왜 쓸까?
메서드 파라미터에 final을 붙이는 이유는 주로 코드의 안정성과 가독성을 높이기 위해서라고 한다.
public void doSomething(String input) {
input = "new value"; // 정상 동작
}
public void doSomething(final String input) {
input = "new value"; // 컴파일 에러
}
이렇게 보니깐 명확한 의미전달이 이루어지는 것 같다.
❐ 인스턴스의 상태는 변경할 수 있다.
public void addItem(final List<Item> items, final Item item) {
items.add(item);
}
위와 같이 Collection을 final로 선언하여도 상태를 변경하는데는 문제 없다.(당연한 결과)
❐ Intellij setting
우테코에서 참 여러모로 많이 배운다.
'우테코 7기 > 1주차' 카테고리의 다른 글
코드 리뷰 & 피드백 (1) | 2024.10.22 |
---|---|
[JUnit5] 입력 값을 mockking할 수 있을까? (0) | 2024.10.21 |
[Java] 객체를 복사해보자 (0) | 2024.10.19 |
[Refactoring] Pattern을 캐싱하자 (0) | 2024.10.19 |
Regex 뿌시기 (0) | 2024.10.17 |