본문 바로가기

언어/JAVA5

[JAVA] Effective JAVA. 9장 일반적인 프로그래밍 원칙 1편(item 57, 58, 59, 60) 개요 회사 업무로 진행하는 이펙티브 자바 세미나 자료 내용이다. 책과 블로그를 참고하였으며, 자세한 코드는 여기서 확인할 수 있다. GitHub - cobinding/effective-java-semina: [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드 [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드. Contribute to cobinding/effective-java-semina development by creating an account on GitHub. github.com 9장은 내용이 많아서 1편과 2편으로 나누어서 포스팅할 예정이다. item 57. 지역변수의 범위를 최소화하라. 코드 가독성과 유지보수성을 위해 지역변수의 유효 범위를 최소.. 2024. 3. 24.
[JAVA] 날짜/시간 클래스 알아보기(Date, LocalDateTime, ZoneDateTime) 개요 회사에서 새로운 기능 추가를 위해 팀원 분이 Date를 쓴 것을 발견하였다. 이펙티브 자바 스터디에서 Date클래스는 사용을 지양해야 한다고 공부했기에 이 부분에 대해 자세한 기록을 남겨 곱씹어야겠다고 다짐했다. DATE java의 util 클래스다. 공식 문서를 살펴 보면, Date 클래스가 구현한 인터페이스는 다음과 같다. Serializable: 특별한 메소드를 포함하지 않는 마커 인터페이스다. 객체의 상태를 저장하거나(메모리에 존재하는 객체를 디스크에 저장) 네트워크를 통해 전송할 수있도록 바이트 스트림으로 변환하는 것이다. Clonable: 이또한 마커 인터페이스다. 객체를 복사할 때 사용된다. Comparable: Date의 compareTo 메소드를 지원하는 인터페이스다. DATE 클래.. 2024. 3. 8.
[JAVA] Effective Java. 6장 열거 타입과 애너테이션 개요 회사 업무로 진행하는 이펙티브 자바 세미나 자료 내용이다. 책과 블로그를 참고하였으며, 자세한 코드는 여기서 확인할 수 있다. GitHub - cobinding/effective-java-semina: [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드 [JAVA] 인턴십 업무로 진행한 Effective-JAVA 세미나 코드. Contribute to cobinding/effective-java-semina development by creating an account on GitHub. github.com item34. int 상수 대신 열거 타입을 사용하라 같은 그룹으로 묶이는 int 타입 상수들은 나열하지 말고, enum 클래스를 활용하자. 열거 타입은 그 자체가 클래스이.. 2024. 1. 12.
[JAVA] 익명 클래스(Anonymous Class), 람다식(Lambda) 개요 Effective Java 7장에서 등장하는 개념을 공부하기 위한 포스팅이다. 1-1) 익명 클래스(Anonymous Class) 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체다. 분명히 Java Spring을 공부할 때는 코드의 재사용성을 고려하며 프로그래밍을 해야 좋은 개발자라고 배웠다. 그렇다면 재사용이 불가능하고 확장성도 좋지 않은 익명클래스를 왜 사용하는 걸까? 프로그램 내에서 일시적으로 사용되는 객체 처리에 사용한다. 확장성을 활용하는 것이 유지보수에서 더 불리할 경우에 사용한다. 해당 블로그 에서 이를 이해하기 위한 아주 좋은 예시를 들고 있다. 일부를 발췌해서 이해해보자. 1-2) 확장성이 필요없는 극단적인 예시 (출처) 곤충이라는 부모클래를 상속받는 거미 구현 클래스가 있다... 2023. 10. 22.
[JAVA] JAVA String | StringBuilder | 문자열 결합 연산 | 문자열 연산의 복잡도 문자열 연산 최적화 산학 프로젝트 냉시피 개발 중 내가 크롤링한 값을 저장하기 위해 어떤 자료형을 쓸 지 많이 고민을 했는데, 그 과정 중 알게된 java StringBuilder에 대해 정리해보려고 한다. 처음에는 크롤링값: [재료이름, 재료수량]을 Map으로 묶어서 리스트로 저장을 하려고 했다. 하지만 걱정되었던 것이 1. 크롤링 자동화가 안되었는데 복잡도가 O(n)이면 성능 상 좋지않다.(크롤링 시 N=6만을 넘고, 그 이상이 될 확률이 매우매우 높은 상황.) 2. 이걸 도메인으로 구현을 해야하는데 어떤 column 값에 리스트를 어떻게 저장할까 였고, 이 문제를 해결하기 위한 조사를 통해 StringBuilder라는걸 알게 되었다. 결론적으로 [재료이름, 재료수량]을 하나의 문자열로 결합해야 한.. 2023. 5. 19.