본문 바로가기

전체 글192

예외 처리, 예외 전가 (Exception) 예외(Exception)의 종류 코드 작성시 다양한 오류를 마주할 수 있다. (반면 에러는 스택오버플로우 등 개발자가 다루기 어려운 심각한 문제를 말한다.) 컴파일 오류: 컴파일할 때 발생하는 오류로, 오탈자나 잘못된 자료형 등 문법적 문제에서 발생한다. (Syntax Error) IDE에서 빨간색 밑줄로 표시되므로 비교적 쉽게 발견하고 해결할 수 있다. 런타임 오류: 코드를 실행하는 과정에서 발생하는 오류로, 컴퓨터에게 수행할 수 없는 작업을 요청할 때 발생한다. JVM이 프로그램을 실행하는 도중 위와 같은 오류가 발생하면 해외 예외 클래스를 객체로 생성한다. 자바의 모든 에러와 예외는 Throwable 클래스로부터 확장되며, 모든 예외의 최고 상위클래스는 Exception 이다. (try - catc.. 2023. 3. 7.
16일차: 컬렉션(Collection Framework) ❯ 컬렉션 프레임워크(Collection Framework) 컬렉션: 여러 데이터들의 집합. 여러 데이터를 그룹으로 묶어놓은것. 컬렉션 프레임워크: 컬렉션을 다루는데 편리한 메서드를 미리 정의해놓은것 ❯ List 인터페이스 List 는 데이터의 순서가 유지되며, 중복값 저장이 가능한 컬렉션 구현에 사용됨. Collection 인터페이스 구현. 배열과 같이 객체를 일렬로 늘어놓은 구조를 가짐. 객체 저장 시 자동으로 인덱스가 부여되고 인덱스로 객체를 검색/추가/삭제 등 가능 ArrayList 클래스 List 인터페이스를 구현한 클래스로, 객체가 인덱스로 관리된다는점에서 배열과 유사함 ArrayList는 객체가 추가되면 자동으로 저장용량이 늘어나며 데이터가 연속적으로 존재함(순서를 유지함) ArrayList.. 2023. 3. 7.
15일차: 컬렉션(Enum, Generic, Exception Handling) ❯ 열거형(Enum) 열거형(enum: enumerated type): 여러 상수(변하지 않는 값)들을 보다 편리하게 선언할 수 있도록 만들어진 자바 문법요소. 상수명의 중복을 피하고 타입에 대한 안정성을 보장함. switch문에서도 작동이 가능함 * switch문: 사용자 정의타입은 사용 불가 enum Seasons {SPRING, SUMMER, FALL, WINTER} // 값을 지정하지 않아도 자동으로 0부터 시작하는 정수값 할당 // 특정 상수에 접근하려면 열거형이름.상수명 으로 가능 ex. Seasons.SUMMER ❯ 제네릭(Generic) 타입을 구체적으로 지정하는 것이 아니라 타입 매개변수를 활용해 추후에 지정할 수 있도록 일반화 하는것. 작성한 클래스 혹은 메서드가 특정 타입에만 사용되지.. 2023. 3. 6.
14일차: 미니 프로젝트(의존성 주입) 자바에서 의존성 주입(Dependency Injection, DI)이란 객체 지향 프로그래밍에서 객체간의 결합도를 줄이고 유연성을 높이기 위한 설계 패턴 중 하나임 객체 지향 프로그램에서 사건(동작)은 객체간의 상호작용을 통해서 수행되는데 이 때 객체는 자신이 필요로 하는 다른 객체를 직접 생성하거나 참조함. 직접 객체를 생성하고 참조하게 되면 객체간 결합도가 높아짐. (코드를 수정하려면 코드 전체에 걸쳐 수정이 필요해짐) 의존성 주입은 이러한 문제를 해결하기 위해 객체가 필요로 하는 의존 객체를 외부에서 주입해주는 방식임 객체 스스로 필요로 하는 객체를 생성하는것이 아니라 외부에서 의존객체를 주입받아서 사용함 (별도의 인터페이스나 추상클래스를 생성해서 생성자 매개변수로 할당할 수 있음) 의존성 주입을 .. 2023. 3. 3.
13일차: 미니 프로젝트(얕은복사 vs 깊은복사) 자바에서 객체를 복사하는 방법은 얕은복사(shallow copy)와 깊은복사(deep copy) 두가지가 있음 ❯ 얕은 복사(Shallow Copy) 객체 내용을 복사하는 것이 아니라, 객체의 참조값(reference)만을 복사하는 방법. 복사된 개체는 원본 객체와 같은 내용을 가리키게 되므로 복사된 객체 내용을 수정하면 원본 객체 내용도 함께 변경됨 ❯ 깊은 복사(Deep Copy) 객체의 내용을 복사하는 방법. 복사된 객체와 원본 객체는 서로 독립적으로 존재하며 하나를 수정해도 다른 객체에는 영향 주지 않음 아래와 같은 클래스가 있다고 가정 class Person { private String name; private int age; private Address address; // getter, s.. 2023. 3. 2.
[Java] Main 클래스와 main 메서드 코드를 작성하고 코드를 실행할때 Main 클래스와 main 메서드를 보게된다. public class Main { // 메인 클래스 public static void main (String[] args) { // 메인 메서드 // 프로그램 실행 코드 } } Main 클래스와 main 메서드는 프로그램 시작과 관련되어있다. JVM 동작과 관련이 있는데, JVM은 메인 메서드를 가지고 있는 클래스를 메인 클래스로 인식한다. 프로그램을 실행하면 메인 클래스의 메인 메서드가 호출되면서 프로그램이 시작된다. 따라서 메인 메서드는 프로그램의 진입점(entry point)가 되며, 메인 메서드가 없으면 프로그램이 실행되지 않는다. (JUnit 같은 테스트 프레임워크 처럼 일부 특수한 경우는 main 메서드 없이도 동.. 2023. 3. 2.