Java 7

[Java] 정적 멤버와 Static

📌 Static 의 정의 정적(Static)은 '고정된'을 의미합니다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드 와 메서드를 말합니다. 📌 Static 의 특징 이러한 static은 다음과 같은 특징이 있습니다. 메모리에 고정적으로 할당됩니다. 객체마다 가지고 있을 필요가 없는 공용 데이터라면 정적 필드로 선언하는 것이 좋습니다. 객체 생성없이 사용이 가능합니다. 클래스 로더가 클래스(바이트코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리됩니다. 클래스의 로딩이 끝나면 바로 사용할 수 있습니다. static 메서드 내에서는 인스턴스 변수를 사용할 수 없습니다. 객체 자신의 참조인 this 키워드 사용이 불가합니다. 프로그램이 종료될 때 해제됩니다. ..

Java 2023.11.09

Java 에서의 예외처리

📌 들어가며 개발을 할 때 가장 중요한 요소 중 하나를 뽑으라면 '예외처리' 를 들 수 있을 것 같습니다. 모든 개발을 하는 과정에선 예외 Exception이 발생할 수 있고 해당 Exception을 얼마나 세분화 해서 처리하는지 또는 Exception이 발생했을 때 어떻게 대처할 것 인지를 정하는 것은 매우 중요한 요소 중 하나라고 할 수 있습니다. 오늘 포스팅에서는 Java에서 Exception을 어떻게 처리하는지에 대해 정리해 보도록 하겠습니다. 📌 예외 처리하기 예외 처리하기 위해서는 크게 두 가지 방법을 사용합니다. 하나는 try - catch 구문을 사용하는 것이고 다른 하나는 Exception 을 throw(예외 던지기) 하는 것입니다. try { ... } catch(예외1) { ... }..

Java 2023.06.03

[Mockito & JUnit] @Mock 과 @InjectMock

📌 Mockito 란? Mockito 는 Junit5를 이용한 단위테스트 코드를 작성할 때 Mock을 위해 많이 사용하는 Framewor입니다. 테스트 대역(Test Double)의 종류 중 모의(Mock) 객체를 필요로 할 때 사용합니다. ✔️ 테스트 대역(Test Double) 테스트를 위해 실제 객체를 대체하는 것을 말합니다. ✔️ 모의(Mock) 객체 호출했을 때 사전에 정의된 명세대로의 결과를 돌려주도록 미리 프로그램되어 있는 테스트용 객체. Mockito 기본 사용 //의존성 선언 testImplementation 'org.mockito:mockito-core:3.11.2' testImplementation 'org.mockito:mockito-junit-jupiter:3.11.2' testR..

Java 2023.03.28

[Java] 접근 제한자란 무엇인가

📌 들어가며... Java 코딩을 하다보면 public, private, protected 와 같은 접근 제한자들을 마주치게 됩니다. 그런데 이러한 접근제한자의 정의나 기능을 명확히 알지 못하고 단순히 '다른 메서드들이 private으로 되어 있어서.. public 으로 되어 있어서.. 나도 그대로 public 으로 선언 해야지' 라는 가벼운 마음으로 사용할 때가 있는 것 같아 명확히 정의와 그 기능을 알아보고자 합니다. 📌 접근 제한자란? 접근 제한자란 말 그대로 클래스 및 인터페이스 그리고 이들이 갖고 있는 멤버들에 대한 접근을 제한하는 것을 말합니다. 클래스와 인터페이스를 다른 패키지에서 사용 못하도록 막기 객체 생성을 막기 위해 생성자를 호출하지 못하게 하기 필드나 메소드를 사용하지 못하도록 막기..

Java 2023.03.08

자바의 자료구조 - 컬렉션 프레임워크(Collection Framework)

📌 들어가며 모든 프로그래밍 언어에는 데이터 값들을 다루기 위한 '자료구조'가 존재합니다. 컴퓨터 과학에서의 '자료구조'는 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다. 오늘 해당 포스팅에서는 자바 언어에서 자료구조에 대해 살펴보도록 하겠습니다. 📌 자바 컬렉션 프레임워크(Java Collection Framework) 자바에서는 배열(Array)를 사용해서 값을 저장하고 해당 값들을 계산할 수 있습니다. 이러한 배열은 기본 타입뿐만 아니라 클래스 타입의 배열도 만들 수 있기 때문에 객체 저장소로 사용될 수 있습니다. 하지만 배열은 선언 시 정한..

Java 2023.02.05

[Java] extends 와 implements 의 차이

자바에 있어서 OOP, 상속과 관련되 개념은 매우 중요하다고 할 수 있습니다. 자바 코딩의 핵심이라고 볼 수 있으며 자바 관련 조금만 큰 규모 혹은 작은 규모더라도 SpringBoot 코딩을 하다보면 반드시 사용하게 되는 개념 입니다. 얼마 전 회사에서 하나의 시스템과 다른 시스템을 연동하는 20여개의 api 를 개발할 때도 implements를 이용했습니다. 이 때HttpClient.java 라는 파일에는 public ResponseDto getInformation(); 과 같은 형식으로 개발할 api 들에 대해 나열한 interface를만들고 HttpClientImpl 이라는 구현체를 만들어 구현체에서 각 api 들을 구현했습니다. 이렇게 코딩을 하게 되면 api 의 스펙이 도중에 변경 되더라도 Ht..

Java 2023.01.10

[Java] AtomicInteger 사용하기

오늘은 Java의 AtomicInteger에 대해 정리해보고자 합니다. AtomicInteger는 Java에서 제공하는 클래스로 Java의 멀티스레드 환경에서 숫자 관련 계산을 진행할 때 자원의 동시성 제어를 위해 사용되는 클래스입니다. 이러한 AtomicInteger는 동기화된 int 보다 성능 역시 뛰어나다고 합니다. -- Java의 멀티스레드 환경과 동시성 제어는 여기서 다루기엔 내용이 길어져 따로 정리해보도록 하겠습니다. 이번에 AtomicInteger를 알게 된 계기는 테이블의 데이터를 조회하여 해당 데이터를 정렬 후 점수에 따라 랭크를 부여해야 했습니다. 이때 AtomicInteger 클래스를 사용하여 처리한 팀원의 코드를 보고 찾아보게 되었습니다. 객체 생성 public void atomic..

Java 2023.01.07