Language/Java & Kotlin

[Java/TIL] InnerClass 사용시 static선언을 권장하는 이유

인텔리제이와 같은 IDE에서 내부 클래스를 선언하여 개발하는 경우 아래와 같은 경고 메시지를 볼 수 있습니다. 메시지의 내용은 내부 클래스를 인스턴스가 아닌 static으로 선언하라는 경고문이죠. 0. 왜 static으로 선언해야 할까요? 그 이유는 inner 클래스는 inner static 클래스보다 메모리를 더 필요로 하고, 속도도 더 느리고, 외부 클래스가 GC(Garbage Collector) 대상에서 빠지게 되는 현상을 야기 시킴으로써 메모리 관리가 안될 수도 있기 때문입니다. 지금부터 구체적으로 살펴보겠습니다. 1. 내부 클래스(Inner Class)란? 먼저 내부 클래스에 대해서 요약해서 알아보도록 하죠. 내부 클래스란 하나의 클래스 내부에 선언된 클래스를 의미합니다. 맨 위의 예시 코드를 ..

2024.03.17 게시됨

Language/Java & Kotlin

[Java/TIL] Java에서의 Pass By Value, Pass By Reference

이전 포스팅을 찾아보면 pass by value, pass by reference을 주제로 작성한 글이 있습니다. 해당 글이 너무 편협한 생각, 상식이라는 사실을 알았고, 아래 포스팅이 왜 부족하고, 잘못된 정보는 무엇이며 정확한 사실이 무엇인가에 대한 글을 써보려고 합니다. [개발] Pass By Value vs Pass By Reference 란? 최근 첫 기술면접을 봤습니다. 면접은 무조건 여러 번을 봐야 한다는 말을 새삼 느끼게 되더군요. 면접 질문 중에 Pass by value, Pass by reference에 대해서 아시나요? 가 있었습니다. 이번 기회에 대해 resilient-923.tistory.com 0. 위 포스팅 정리 먼저 위 포스팅 중 아래와 같이 정리한 부분이 있습니다. Java..

2024.03.06 게시됨

Language/Java & Kotlin

[Kotlin] companion object와 java의 static 차이점?

최근 개인 프로젝트를 진행하던 도중 자바를 코틀린언어로 컨버팅을 한 경험이 있습니다. 코틀린이라는 언어에 대한 이해도가 부족한 상태였기 때문에 Intellij에서 제공하는 기능을 사용한 후, ChatGPT의 도움을 받아서 컨버팅을 진행했습니다. 바뀐 코드를 정독하던 도중 아래와 같이 바뀐 사실을 확인 할 수 있었습니다. 자바 코드public class JavaConvert { private static final long MAX_SEAT = 100L; } 코틀린 코드public class MyClass { companion object { private const val MAX_SEAT = 100L } } 자바에서 상수를 선언할 때 많이 사용하는 static final 키워드인데요. (static에 대한..

2023.08.18 게시됨

Language/Java & Kotlin

[자바/Java] Static 이란?

최근 싱글톤 패턴에 대해 공부하게 되었습니다. 싱글톤을 이해하기 위해서는 Static의 개념을 확실히 알고 있어야 한다는 블로그 글을 보았고, static에 대해서 이번 기회에 확실히 정리해보려고 합니다. 0. 먼저, Static이란? public static void main(String[] args) Java를 사용하다보면 정말 많이 보는 키워드가 하나 있습니다. 바로 Static인데요. main함수를 선언할 때도 사용하는 아주 익숙한 키워드입니다. Static을 사용한다는 것은 메모리에 한번 할당되고 프로그램이 종료될 때 해제된다는 것을 의미합니다. 메모리 영역과 관련지어서 설명을 해보겠습니다. 먼저 JVM구조에서 메모리 영역을 보면 Static영역과 Heap영역, Stack영역이 있습니다. 여기서..

2022.03.16 게시됨