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 사용.(형변환이 필요없다)
'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 |