Java 24

[Java] Exception의 종류 및 처리 방법

들어가기에 앞서 개발을 하다 보면 다음과 같은 문구들을 자주 만나게 됩니다. 개발 공부를 처음 할 때에는 이런 문구들만 보면 갑자기 기분이 좋다가도 싫어지고, 뭔가 무섭고 그랬습니다. 하지만 예외라는 것은 개발자에게 무서운 것이 아닌 개발자에게 문제 상황을 알려주려고 하는 친근한 친구입니다. 이번 장에서는 Java에서 사용하는 예외에 대해서 알아보려고 합니다. Exception 종류 자바는 총 세 종류의 예외가 존재합니다. Error Runtime Exception (Unchecked Exception) Checked Exception [ Error ] Error란 자바 프로그램 밖에서 일어나는 예외를 말합니다. 서버의 디스크가 고장 났다던가, 메인보드가 제대로 동작을 하지 않는다던가와 같이 자바 내에서..

Java 2023.06.12

[Java] Object란 무엇인가요?

자바에서는 모든 클래스의 부모클래스가 있습니다. 보통 클래스를 상속받는 경우 implments를, 확장받는 경우는 extends를 사용합니다. 클래스에서 아무런 상속을 받지 않는다면 최상위 부모클래스인 Object를 확장합니다. Object 클래스를 상속받는 이유 Object 클래스에 있는 메서드를 통해 클래스의 기본적인 행동을 정의할 수 있습니다. Object가 제공하는 메소드는 크게 두가지로 나뉩니다. [객체를 처리하기 위한 메서드] clone : 객체의 복사본을 만들어 반환 equals : 현재 객체와 매개변수로 넘겨받은 객체가 같은 지 확인 finalize : 현재 객체가 더이상 쓸모 없어졌을 때 GC(가비지 컬렉터)에 의해 호출됨 getClass : 현재 객체의 클래스를 반환 hashCode :..

Java 2023.06.02

[모던 자바 인 액션] 동작 파라미터화

실생활에서는 소비자들의 요구는 시도때도 없이 바뀝니다. 사과를 분류하는 메서드가 있다고 가정하겠습니다. 소비자들의 요구사항은 시도 때도 없이 많을 것입니다. 녹색 사과만 보여줘! 녹색 사과인데 100g 이 넘는 사과만 보여줘! 빨간 사과를 보여줘! 빨간 사과인데 100g 안되는 사과만 보여줘 이 외에도 소비자들이 원하는 조건에 따라 계속 바뀔 것입니다. 이러한 조건을 효과적으로 대응할 수 있는 방법이 바로 동작 파라미터화입니다. 동작 파라미터화 해당 예제에서는 Predicate를 사용했는데, Predicate는 참 혹은 거짓을 반환하는 함수입니다. public interface ApplePredicate { boolean test(FilteringApples.Apple apple); } public cl..

Java 2023.05.10

오버로딩과 오버라이딩에 대해

본문에 들어가기 앞서 오버로딩과 오버라이딩을 한줄 요약한다면 다음과 같습니다. 오버로딩(overloading) : 기존에 없는 새로운 메서드를 정의하는 것 오버라이딩 (overriding) : 상속받은 메서드의 내용을 변경하는 것 오버로딩 (overloading) 자바에서는 한 클래스 내에서 메서드 매개변수의 개수 혹은 타입이 다르다면 이미 존재하는 메서드명을 다시 사용할 수 있습니다. 오버로딩이 성립하기 위해서는 다음의 조건을 만족해야 합니다. 메서드 이름이 같아야 한다. 매개변수의 개수 혹은 타입이 달라야 한다. 메서드의 반환 타입은 영향을 미치지 않는다. [출력 결과] 이름 : tommy 이름 : tommy, age : 2 예시로 Printer 이라는 클래스를 생성했습니다. print method가..

Java 2023.05.01

Java Parameter Passing Mechanism

Definition 함수에 인자를 넘기는 방식에는 다음과 같은 방식이 있습니다. value reference result value-result name 이 중 Pass By Value, Pass By reference 메서드가 널리 사용되고 있습니다. 프로그래밍 언어들 마다 각자의 방법으로 인자들을 넘기는 방법을 택하고 있습니다. Java의 경우 엄격하게 Pass By Value를 지키고 있습니다. 들어가기 앞서 Wikipedia에 정의된 Call By Referecne, Call By Value의 정의를 한번 짚고 넘어가겠습니다. Call By Value Call By Value는 method에서 변수를 사용 시 새 메모리 영역에 복사해 method의 변수에 바인딩합니다. 메서드에서 값을 변경하면 m..

Java 2023.04.26

Java Collection Framework

Java에서 Collection Framework라는 용어를 들어본 적이 있을 것입니다. 많이는 들어봤지만 정리는 잘 안하게 되는 Collection Framework에 대해서 정리를 해보려고 합니다. Collection : 다수군의 데이터를 의미합니다. Framework : 표준화된 프로그래밍 방식을 의미합니다. Collection Framework 는 즉 데이터군을 저장하는 클래스들을 표준화한 설계도 라고 보시면 될 것 같습니다. Collection Framework는 JDK1.2 에 등장하였습니다. JDK 1.2 이전에는 컬렉션 클래스, 다수의 데이터를 저장할 수 있는 클래스들을 서로 다른 방식으로 처리했습니다. Collection Framework 의 등장으로 인해 다양한 종류의 컬렉션 클래스가 ..

Java 2023.04.25

String, StringBuffer, StringBuilder

이번 장에서는 String , StringBuffer 및 StringBuilder에 대해 알아보려고 합니다. String String은 기본적으로 immutable 즉 변경 불가능한 클래스 입니다. 다음 예시와 함께 알아보도록 하겠습니다. {1} String a = "hello"; String b = "world"; //------ {2} a = a + b; System.out.println(a); // "helloworld" {1}의 과정에서는 a는 hello의 주소인 0x100 을 가르키고 b는 world 주소인 0x200을 각각 가르킵니다. {2}의 과정에서는 새로운 문자열 ("helloworld")이 담긴 instance가 생성되고 a는 이전에 가르키고 있던 0x100 주소 대신 0x300을 가르..

Java 2023.04.24

Junit - Parameterized Test (변수 테스트)

테스트 코드를 작성할 때 특정 변수 값에 따른 테스트 코드를 짜야할 경우가 있습니다. 이러한 경우 모든 변수를 직접 하드코딩 하여 작성해도 되지만 매개변수 테스트를 사용하면 간단한 코드로 효율적으로 실행을 할 수 있습니다. Set에 이름을 저장할 때 제대로 저장되었는지 확인하기 위해 테스트코드를 짠다고 가정해보겠습니다. import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import java.util.HashSet; import java...

Java 2023.04.22

Javadoc 이란?

좋은 API 문서는 성공적인 Software Project를 위한 많은 요소들 중 하나입니다. JDK의 최근 버전들은 모두 Javadoc 도구를 제공합니다. 평소 우리가 프로젝트하는 경우에 대해서는 모두 지원을 한다고 보면 될 것 같습니다. [JavaDoc을 사용하기 위한 전제조건] JDK1.4 이상 PATH 환경 변수에 JDK의 /bin 폴더가 추가되어 있는지 확인 IDE (선택사항) [이번 Post에서 사용한 환경] JDK 17 IntelliJ SpringBoot 3.0.4 Gradle 7.6.1 Java 주석 java에서 사용할 수 있는 주석방식은 다음과 같습니다. (1) // single line comment (2) /* * regular multi-line comment */ (3) /** *..

Java 2023.04.22

Java EE 와 Java SE 뭐가 다른가요?

설명에 앞서 줄임말의 풀 네임을 설명 드리고 시작하려고 합니다. Java SE : Java Platform, Standard Edition Java EE : Java Platform, Enterprise Edition 들어가며 Java 언어의 Platform은 총 네가지의 플랫폼이 존재 합니다. Java SE (Standard Edition) Java EE (Enterprise Edition) Java ME (Micro Edition) JAVA FX 모든 자바 플랫폼은 Java 가상 머신인 (JVM) 위에 애플리케이션 프로그래밍 인터페이스(API)로 구성됩니다. JVM 은 Java 기술 응용 프로그램을 실행하는 특정 하드웨어 및 소프트웨어 플랫폼용 프로그램입니다. API는 다른 소프트웨어 구성 요소 혹은..

Java 2023.04.21