쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git에 올려두었습니다.
Calendar
- java.util 패키지에서 제공
- abstract 클래스로 직접 객체화가 되지 않는다.
- 단편적인 날짜 정보를 얻을 때
// 1. 객체화
// Calendar클래스의 객체를 얻는 일을 method 호출
Calendar cal = Calendar.getInstance();
// 2. Constant를 넣어 사용
// constant로 하는 일을 표현
cal.get( Constant );
// 가독성 향상
int year = cal.get( Calendar.YEAR );
// 가독성 저하
int year = cal.get( 1 );
* Calendar 클래스가 제공하는 일 - get method 사용
// 년
cal.get( Calendar.YEAR );
// 월 - 월은 0월부터 시작
cal.get( Calendar.MONTH );
// 일
cal.get( Calendar.DAY_OF_MONTH );
// 오전/오후 오전이면 0 오후면 1
cal.get( Calender.AM_PM );
// 요일 - 오늘이 이번 주에 몇 번째 날인가? 일요일부터 1로 시작하여 토요일 7로 끝난다.
cal.get( Calendar.DAY_OF_WEEK );
// 오늘이 이번 년도에 몇 번째 날
cal.get( Calendar.DAY_OF_YEAR );
// 시간 1~12
cal.get( Calendar.HOUR );
// 시간 12~24
cal.get( Calendar.HOUR_OF_DAY );
// 분
cal.get( Calendar.MINUTE );
// 초
cal.get( Calendar.SECOND );
* Calendar 클래스로 다른 날짜 설정 - set method 사용
Calendar cal = Calendar.getInstance(); //시스템에 설정된 현재 날짜
// set 사용
cal.set( field, 변경할 값 );
// 년도만 변경
cal.set( Calendar.YEAR, 2021 );
// 월 변경 - 자바는 0월부터 시작하기 때문에 사람이 생각하는 월보다 1 적게 설정한다.
cal.set( Calendar.MONTH, 0 );
// 일 변경
cal.set( Calendar.DAY_OF_MONTH, 5 );
// 년, 월, 일 한 번에 변경
cal.set( 년, 월, 일 );
// 달의 마지막 날
int lastDate = cal.getActualMaximum( Calendar.DATE );
random
- 난수를 뽑기 위해서 만들어진 클래스
- java.util 패키지에서 제공
// 1. 생성
Random r = new Random();// 모든 경우의 난수 세트를 만들어 놓고 method를 호출하면 하나씩 꺼내서 제공
( seed random : 입력되는 수에 대해 다른 난수를 생성하여 얻기 때문에 다른 난수를 예측하기 어렵다. )
// 2. 일
// 정수의 난수 뽑기 -21억 ~ + 21억 사이의 값이 나온다.
r.nextInt();
// 범위의 난수 얻기
// 음수와 양수가 나온다.
r.nextInt()%범위의 수;
// 양수만 나온다.
r.nextInt( 범위의 수 ) ;
// 실수의 난수
r.nextDouble() * 발생하고 싶은 수;
r.nextFloat();
// 불린 난수
r.nextBoolean();
JCF (Java Collection Framework)
- 자료구조(Data Structure) : 데이터를 처리하기 위해서 고안한 형식
- java.util 패키지에 관련 인터페이스와 클래스를 제공
- Collection 계열, Map 계열을 제공
- 값의 추가와 삭제가 쉽다
- 가변 길이형(값이 추가되면 길이가 늘어나고, 값이 삭제되면 길이가 줄어든다.)
- JDK1.5부터 Generic, autoboxing, unboxing이 제공된다.
* List
- 일차원 배열처럼 생성, 입력되는 데이터가 순차적으로 입력된다. 중복 값을 저장할 수 있다.
- 인덱스를 사용해서 방의 값을 얻을 수 있다.( 검색의 기능이 있다. )
- 구현 클래스 : ArrayList, Vector, LinkedList
* Set
- 일차원 배열처럼 생성, 데이터가 순차적으로 입력되지 않는다. 중복 값을 저장할 수 없다.
- 방의 값을 얻을 수 없다.( 검색의 기능이 없다. )
- 구현 클래스 : HashSet
* Map
- 이차원 배열처럼 생성, 키와 값을 쌍으로 구성 => KVP ( Key Value Pair )
- 키를 사용하여 값을 검색 ( 키는 유일하고, 값은 중복 가능 )
- 구현 클래스 : Hashtable, HashMap등 제공
List
- interface : 구현클래스가 반드시 구현해야 할 일의 목록만 가진다.
- 중복값을 저장할 수 있으며, 검색의 기능이 있다.
* ArrayList
- 값을 순차적으로 저장할 때 주로 사용하고 속도 빠름
(Multi Thread에서 동시접근 가능 동기화x)
* Vector
- 값을 순차적으로 저장할 때 주로 사용하고 속도 느림
(Multi Thread에서 동시접근 불가능 동기화)
* LinkedList
- 값을 이전의 값 사이에 넣어서 사용할 때 주로 사용
// 1. 생성
// <> : Generic이라고 함
ArrayList <E> al = new ArrayList<E>();
List<E>al = new ArrayList<E>();
Generic
- JDK1.5부터 지원되는 기능
- 입력되는 데이터형에 대한 제한을 설정하는 것( 기본형 데이터형은 사용할 수 없다. )
- JDK1.4까지는 JCF에 Object을 할당할 수 있다. => 모든 객체를 값으로 저장할 수 있다.
* Generic 사용 안 할때
// 1. 생성
List list = new ArrayList();
// 2. 값 추가
list.add( 값 );
// 3. 값 얻기
list.get( 인덱스 );
* Generic 사용 할 때
// 1.생성 - 방에 특정 데이터형만 입력받도록 설정
List<E> list = new ArrayList<E>();
// JDK1.7부터는 생성하는 쪽에 Generic의 데이터형을 생략할 수 있다.
List<E> list = new ArrayList<>();
// 기본형 데이터형인 경우 Wrapper Class로 Generic을 설정
// Generic은 동일하게 설정해줘야 한다.
List<String> list = new ArrayList<String>();
List<Integer> list = new ArrayList<Integer>();
autoboxing
- JDK1.5부터 추가된 기능
- JDK1.4까지는 객체만 저장할 수 있었음
- JCF에 기본형 데이터형을 입력하면, Compiler가 기본형 데이터형에 대응되는
Wrapper Class를 선택하여 객체로 만들어 추가해주는 기능
list.add( 10 );// JDK1.4는 error발생 -> autoboxing을 지원하지 않음
list.add( 10 );
// JDK1.5부터는 autoboxing을 지원
// list.add( new Integer( 10 ) );와 같은 문장
// JDK1.9부터는 Wrapper class의 생성자가 비추천으로 변경
// list.add( Integer.valueOf( 10 ) );와 같은 문장으로 변경
- wrapper class : 값만 사용할 수 있는 기본형 데이터형을 객체로 만들어 다양한 기능을
사용할 수 있도록 만든 클래스 int i = 10; i변수를 사용하면 10이라는 값만 사용한다.
Integer = new Integer(10);// i 객체는 Integer class가 제공하는 다양한 기능을 사용 가능
Unboxing
- JCF에서 값을 얻을 때 Wrapper class가 들어 있다면 기본형 데이터형으로 변환되어 나오는 것
list.add(10);
int i = list.get( 0 ); // int i = ( (Integer)list.get(0) ).intvalue();로 자동으로 바꿔줌
List 사용
// 1. 생성
List<String> list = new ArrayList<String>();
// 2. 값 할당 - Generic으로 설정된 데이터형만 입력 가능
// list의 크기가 자동 증가( 가변 길이형)
list.add( "안녕" );
list.add("java");
list.add("안녕"); //중복데이터 저장 가능
// 3. 방의 크기( 방의 개수 )얻기 => 일괄 처리
list.size();
// 4. 방의 값 삭제
// 특정 방의 값 삭제
list.remove( 인덱스 );
// 중복값이 있는 경우 왼쪽에서 오른쪽으로 진행하면서 같은 값이 있으면 삭제
// 중복 값이 있는 경우에는 처음 값 삭제하고 종료
list.remove( 값 );
// 모든 방의 값 삭제 - 방의 값이 삭제되면 리스트의 크기가 줄어든다.
list.clear();
// 5. 배열로 복사( List의 값을 배열로 보내는 것 )
list.toArray( 배열명 );
// 일괄처리 - List는 index가 0번부터 존재
for( int i = 0, i<list.size(); i++ ){
list.get(i);
}
//향상된 for문
for( 데이터형 변수명 : list ){
변수명
}
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
1229/AWT, Swing (0) | 2022.12.29 |
---|---|
1228/Set, Map (0) | 2022.12.28 |
1226/문자열, 날짜 클래스 (0) | 2022.12.26 |
1223/클래스 사용 (0) | 2022.12.23 |
1222/Override, Interface (0) | 2022.12.22 |