Java

Java_ 지역변수 , 인스턴스 변수 차이

JunsC 2024. 9. 12. 19:06
728x90

알고는 있었지만 비스무리하게 알고 있어서 좀더 명확히 하고 싶었다.. chatGPT 에게 물어보았다

아주 잘 말해주었다!!

 

두 코드 스니펫 간의 주요 차이점은 adapter 변수를 protected 또는 인스턴스 변수로 선언하는 것과 해당 변수의 사용 방식입니다. 이로 인해 코드의 동작과 유지 관리에 차이가 있을 수 있습니다.

1. 지역 변수와 인스턴스 변수의 차이

첫 번째 예시

java
코드 복사
protected void recyclerview() { CommunityRVAdapter adapter = getAdapter(AdapterInterface.AdapterType.COMMUNITY, CommunityRVAdapter.class); adapter.setEventInterface(this); binding.communityRV.setAdapter(adapter); getDatas(); }
  • 설명: adapter는 recyclerview 메서드 내에서만 사용되는 지역 변수입니다.
  • 장점:
    • 메서드가 종료되면 adapter는 메모리에서 해제됩니다.
    • 메서드 내부에서만 사용되기 때문에, 메서드의 다른 부분에서 adapter의 상태를 변경할 수 없습니다.
  • 단점:
    • 메서드 외부에서 adapter를 참조하거나 수정할 수 없습니다.
    • 메서드 내에서 adapter가 필요할 때마다 getAdapter 메서드를 호출해야 합니다.

두 번째 예시

java
코드 복사
CommunityRVAdapter adapter; protected void recyclerview() { adapter = getAdapter(AdapterInterface.AdapterType.COMMUNITY, CommunityRVAdapter.class); adapter.setEventInterface(this); binding.communityRV.setAdapter(adapter); getDatas(); }
  • 설명: adapter는 클래스의 인스턴스 변수로 선언되어 있으며, recyclerview 메서드 내에서 초기화됩니다.
  • 장점:
    • 클래스의 다른 메서드에서도 adapter를 참조하거나 사용할 수 있습니다.
    • adapter가 클래스 인스턴스의 상태로 유지되므로, 클래스의 다른 메서드에서 adapter의 상태를 참조하거나 수정할 수 있습니다.
  • 단점:
    • 클래스의 생명주기 동안 adapter가 메모리에 유지됩니다.
    • adapter의 상태가 클래스의 다른 메서드에서 변경될 수 있어, 클래스의 동작이 복잡해질 수 있습니다.

요약

  • 지역 변수 (`첫 번째 예시)는 메서드 내에서만 사용되며 메서드 종료 시 메모리에서 해제됩니다. 메서드가 호출될 때마다 새로 생성되므로, 메서드 외부에서 상태를 유지할 필요가 없는 경우 적합합니다.
  • 인스턴스 변수 (두 번째 예시)는 클래스의 생명주기 동안 유지되며, 클래스의 다른 메서드에서 접근할 수 있습니다. adapter`의 상태를 클래스 전체에서 참조하거나 수정할 필요가 있는 경우 적합합니다.

어떤 방식을 선택할지는 adapter의 사용 용도와 필요에 따라 달라질 수 있습니다. adapter의 상태를 클래스의 다른 메서드에서 참조해야 한다면 인스턴스 변수로 선언하는 것이 좋습니다. 반면, adapter가 메서드 내에서만 사용되고 다른 메서드와 독립적이라면 지역 변수로 사용하는 것이 좋습니다.

728x90

'Java' 카테고리의 다른 글

Java_ android_studio Release compile 하기  (0) 2024.09.19
Java_ HILT  (0) 2024.09.19
Java_ runOnUiThread , view.post , handler 의 차이  (0) 2024.09.12
Java_ head up notification.  (0) 2024.08.26
Java_ Rxjava blockingGet , subscribe ...  (0) 2024.08.25
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."