1. System.out.println("디버그 메시지");  -> Stream을 이용 출력. 속도가 느림.  > Log4j의 로그를 이용한 디버그 메시지 출력.-> Channel 이용한 출력. 속도가 빠름. 설정만 변경해 로그가 나오지 않도록 가능.


2. 정확한 연산을 할 때는 double과같은 실수를 사용하면 안된다. 그러므로 BigDecimal을 써야한다.  BigDecimal 객체 생성시 매개변수는 실수는 무조건 문자열로 넣어야한다.

 ex) BigDecimal(String val)


3. NaN - Not a Number  - 실수끼리 연산에서 유효하지 않은 연산 시 리턴.  

예) 실수를 0으로 나눔,  String str= "NaN";  double d = Double.valueOf(str); //str을 double로 형변환           

    "하나" : NumberformatException           "NaN" : 오류 발생 안하고 NaN으로 형변환 된다.

    isNaN(val) / isInfinite(val) 로 유효성 체크를 해야한다.


4. *날짜는 compareTo(Date)로 비교하면된다.    

  * compareTo(Date) :Date 객체를 비교하는 메서드    

  * start.compareTo(end) : start가 end보다 이후면 양수리턴 /start와 end 가 같으면 0 리턴 /start가 end보다 이전이면 음수 리턴 


5. Java에서 시간이 오래 걸리는 작업 Best,  

 1) 스트림을 이용한 입출력  1-100만까지 소수 계산 파일에 저장: 스트림 1시간 걸림 ㅡㅡ          ArrayList에 저장 : 2초  

 2) 동기화. Lock설정, Lock해제 하는게 엄청 시간걸림.   1-100만까지 소수 계산 Vector에 저장(Vector는 넣고 뺄 때 자동으로 Lock이 걸리고 해제하는 동기화한다.) :20분

 3) 객체 생성. 반복문에서 객체생성하면안되! 시간이 오래걸려.  이것도안되! String str="Hi";       str += "Hello";

 > StringBuffer sb1 = new StringBuffer(str);    sb1.append("Hello");    str = sb1.toString();  @ 한번 생성된 String은 문자열이 불변이다!!!!! 중요한거야!!(StringBuffer 갹채는 값을 변할 수있어. StringBuffer는 String[] 형태로 되어있다.)   위 같은 경우엔  StringBuffer sb = new StringBuffer("Hi");  sb.append("Hello");

 @@ String을 StringBuffer로 사용하는 습관을 들여보자.


6. try~ catch     

 1)   try {    if(Double.isNaN(val)){     throw new IllegalArgumentException("NaN안됨");    }       } catch (IllegalArgumentException e) {    val = 0.0;   }

> catch를 실행하면 자바가 Exception이 해결이 되었다고 생각한다!!!! 그러므로 이 후의 로직이 수행이 된다.  즉, Exception 처리 후 이후의 로직을 진행 시키고자 할 때 사용.   

 2)  if(Double.isNaN(val)){     throw new IllegalArgumentException("NaN안됨");    }      

> catch 문이 없음으로 Exception이 해결이 안되었다고 자바가 생각한다. 그러므로 이후의 로직이 수행되지않는다.     

---> 이 둘의 차이는 이 후 로직의 진행 여부에 따라 선택해서 사용하면된다.


7. 

 - class가 final로 선언되어있으면 상속 불가능.    

 - final 한 객체가 아닌경우 clone() 메서드를 사용하는것이 위험할수 있다.    

 - 그럼 내가 만들 클레스에서 clone을 쓰려면 final로 선언하는게 적절한 것 같음.      

http://valley.egloos.com/viewer/?url=http://hahaha333.egloos.com/3913387 (clone 메소드는 신중하게 오버라이드하자)


8. Generic 사용.(형변환이 필요없다)

http://cafe.naver.com/jjdev/353


'IT노트 > JAVA' 카테고리의 다른 글

equalsIn(String value, String... compares)  (0) 2015.03.04
개발자 보수교육4일차  (0) 2015.02.24
코딩습관  (0) 2015.02.22
자바 공부를 위한 즐겨 찾기  (0) 2015.02.19
[POI] JAVA로 엑셀을 다뤄보자 : 네이버 카페  (0) 2015.02.18
Posted by wychoi
,