728x90
반응형
SMALL

JAVA의 가장 기본이 되는 내용 42

예외 처리 2 (예외 계층)

참고자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 www.inflearn.com 자바는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외(Exception)를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 한다. 자바의 예외 처리는 다음 키워드를 사용한다. try, catch, finally, throw, throws 자바에서 제공하는 예외 계층도 자바에서 기본형을 제외한 모든 것은 객체다. 예외 또한 객체이다. 모든 객체의 최상위 부..

예외처리 1 (예외처리가 필요한 이유)

참고자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 www.inflearn.com 예외에 대한 내용을 정리한 게 있긴 한데 한번 더 정리해서 더 자세하게 예외 처리가 왜 필요한지?, 예외를 어떻게 처리하는 게 좋은 방법인지?를 알아보자. 다음과 같은 프로그램 구성도가 있다고 가정해보자. 프로그램의 흐름은 다음과 같다. 사용자가 데이터를 입력한다. 입력한 데이터를 NetworkService가 받아서 외부 서버에 전송한다. 여기서 외부 서버에 전송을 하려면, 외부 서버와 연결을 해주는 중간다리가 필요하..

try-with-resources

참고자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 www.inflearn.com try-with-resources 구문을 사용해서 사용한 자원을 반납하는데 효율적으로 반납해보자. 애플리케이션에서 외부 자원을 사용하는 경우 반드시 외부 자원을 해제해야 한다. (예: Database connection) 그래서 항상 try - finally 구문을 사용했다. try { //정상 흐름 } catch() { //예외 흐름 } finally { //반드시 호출해야 하는 마무리 흐름 } 이런 반복적인 구문을..

익명 클래스

참고자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 www.inflearn.com 익명 클래스는 마찬가지로 중첩 클래스의 일종이다. 익명 클래스는 이름 그대로 이름이 없는 클래스를 의미하는데, 저번 지역 클래스에서 사용했던 코드를 가져와서 익명 클래스로 변경해보자. package nested.local; import java.lang.reflect.Field; public class OuterClass { private int outerInstanceVar = 10; private static in..

지역 클래스

참고자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 www.inflearn.com 지역 클래스는 내부 클래스의 특별한 종류 중 하나이다. 그렇기에 내부 클래스의 특징을 그대로 가진다. 예를 들어, 지역 클래스도 내부 클래스이므로 바깥 클래스의 인스턴스 멤버에 접근할 수 있다. 지역 클래스는 지역 변수와 같이 코드 블럭 안에서 정의된다. 지역 클래스 예시 class Outer { public void process() { int localVar = 0; //지역 변수 class Local {...} ..

중첩 클래스(정적 중첩 클래스, 내부 클래스)

참고자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 www.inflearn.com 클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라고 한다. 중첩 클래스 예시 class Outer { ... class Nested { ... } } 근데 중첩 클래스는 클래스를 정의하는 위치에 따라 다음과 같이 분류한다. 이 네가지가 모두 중첩 클래스라고 불리는데, 여기서 2가지로 분류가 가능하다. 정적 중첩 클래스 (static) 내부 클래스 종류 내부 클래스 지역 클..

Stream API

요즘 Stream API를 사용하면서 얻게 되는 코드 가시성 향상과 코드 라인 간소화가 너무 재밌어진다. 그래서 이것 또한 JAVA에서 기본이 되는 내용 같아서 정리를 하고자한다. Stream API가 필요한 이유 만약, 다음과 같은 배열이 주어졌다면 그리고 그 배열에 어떤 정렬이 필요하다고 할 때 Stream을 사용하지 않고 처리해보자. String[] names = {"choi", "kim", "park", "sung", "jang"}; 이런 배열이 있을 때, 오름차순으로 정렬을 하고 싶다. 그러면 다음과 같은 메서드를 사용해볼 수 있다. Arrays.sort(names); 그리고 이것을 사용해서 실제로 배열을 출력해보기 위해 다음과 같은 코드를 작성한다. String[] names = {"kim"..

날짜와 시간

참고 자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., [사진]국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 www.inflearn.com 날짜와 시간에 대한 작업은 굉장히 아주 많이 어렵고 까다롭다. 왜냐하면 고려할 사항이 무진장 많기 때문인데 윤년, 각 달의 일수, 일광 절약 시간(DST), 타임존(GMT, UTC, ...) 등 고려할 사항이 너무 많다. 그래서 그냥 개발자가 직접 날짜와 시간을 계산하면 99.9%의 확률로 잘못된 계산이 될 것이다. 그래서 이러한 복잡성 때문에 대부분의 현대 개발 환경에서는 날짜와 시간을 처리하기 위해 잘 설계된 라..

Enum

자바는 열거형(Enum Type)을 제공하는데, 이 열거형을 제대로 이해하기 위해서 열거형이 생겨난 이유를 알아보자. 다음과 같은 요구사항이 들어왔다고 생각해보자. 등급별 할인율 적용 BASIC 등급 - 10% GOLD 등급 - 20% DIAMOND 등급 - 30% 이 요구사항을 처리하기 위해 다음과 같은 코드를 작성했다. public class DiscountService { public int discount(String grade, int price) { int discountPercent = 0; if (grade.equals("BASIC")) { discountPercent = 10; } else if (grade.equals("GOLD")) { discountPercent = 20; } els..

Class 클래스

자바에서는 Class 클래스가 있고 이 클래스는 특정 클래스의 정보(메타데이터)를 다루는데 사용된다. Class 클래스를 통해 개발자는 실행중인 자바 애플리케이션 내에서 필요한 클래스의 속성과 메서드에 대한 정보를 조회하고 조작할 수 있다. Class 클래스의 주요 기능은 다음과 같다. 타입 정보 얻기: 클래스의 이름, 슈퍼클래스, 인터페이스, 접근 제한자 등과 같은 정보를 조회할 수 있다. 리플렉션: 클래스에 정의된 메서드, 필드, 생성자 등을 조회하고 이들을 통해 객체 인스턴스를 생성하거나 메서드를 호출하는 등의 작업을 할 수 있다. 동적 로딩과 생성: Class.forName() 메서드를 사용하여 클래스를 동적으로 로드하고, newInstance() 메서드를 통해 새로운 인스턴스를 생성할 수 있다...

728x90
반응형
LIST