Stay Hungry Stay Foolish

자바/자바 중급 11

[자바 중급] 11. Generic 1

Generic자바에서 제네릭(generics)은 클래스, 메소드, 인터페이스를 선언할 때 데이터 타입을 파라미터로 받을 수 있게 해주는 기능이다. 제네릭을 사용하면 코드의 재사용성과 안정성을 높일 수 있다. 주요 특징은 다음과 같다.컴파일 타임 타입 체크제네릭은 컴파일 시점에 타입을 체크하여, 잘못된 타입이 사용되는 것을 방지한다. 예를 들어 List으로 선언하면 이 리스트에는 오직 String 타입만 담을 수 있다.타입 안정성제네릭을 사용하면 캐스팅(casting)을 피할 수 있어 타입 안정성을 높일 수 있다. 예를 들어, 제네릭을 사용하지 않는 List에서 객체를 꺼낼 때는 (String)처럼 캐스팅해야 하지만, 제네릭을 사용하면 그런 과정이 필요 없다.코드 재사용성여러 타입에서 사용할 수 있는 코드..

[자바 중급] 10. 예외 처리 2

코드를 통해 오류 발생 시뮬레이션과, 예외 처리 흐름을 알아보자.  사용자의 입력을 통해 오류를 발생시킨 후, 예외를 따로 처리하지 않고 밖으로 던진다.  오류 발생 시뮬레이션 1️⃣ 1. 어떤 종류의 오류가 발생했는지 담는 클래스public class NetworkClientExceptionV2 extends Exception { private String errorCode; public NetworkClientExceptionV2(String errorCode, String message) { super(message); //어떤 오류가 발생했는지 담는다. this.errorCode = errorCode; } //에러 코드를 조회할 수 있게 추가 p..

[자바 중급] 09. 예외 처리 1

예외 처리가 필요한 이유외부 서버와 통신할 때 다음과 같은 다양한 문제들이 발생할 수 있다.네트워크 오류 등으로 인해 외부 서버와 연결에 실패데이터 전송에 문제가 발생 자바의 예외 처리 메커니즘 제공자바는 프로그램 실행 중에 발생할 수 있는 예상치 못한 상황, 즉 예외(Exception)를 처리하기 위한 메커니즘을 제공한다. 이는 프로그램의 안정성과 신뢰성을 높이는 데 중요한 역할을 한다.  자바의 예외 처리는 다음 키워드를 사용한다. 그리고 예외를 다루기 위한 예외 처리용 객체들을 제공한다. trycatchfinallythrowthrows 예외 계층 구조  Exception : 체크 예외애플리케이션 로직에서 사용할 수 있는 실질적인 최상위 예외이다.Exception과 그 하위 예외는 모두 컴파일러가 체..

[자바 중급] 08. 중첩 클래스, 내부 클래스 2

지역 클래스(Local class)지역 클래스는 내부 클래스의 종류 중 하나로 내부 클래스의 특징을 그대로 가진다. 따라서 지역 클래스도 바깥 클래스의 인스턴스 멤버에 접근할 수 있다.class Outer { public void process() { //지역 변수 int localVar = 0; //지역 클래스 class Local {...} Local local = new Local(); }}  특징지역 클래스는 지역 변수처럼 코드 블럭 안에 클래스를 선언한다.지역 클래스는 지역 변수에 접근할 수 있다.자신의 인스턴스 변수에 접근할 수 있다.자신이 속한 코드 블럭의 지역 변수 혹은 매..

[자바 중급] 07. 중첩 클래스, 내부 클래스 1

중첩 클래스, 내부 클래스클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이것을 중첩 클래스(Nested Class)라 한다.class Outer { ... //중첩 클래스 class Nested { ... }}  중첩 클래스 종류중첩 클래스는 총 4가지가 있고, 크게 2가지로 분류할 수 있다. 중첩 클래스의 의미는 정적과 내부 클래스를 모두 포함한 것을 말하며, 정적 중첩 클래스는 말 그대로 정적 중첩 클래스를 의미한다. 내부 클래스는 내부, 지역, 익명 클래스를 포함한 것을 말한다.정적 중첩 클래스 내부 클래스 종류내부 클래스 : 바깥 클래스의 인스턴스의 멤버에 접근지역 클래스 : 내부 클래스의 특징 + 지역 변수에 접근익명 클래스 : 지역 클래스의 특징 + 클..

[자바 중급] 06. 날짜와 시간

날짜와 시간 라이브러리아래의 표는 oracle에서 제공하는 문서로 날짜와 시간 라이브러리이다.  LocalDate, LocalTime, LocalDateTime앞에 Local (현지의, 특정 지역의)이 붙는 이유는 세계 시간대를 고려하지 않아서 타임존이 적용되지 않기 때문이다.  특정 지역의 날짜와 시간만 고려할 때 사용한다.LocalDate : 날짜만 표현할 때 사용한다. 년, 월, 일을 다룬다. 예) 2013-11-21 LocalTime : 시간만을 표현할 때 사용한다. 시, 분, 초를 다룬다. 예) 08:20:30.213초는 밀리초, 나노초 단위도 포함할 수 있다. LocalDateTime : LocalDate 와 LocalTime 을 합한 개념이다. 예) 2013-11-21T08:20:30.213..

[자바 중급] 05. 열거형 Enum

타입 안전 열거형 패턴 - Enumenum은 enumeration의 줄임말로 변역하면 열거라는 뜻이고, 어떤 항목을 나열하는 것을 뜻한다. 타입 안전 열거형 패턴을 사용하면 나열한 항목만 사용할 수 있다. public class ClassGrade { public static final ClassGrade BASIC = new ClassGrade(); public static final ClassGrade GOLD = new ClassGrade(); public static final ClassGrade DIAMOND = new ClassGrade();} 위 코드는 타입 안전 열거형 패턴을 직접 구현한 것이다. BASIC, GOLD, DIAMOND라는 상수를 선언했다. static을 사용해서 상수를..

[자바 중급] 04. Wrapper class

기본형의 한계자바는 객체 지향 언어인데 int나 double같은 기본형은 객체가 아니기 때문에 다음과 같은 한계가 있다.객체가 아님 : 기본형 데이터는 객체가 아니기 때문에, 객체 지향 프로그래밍의 장점을 살릴 수 없다. 또한 기본형은 객체가 아니므로 메서드도 제공할 수 없다.null 값을 가질 수 없음 : 기본형 데이터 타입은 null값을 가질 수 없다.기본형의 한계를 해결하기 위해 도입된 것이 래퍼 클래스이다.  Wrapper class(래퍼 클래스)특정 기본형을 객체로 감싸서(Wrap) 만든 클래스를 래퍼 클래스라고 한다. 래퍼 클래스를 직접 만들 수도 있지만, 자바가 기본으로 제공해준다. 다음은 int 래퍼 클래스를 직접 만든 클래스이다.  직접 만든 래퍼 클래스public class MyInte..

[자바 중급] 03. String 클래스

String 클래스자바에는 문자열을 다룰 수 있는 String 클래스를 제공한다. String 클래스를 통해 문자열을 생성하는 방법은 2가지가 있다.쌍따옴표를 사용 : " "객체를 생성 : new String(" ")int, char같은 기본형은 소문자로 시작하지만 String은 대문자로 시작하는데 이는 참조형을 뜻한다. 참조형이라는 건 다른 말로 변수 하나에 String 인스턴의 참조값만 들어갈 수 있다는 말이다. 따라서 String 클래스를 사용할 때 객체를 생성해야 하지만 자바는 성능 최적화를 위해 문자열 풀을 사용하여 쌍따옴표(" ")만을 사용할 수 있게 했다. 기능(메서드) String 클래스에는 속성과 기능을 가진다. 따라서 문자열로 처리할 수 있는 다양한 기능을 제공한다. 주요 메서드는 다음..

[자바 중급] 02. 불변 객체

기본형과 참조형의 공유자바의 데이터 타입은 크게 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다.기본형 : 하나의 값을 여러 변수에서 절대로 공유하지 않는다.참조형 : 하나의 객체를 참조값을 통해 여러 변수에서 공유할 수 있다. 공유 참조와 사이드 이펙트사이드 이펙트(Side Effect)는 프로그래밍에서 어떤 계산이 주된 작업 외에 추가적인 부수 효과를 일으키는 것을 말한다.사이드 이펙트는 프로그래밍에서는 부정적인 의미로 사용된다. 프로그램의 특정 부분에서 발생한 변경이 의도치 않게 다른 부분에 영향을 미치기 때문에 디버깅이 어려워지고 코드의 안정성이 저하될 수 있다. 사이드 이펙트가 발생한 경우의 예제package lang.immutable.address;p..

[자바 중급] 01. Object 클래스

Object 클래스자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object 클래스이다. 부모를 상속받으려면 'extends'를 명시적으로 붙여 상속을 받아야 한다. 그러나 Object 클래스는 'extends'를 붙이지 않아도 상속된다. 즉 부모가 없으면 묵시적으로 Object 클래스를 상속받는다.  Object 클래스가 최상위 부모 클래스인 이유는 다음과 같다. 공통 기능 제공객체의 정보를 제공하는 toString()객체의 같음을 비교하는 equals()객체의 클래스 정보를 제공하는 getClass()기타 여러가지 기능다형성의 기본 구현 Object 다형성의 장점어떤 객체든지 인자로 전달할 수 있다는 장점이 있다. 한계Object는 모든 객체를 대상으로 다형적 참조를 할 수 있다. Object를 ..