본문 바로가기

Java/자바 기초

(12)
12. 지네릭스, 열거형, 애너테이션 지네릭스(Generics)다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다.객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 지정한 타입 외에 다른 타입의 객체가 저장되면 에러가 발생한다.//TV객체만 저장할 수 있는 ArrayList를 생성ArrayList tvList = new ArrayList();tvList.add(new Tv()); //OKtvList.add(new Audio()); //컴파일 에러. Tv 외에 다른 타입은 저장 불가 제네릭스의 장점- 타입 안정성을 제공한다.- 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 지네릭 타입은 클래스와 메서드에 선언할 수 있다.타입 변수는 ‘..
11. 컬렉션 프레임웍 컬렉션 프레임웍컬렉션 프레임웍이란 데이터 군(群)을 저장하는 클래스들을 표준화한 설계이다.- 컬렉션(collection)은 다수의 데이터, 즉 데이터 그룹을 의미한다.- 프레임웍은 표준화된 프로그래밍 방식을 의미한다. 컬렉션 프레임웍은 컬렉션(다수의 데이터)을 다루는데 필요한 다양하고 풍부한 클래스들을 제공한다.컬렉션 프레임웍의 핵심 인터페이스컬렉션 프레임웍에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스(List, Set, Map)을 정의하였다. 인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였다.인터페이스인터페이스List순서가 있는 데이터의 집합. 중복 허용 O ..
10. 날짜와 시간 & 형식화 날짜와 시간 java.util.Date 날짜와 시간을 다룰 목적으로 JDK1.0부터 제공된 클래스이며, Date의 메서드는 대부분 deprecated되었지만, 여전히 쓰이고 있다. java.util.Calendar Date클래스를 개선한 클래스로 JDK1.1부터 제공되었지만, 몇 가지 단점이 존재한다. java.time패키지 기존의 Data클래스와 Calendar클래스의 단점을 개선한 새로운 클래스들이 JDK1.8부터 추가되었다. 새로 추가된 java.time패키지만 배우면 좋을 텐데, 아쉽게도 Calender와 Date는 자바의 탄생부터 지금까지 20년 넘게 사용되어왔고, 지금도 계속 사용되고 있으므로 배우지 않고 넘어갈 수 없다. Calender와 Date의 기능은 소소한 예제들을 이해하고 필요할 때..
9. java.lang 패키지와 유용한 클래스 Object클래스 java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있으며, java.lang패키지의 클래스들은 import문 없이 바로 사용 가능 하다. Object클래스는 모든 클래스의 최고 조상이므로, Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. Object클래스는 멤버변수는 없고 오직 메서드 11개만 가지고 있다. Object클래스의 메서드 - equals( ) equals( )는 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 알려주는 역할을 한다. 아래의 코드는 Object클래스에 저의되어 있는 equals메서드의 실제 내용이다. public boolean equals(Object obj) { return (this=..
8. 예외처리 프로그램 오류 프로그램 오류 또는 에러는 프로그램이 실행 중 오작동이나 비정상적인 종료를 초래하는 원인이다. 프로그램 오류는 발생시점에 따라 아래와 같이 구분된다. - 컴파일 에러: 컴파일 시에 발생하는 에러 - 런타임 에러: 실행 시에 발생하는 에러 - 논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 아래와 같이 두 가지로 구분한다. - 에러(error): 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 - 예외(exception): 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 예외 클래스의 계층구조 오류(Exception과 Error) 클래스의 계층 구조 모든 예외의 최고 조상은 Exception 클래스이다...
7. 객체지향 프로그래밍 II 상속상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다.상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 상속을 구현하는 방법은 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스 이름을 'extends'와 함께 써주면 된다.class Parent {}class Child extends Parent{ ...} 위의 Parent 클래스와 Child 클래스는 서로 상속 관계에 있다고 하며, Parent 클래스는 '조상 클래스', Child 클래스는 '자손..
6. 객체지향 프로그래밍 I 객체지향 언어객체지향언어의 가장 큰 장점은 ‘코드의 재사용성이 높고 유지보수가 용이하다.’는 것이다.앞으로 상속, 다형성 같은 객체지향개념을 학습할 때 재사용성과 유지보수 그리고 중복된 코드의 제거, 이 세가지 관점에서 보면 보다 쉽게 이해할 수 있을 것이다. 객체지향언어의 주요 특징은 다음과 같다. - 코드의 재사용성이 높다.  새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. - 코드의 관리가 용이하다  코드 간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. - 신뢰성이 높은 프로그래밍을 가능하게 한다.    제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며,  코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.클래스와 ..
5. 배열 배열이란?배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것이다.변수와 달리 배열은 각 저장공간이 연속적으로 배치되어 있다.배열의 선언와 생성원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 대괄호[]를 붙이면 된다.대괄호[]는 타입 뒤에 붙여도 되고 변수이름 뒤에 붙여도 되는데, 타입에 붙이는 쪽을 선호한다.타입[] 변수이름, ex) int[] scores;타입 변수이름[], ex) int scores[];배열을 선언한 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다. 배열을 생성하기 위해서는 연산자 ‘new’와 함께 배열의 타입과 길이를 지정해주어야 한다.new 타입[길이]in..
4. 조건문과 반복문 if문만일(if) 조건식이 참(true)이면 괄호{} 안의 문장들을 수행하라.if (조건식) { //조건식이 참(true)일 때 수행될 문장들을 적는다. }블럭{ }괄호{ }를 이용해서 여러 문장을 하나의 단위로 묶는 것블럭 안에 문장이 하나뿐일 경우, 괄호{ }는 생략가능하다.if-else문기존의 if문에 'else{ }'가 추가된 형태이며, 조건식의 결과가 참이 아닐 때, else{ }의 괄호안 문장을 수행하라는 뜻이다.if (조건식) { //조건식이 참(true)일 때 수행될 문장들을 적는다. } else {//조건식이 거짓(false)일 때 수행될 문장들을 적는다. }if-else if문if-else if문은 한 문장에 여러 개의 조건식을 사용가능하게 한다.if (조건식1) { //조건식1이 참(..
3. 연산자 연산자의 종류연산자의 우선순위- 단항 연산자 > 이항 연산자  ex) -x + 3 에서 단항 연산자인 ‘-’는 이항 연산자인 ‘+’ 보다 우선순위가 높다. - 곱셈, 나눗셈 > 덧셈, 뺄셈  ex) x + 3 * y 에서 곱셈 연산자인 ‘*’는 덧셈 연산자인 ‘+; 보다 우선순위가 높다.- 산술 연산자 > 비교 연산자  ex) x + 3 > y - 2 에서 비교 연산자인 ‘>’ 는 산술 연산자인 ‘+’, ‘-’ 보다 우선순위가 높다. - 비교 연산자 > 논리 연산자  ex) x > 3 && x ’, ‘ - 대입연산자는 우선순위가 가장 낮습니다.  ex) result = x + y * 3에서 대입 연산자인 ‘=’는 제일 우선순위가 낮다.증감 연산자 ++ 과 --- 증가 연산자(++) 피연산자의 값을 1 증..