인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Language/Java

☕ 누구나 쉽게 배우는 Reflection API 사용법

자바의 Class 클래스 (Java.lang.Class) 자바 프로그래밍을 할때 우리는 보통 변수나 클래스를 직접 선언하고 만들어 사용하여 왔다. 그런데 어떤 경우에는 애플리케이션 실행 중에서 클래스를 동적으로 불러와 다루어야 할 경우가 생긴다. 즉, 코드를 실행하기전 컴파일 단에서 개발자가 직접 폴더를 뒤져가며 클래스 정의문을 찾아 클래스 정보를 얻는 것이 아닌, 코드 상에서 호출 로직을 통해 클래스 정보를 얻어와 다룸으로써 런타임 단에서 다이나믹하게 클래스를 핸들링 하는 것이다. 이때 사용되는 것이 바로 Class 클래스 객체이다. Class 클래스는 java.lang.Class 패키지에 별도로 존재하는 독립형 클래스로서, 자신이 속한 클래스의 모든 멤버 정보를 담고 있기 때문에 런타임 환경에서 동적..

category_image
인파_
2023.01.10
(0)
Language/Java

☕ 자바 Enum 열거형 타입 문법 & 응용 💯 정리

Enum 열거 타입 먼저 Enum은 "Enumeration"의 약자다. Enumeration은 "열거, 목록, 일람표" 라는 뜻을 가지고 있으며, 보통 한글로는 열거형이라고 부른다. 즉, 열거형(enum)은 요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형이다. 어렵게 생각할 필요 없이 상수 데이터들의 집합 으로 치부하면 된다. 먼저 Enum은 "Enumeration"의 약자다. Enumeration은프로그래밍을 하다보면 배열이나 리스트 ..등 여러개의 묶음 데이터를 다루는 일이 빈번하다. 이 묶음 데이터 중에는 데이터 주제에 따라 몇가지로 한정된 값만을 가지는 경우가 존재한다. 대표적으로는 '요일' 이나 '계절' 또는 '주사위' 같은 예제를 들 수 있다. 요일은 월,화,수,목,금,토,일 이렇게 7..

category_image
인파_
2022.12.06
(0)
Language/Java

☕ 자바 정규식(Regular Expression) 사용법 💯 정리

정규표현식 이란 정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다. 개발을 하다보면 전화번호, 주민등록번호, 이메일등과 같이 정해져있는 형식이 있고 사용자가 그 형식대로 제대로 입력했는지 검증을 해야하는 경우가 종종 있다. 이런 입력값을 정해진 형식에 맞는지 검증해야 할 때에는 정규표현식을 사용하면 쉽게 구현할 수 있다. 이처럼 정규식을 이용하면 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수 있고, 입력된 데이터가 형식에 맞는지 체크할 수도 있다. 하지만 위의 사진을 보듯이 복잡한 문자 기호 조합으로 가독성이 떨어진다는 단점도 있다..

category_image
인파_
2022.11.30
(0)
Language/Java

☕ 자바 가변 인수(VarArgs) - 매개변수를 동적으로

가변 인수 (Variable Arguments) 가변 인수(varargs)란, 매개변수로 들어오는 값의 개수와 상관 없이 동적으로 인수를 받아 기능하도록 해주는 문법을 지칭한다. 예를들어 다음과 같이 매개변수 갯수가 일정치 않은 print() 메서드가 있다고 가정하자. print("홍길동"); print("홍길동", "이순신"); print("홍길동", "이순신", "유성룡"); print("홍길동", "이순신", "유성룡", "강감찬"); print("홍길동", "이순신", "유성룡", "강감찬", "이도"); 여러개의 파라미터가 들어올 수 있는 메서드를 구성하는 방법은 대표적으로 메서드 오버로딩(overloading)으로 처리가 가능하다. 하지만 전달할 매개변수가 몇개인지 일정치 않을때 일일히 메서드..

category_image
인파_
2022.11.29
(0)
Language/Java

☕ Exception Handling - 자바 예외를 처리하는 3가지 기법

Exception Handling 3가지 기법 자바의 예외를 try - catch 블럭으로 잡았다고 해서 끝이 아니다. 예외가 발생하였으면 코드를 수정하여 문제점을 고쳐야 되는 것은 맞지만, 예상할 수 없는 예외인 경우 회피를 하거나 복구 동작을 하는 등 예외를 핸들링하여 처리하는 로직이 필요하다. 예상치 못한 예외가 발생하면 이를 단순히 catch문으로 잡아 에러 메세지를 출력하는 것을 떠나서, 실무에서 어떻게 예외를 효과적으로 처리하는지 방법에 대해 알아보도록 하자. 예외를 처리하는 방법에는 예외 복구, 예외 처리 회피, 예외 전환 방법이 있다. 1. 예외 복구 예외 상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 방법 Exception이 발생하여도 어플리케이션은 정상적으로 동작 반복문을 이용하..

category_image
인파_
2022.11.25
(0)
Language/Java

☕ 자바 Try With Resource 예외 처리

자바 Resource의 예외 처리 보통 resource란 외부의 데이터(DB, Network, File)를 일컫는다. 이런 resource들은 자바 내부에 위치한 요소들이 아니기 때문에, 이러한 프로세스 외부에 있는 데이터에 자바 코드에서 접근하려고 할 때 문제(예외)가 발생할 수 있는 여지가 존재한다. 특히나 이런 입출력에 관련된 resource들에 접근해서 사용하고 나면 닫는 것이 굉장히 중요하다. 예를들어 파일에 접근해 파일을 열고 내용을 쓰고 난후 꼭 닫아 주어야 한다. 왜냐하면 어떤 resource를 사용하다가 다른곳에서 같은 resource에 접근해 막 사용하다 보면 꼬일 수 있기 때문이다. 예를 들어 다음과 같이 외부 텍스트 파일에 접근해서 내용을 쓰고 닫는 로직을 자바에서 구현하였다. 만일..

category_image
인파_
2022.11.24
(0)
Language/Java

☕ 자바 예외 던지기(throw) & 예외 연결(Chained Exception)

예외 던지기 예외 발생시키기 (throw) 만일 프로그램적으로 에러가 아니라도 로직상 개발자가 일부러 에러를 내서 로그에 기록하고 싶은 상황이 올 수 있다. 자바에서는 throw 키워드를 사용하여 강제로 예외를 발생시킬 수 있다. 원래는 프로그램이 알아서 에러를 탐지하고 처리 하였지만, 이번에는 사용자가 일부러 에러를 throw하여 에러를 catch 한다는 개념으로 보면 된다. 이때 new 생성자로 예외 클래스를 초기화하여 던져는데, 이 클래스 생성자에 입력값을 주게되면, catch문의 getMessage() 메서드에서 출력할 메세지를 지정하게 된다. import java.util.Scanner; public class Main { public static void main(String[] args) {..

category_image
인파_
2022.11.24
(0)
Language/Java

☕ 자바 예외 처리(try catch) 문법 & 응용 정리

예외(Exception) 처리하기 예외 처리(exception handling) 이란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는것이다. 자바의 코드를 예외 처리를 한다고 해서 프로그램의 예외 상황 자체를 막을 수는 없다. 예외 처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스런 비정상적인 동작을 막고, 에러를 잡아 복구를 시도하거나 아니면 회피 하는식으로 처리를해서, 프로그램이 정상적인 실행상태를 유지할 수 있도록 하는 것이다. 자바 코드의 예외 처리를 학습하기 위해서는 먼저, 자바의 에러와 예외의 구분 그리고 컴파일 에러 / 런타임 에러 의 차이와 Checked 예외 / UnChecked 예외에 대한 기본 지식이 필요하다. 만일 이에 대한 지식이..

category_image
인파_
2022.11.24
(0)
Language/Java

☕ (Un)Checked Exception과 트랜잭션의 오해와 진실

잘못 알려진 (Un)Checked Exception 트랜잭션 Checked Exception 과 Unchecked Exception 차이를 알아볼때 다음과 같은 정리본을 발견 하였다. 만일 코드에서 예외가 발생했는데 Checked Exception 이면 롤백을 하지않고 그대로 진행되고, 만일 Unchecked Exception 이면 롤백을 한다는 얘기이다. 그러나 이는 반은 맞고 반은 틀린 정의이다. 백기선님의 강의에서도 이 부분에 대해서 따끔하게 혼내주시기도 한다. 지금 부터 그 이유를 알아보자. 자바의 트랜잭션 다루기 트랜잭션은 데이터베이스에서도 쓰이는 개념으로서, 하나의 작업 단위를 뜻한다. 예를들어 쇼핑몰의 "상품발송"이라는 트랜잭션을 가정해 보자. "상품발송" 이라는 트랜잭션에는 "포장" → "..

category_image
인파_
2022.11.23
(0)
Language/Java

☕ 자바 에러(Error) 와 예외 클래스(Exception) 💯 이해하기

프로그래밍의 오류 종류 프로그램에서 오류가 발생하면 시스템 레벨에서 프로그램에 문제를 야기하여 원치 않는 버그를 일으키거나, 심각하면 실행 중인 프로그램을 강제로 종료시키도 한다. 프로그램 오류의 원인으로는 정말 다양한 상황이 있을 수 있다. 내부적인 요인으로는 프로그램 설계 로직에 구멍이 있어서 그럴수도 있고, 외부적인 요인으로는 프로그램 자체 문제가 아닌 하드웨어에서 문제가 생겨 프로그램에 오류가 발생할 수 도 있다. 실제로 여러분이 프로그래밍 할때 겪어본 오류의 종류로는 단순 오타 서부터 시작해서 파일을 불러오는데 정작 파일이 없거나 등 잘못된 설계로 인한 메모리 펑크 까지 범위도 다양하다. 프로그래밍에서는 이러한 오류를 발생 시점에 따라 크게 3가지로 나눈다. 컴파일 에러(compile-time ..

category_image
인파_
2022.11.22
(0)
Language/Java

☕ 자바 clone 메서드 재정의 (얕은 복사 & 깊은 복사)

clone 메소드 Object.clone() 메소드는 인스턴스 객체의 복제를 위한 메소드로, 해당 인스턴스를 복제하여 새로운 인스턴스를 생성해 그 참조값을 반환한다. 이러한 clone() 메소드를 사용하기 위해서는 오버라이딩을 해야 되는데, 이때 데이터의 보호를 이유로 Cloneable 인터페이스를 구현한 클래스의 인스턴스만이 사용할 수 있다. Object 클래스의 clone() 메소드는 기본으로 protected 접근 권한을 갖고 있기 때문에, 상속하여 메소드를 public 접근제어자로 재정의하여 어디서나 복제가 가능하도록 해야 한다. import java.lang.Cloneable; // 객체 복사 메소드를 사용하기 위해서는 Cloneable 인터페이스를 구현해서 clone을 재정의 해야함 class..

category_image
인파_
2022.11.17
(0)
Language/Java

☕ 자바 equals / hashCode 오버라이딩 - 완벽 이해하기

equals 메소드 어떤 두 참조 변수의 값이 같은지 다른지 동등 여부를 비교해야 할때 사용하는 것이 equals() 메서드이다. 대표적으로 String 타입의 변수를 비교할때 가장 많이 거론되는 메서드일 것이다. String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); // 주소 비교 false System.out.println(s1.equals(s2)); // 값 비교 true 그러면 문자열이 아닌 클래스 자료형의 객체 데이터일 경우 equals() 메소드는 어떻게 다뤄질까? 어렵게 생각할 필요 없다. 비교할 대상이 객체일 경우 객체의 주소를 이용하여 비교한다. 즉, 객체 자체를 비교할때는 == 이나 equals() 나 똑같다고 ..

category_image
인파_
2022.11.16
(0)