메소드 파라미터에 final 사용하기

2024. 10. 22. 14:11·우테코 7기/1주차

 

❐ 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주차' 카테고리의 다른 글

코드 리뷰 & 피드백  (0) 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
'우테코 7기/1주차' 카테고리의 다른 글
  • 코드 리뷰 & 피드백
  • [JUnit5] 입력 값을 mockking할 수 있을까?
  • [Java] 객체를 복사해보자
  • [Refactoring] Pattern을 캐싱하자
gilbert9172
gilbert9172
gilbert9172 님의 블로그 입니다.
  • gilbert9172
    バックエンド
    gilbert9172
  • 전체
    오늘
    어제
    • All Categories (173)
      • 우테코 7기 (21)
        • 1주차 (8)
        • 2주차 (5)
        • 3주차 (6)
      • Langauge (4)
        • Java (3)
        • Kotlin (1)
      • Back-End (13)
        • SpringBoot (1)
        • Trouble Shooting (0)
        • Setup & Configuration (1)
        • SQL (3)
        • Redis (8)
      • Architecture (6)
        • Multi Module (1)
        • DDD (5)
      • CS (30)
        • Data Structure (6)
        • Operating System (0)
        • Network (12)
        • Database (10)
        • Design Pattern (2)
      • Algorithm (78)
        • 내용 정리 (18)
        • 문제풀이 (60)
      • DevOps (6)
        • AWS (5)
        • Git (1)
      • Front-End (1)
        • Trouble Shooting (1)
      • Project (6)
        • 페이스콕 (6)
      • Book (7)
        • 이벤트 기반 마이크로서비스 구축 (6)
        • 친절한 SQL 튜닝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Two-Pointer
    binarysearch
    sliding-window
    오블완
    Back-Tracking
    greedy
    부분단조성
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gilbert9172
메소드 파라미터에 final 사용하기
상단으로

티스토리툴바