본문 바로가기

JAVA

[ JAVA ] Date / Calendar - 날짜 사용하기 자바 표준 API에는 날짜 정보와 관련된 클래스들이 있다. Date 클래스는 특정 시점의 날짜를 표현하는 클래스로 특정 시점의 연도, 월, 일, 시간 정보가 저장된다. Calendar 클래스는 달력을 표현한 클래스로 해당 운영체제의 Calendar 객체를 얻으면 연도, 월, 일, 요일, 오전/오후, 시간 등의 정보를 얻을 수 있다.. Date 클래스 객체 간에 날짜 정보를 주고 받을 때 매개 변수나 리턴 타입으로 주로 사용된다. Date now = new Date(); 인스턴스화하여 생성할 수 있고 Date 객체의 toString() 메소드는 영문으로 된 날짜를 리턴하기 때문에 원하는 날짜 형식의 문자열을 얻고 싶다면 java.text. 패키지의 SimpleDateFormat 클래스와 함께 사용하는 것이.. 더보기
[ JAVA ] 컬렉션 프레임워크 - List, Set, Map 컬렉션 프레임워크 자바가 자료구조(Data Structure)를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util 패키지에서 제공하는 것. + 컬렉션은 객체의 저장을 프레임워크란 사용 방법을 정해놓은 라이브러리를 말한다. 컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. 이 인터페이스들은 컬렉션클래스를 사용하는 방법을 정의한 것이다. List 컬렉션 배열과 비슷하게 객체를 인덱스로 관리한다. 배열과 차이점은 저장 용량이 자동으로 증가하며 객체를 저장할 때 자동 인덱스가 부여된다는 것이다. 또한 추가, 삭제, 검색을 위한 다양한 메소드를 제공한다. List 컬렉션은 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조한다. 그.. 더보기
[ JAVA ] 열거형 - 한정된 값만을 갖는 타입 열거타입 선언 열거 타입을 선언을 위해서는 먼저 열거 타입 이름을 정하고 그 이름으로 소스 파일(.java)를 생성 후 선언한다. 보통 이름은 카멜 표기법에 맞춰 써준다. public enum 열거타입이름 { ... } + 카멜 표기법 이름을 첫 글자를 대문자로 하고 나머지는 소문자로 구성하는 것, 만약 여러 단어로 구성된 이름이라면 각 단어의 첫 글자는 대문자로 구성한다. 적어놨을 때 생긴 모양이 마치 낙타 등을 닮았다하여 카멜 표기법이라 한다. 예시 1 ( 열거타입 Week) public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 열거타입이름 : Week, 열거 상수 : MONDAY, TUESDAY, WED.. 더보기
[ JAVA ] 정적멤버와 static - 고정된 멤버와 메소드 정적(static)은 '고정된'이라는 의미를 가지고 있다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 정정필드, 정적 메소드라고 한다. 정적 멤버 선언 public class 클래스{ // 정적 필드 static 타입 필드 [ = 초기값]; //정적 메소드 static 리턴 타입 메소드( 매개변수선언, ... ) { ... } } 정적 필드와 정적 메소드를 선언하려면 필드와 메소드 선언 시 static 키워드를 추가적으로 붙이면 된다. 정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 저장할 때 클래스별로 관리하게 된다. 따라서 클래스의 로딩이 끝나면 바로 사용할 .. 더보기
[ JAVA ] 다형성(polymorphism) - 서로 다른 타입의 값으로 다양한 결과를 도출하는 성질 재정의와 타입 변환을 이용하면 객체 지향 프로그래밍의 매우 중요한 특징인 다형성을 구현할 수 있다. 참조를 어떻게 시켜주느냐에 따라 다양한 형태를 가질 수 있다. 다형성 객체 사용 방법을 동일하지만 실행결과가 다양하게 나오는 성질을 말한다. 다형성을 구현하는 기술은 메소드 재정의와 타입 변환이다. 자식 객체가 재정의된 메소드를 가지고 있을 경우, 부모 타입으로 자동 타입 변환 후 메소드를 호출하면 재정의된 자식 메소드가 호출되면서 다양한 실행결과를 가져올 수 있다. 자동타입변환 부모타입 변수 = 자식타입; 필드의 다형성 다형성 구현을 위해 자식 타입으로 사용해도 될 것을 부모 타입으로 변환해서 사용할 수 있다. 필드의 타입을 부모 타비으로 선언하면 다양한 자식 객체들이 저장될 수 있기 때문에 필드 사용 .. 더보기
[ JAVA ] Casting (upCasting/downCasting) - 객체타입끼리의 형변환 예시를 들어보자 추상 클래스 Car class / 인터페이스 Fly / Car class를 상속받은 Sedan / Car class와 Fly interface를 상속받은 FlyingCar 추상 클래스 Car class package Casting; public abstract class Car { public abstract void carRun(); } 인터페이스 Fly package Casting; public interface Fly { public void fly(); } Car class를 상속받은 Sedan package Casting; public class Sedan extends Car{ @Override public void carRun() { System.out.println("세단이.. 더보기
[ JAVA ] 인터페이스(interface) - 특정 행위에 대한 추상화 인터페이스(interface) 특정 행위에 대한 추상화 물리적 형태는 class와 동일하나 선언방법에 차이가 있다. 행위를 좀 더 쉽게 사용하기 위해서 만들어준다. 상속받는 클래스는 행위를 정의해줘야만 한다. 필드 정의는 가능하나 의미를 가지지는 않는다. 내용이 없는 메서드를 생성한다. 추상화되지만 abstract를 적어주지 않는다. 인터페이스를 상속받는 클래스는 인터페이스 내의 행위를 할 수 있다. 클래스는 상속하는 것을 나는 곧 너라는 의미로 인터페이스를 상속하는 것은 특정 행위를 할 수 있다는 의미로 해석되어 두 상속은 완전이 다른 의미를 가진다. 인터페이스 생성 [ public ] interface 인터페이스이름 { ... } 상수 필드 선언 [ public static final ] 타입 상수이.. 더보기
[ JAVA ] 상속 - 중복코드 줄이기 클래스 상속 선언법 class 자식클래스 extends 부모클래스{ // 필드 // 생성자 // 메소드 } 부모생성자 호출 super() 자식클래스(매개변수선언, ...){ super(매개값, ...); } 메소드 재정의 자식클래스에서 부모 클래스의 메소드를 다시 정의하는 것으로 부모 메소드와 동일한 리턴 타입, 메소드 이름, 매개 변수 목록을 가져야 한다. 접근 제한을 더 강하게 재정의 할 수 없다. 새로운 예외를 throws 할 수 없다. 부모 메소드 호출 super.부모메소드(); 상속할 수 없는 final 클래스 클래스를 선언할 때 final 키워드를 class 앞에 붙이면 이 클래스는 최종적인 클래스이므로 상속할 수 없는 클래스가 된다. (부모 클래스가 될 수 없어 자식 클래스를 만들 수 없다... 더보기