Java review(1)

4 minute read

List

List Interface, use generic example.

List<String> list = new ArrayList<>();
list.add("kim");
list.add("kang");
list.add("kim");
System.out.println(list.size());  // return 3
// 똑같은값 중복가능
for(int i = 0; i < list.size(); i++) {
  String str = list.get(i);
  System.out.print(str);  // return kim\nkang\nkim\n
}

리스트는 길이가 정해져 있지 않기 때문에 배열 더할때 유용하다.

Map

key+value pair. 키를 이용해 밸류를 찾도록 설계. 즉 key는 중복불가.

Map<String, String> map = new HashMap<>();
// 저장 메서드
map.put("001", "kim");
map.put("002", "lee");
map.put("003", "kang");
map.put("001", "choi"); // 똑같은 키 두개라서 size()는 3반환
System.out.println(map.size()); // 3
System.out.println(mat.get("001")); // choi
// 기존값을 새로운 값으로 바꾼다 
// 모든 원소(키) 반환
set<String> keys = map.keySet();
Iterator><String> iter = keys.iterator();
while(iter.hasNext()) {
  String key = iter.next();
  String value = map.get(key);
  System.out.println(key + ": " + value); // 001: choi\n002:lee\n003: kang\n
}

Date

Java.Util Package 중의 Date class, 지역화 고려되어있지 않음. Calendar 클래스로 해결. 여러 생성자 Deprecated. 가급적 사용 자제

// Ctrl+Enter
// 기본생성자이용생성, data인트턴스 
Date date = new Date();
date.toString();  // Sun Jan 10 10:31:01 KST 2016
SimpleDateFormat ft = new SimpleDateFormat("yyyy.MM.dd 'at' hh:mm:ss a zzz"); // 
ft.format(data); // 2016.01.10 at 10:34:52 오전 KST
date.getTime();
long today = System.currentTimeMillis();
today;  // 1452389759599
// 시간끼리 빼주면 걸린 시간 계산도 가능. ms단위이다 s아님

Calendar

Calendar class. 많ㅇ느 상수값 존재. ALL_STYLES, ALARM, DATE, … 추상클래스이다. Calendar 리턴된다는 의미는 자식도 리턴될 수 있다는 의미. Gregorian Calendar를 만들어서 리턴함. 미래에 새로운 형식의 표준 달력이 나올 수도 있음. 그러므로 Gregorian Calendar라는것 숨기고 getInstance()라는 함수 통해서 생성시킴.

Calendar cal = Calendar.getInstance(); // 자신을 
cal.get(Calendar.YEAR); // 2016
cal.get(Calendar.MONTH);  // 0  // 0-11월 출력
cal.get(Calendar.HOUR); // HOUR_OF_DAY  // HOUR는 12시 HOUR_OF_DAY는 24시
cal.add(Calendar.HOUR, 5); // 5시간 후 

time Package

Date API 몇몇 클래스 불완전했음. 직관적이지 않은 부분도 있음. 객체 생성할때 인스턴스가 오브젝트 생성할때 . LocalDateTime 클래스

LocalDateTime timePoint = LocalDateTime.now();
timePoint;  // 2016-01-10T18:36:45.025
LocalDate ld1 = LocalDate.of(2012, Month.DECEMBER, 12 );
ld1;  // 2012-12-12

LocalTimelt1 = LocalTime.of(17:18);
lt1; // 17:18

LocalDate theDate = timePoint.toLocalDate();
theDate;  // 2016-01-10
timePoint.getMonthValue();  // 1  // 1-12, getMonth() JANUARY,

IO Package

자바 IO는 Byte/Char단위 입출력으로 나뉨. Byte단위 클래스는 InputStream,OutputStream이라는 클래스 상속받아 구현. Char은 Reader,Writer. 4가지 추상클래스를 받아들이는 생성자에서 받아들이는 io클래스 이용.

  • 데코레이터 패턴: 하나의 클래스를 장식. 생성자에서 감싸서 새 기능 추가할수 있도록 클래스 만드는 방식.
// ByteExam1.java
FileInputStream fis = null;
FileInputStream fos = null;
try{
  fis = new FileInputStream("src/javaIO/exam/ByteExam1.java");
  fos = new FileInputStream("byte.txt");
  int readData = -1;
  while((readData = fis.read()) != -1) {
    fos.write(readData);
  }
} catch (Exception e) {
  e.printStackTrace();
} finally  {
  try{
    fos.close();
  } catch (IOException e) {
    e.printStackTrace();
  }
  try{
    fis.close();
  } catch (IOException e) {
    e.printStackTrace();
  }
}


Tags:

Updated: