본문 바로가기

Java

HashMap Map 이터페이스를 구현한 구현체 중 하나 키와 값을 저장하는 자료구조 키와 값은 모두 객체다. int, char 와 같은 기본형은 들어올 수 없다. 값은 중복 저장 불가하여 저장하면 새로운 값으로 대체된다. 해싱을 사용하기에 데이터 검색에 뛰어난 성능을 가진다. 시간 복잡도 multi thread 환경에서는 사용하면 의도치않게 잘못된 값을 사용하게 되는 큰 문제 발생 대신 ConcurrentHashMap 사용해야한다. Hashmap의 key는 hash function을 거쳐 고유한 bucket index 생성하여 빠른 저장, 검색이 가능 중복된 index 가 생기는 것을 Hash 충돌이라 부른다. 충돌이 발생하면 내부적으로 entry간에 chaining 방식으로 해결하게 된다. (Java 8) 실제 값.. 더보기
Annotation 정리 annotation이란 주석이라는 뜻으로, 코드에 다른 프로그램을 위한 미리 약속된 형식으로 포함 즉 다른 프로그램을 위한 메타 데이터 프로그래밍 언어에 영향이 없다. 다른 프로그램에 유용한 정보를 제공한다. 자바 5부터 제공 annotation 예시 - @Override @Override는 컴파일러에게 부모 클래스의 메서드를 오버라이드 했다는 것을 알려준다. 그렇기 때문에 실행 전 오류를 알 수 있다. 또한 코드에서 명시적으로 상속 메서드가 무엇인지 쉽게 파악할 수 있다. public class Parent { public int calculate(int a, int b) { return a + b; } } public class Child extends Parent { @Override public .. 더보기
java int를 char로 형변환하기 1. (char) 형변환 int value = 1; // value을 아스키코드로 변환한 값 -> 의도치 않은 문자 나옴 char valueToChar = (char)(value); // '0' 아스키코드를 value 만큼 증가시킨 후 변환한 값 char valueToChar2 = (char)(value + '0'); 2. Character.for(int digit, int radix) // Character.forDigit('9', 10진수) Character.forDigit('9', 10) 더보기
static, final, static final 특징 회사 코드를 봤을 때 'static final' 형태로 한쌍으로 자주 사용되고 있는 경우가 많았다. 특히 상수들을 정의해둔 클래스에서 많이 보였다. 있는 그대로 보자면 인스턴스 생성 전에 immutable 상수를 할당하여 다른 객체가 만들어질 때 사용되었다. 이 참에 전체적으로 정리를 하고자 한다. static(정적)이란 static이란 고정된 의미로 static이 붙은 클래스 멤버는 해당 class에 고정됨을 의미 class에 고정된다는 것은 프로그램이 실행되고 메모리에 적재될 때 class와 같이 메모리에 적재된다. 따라서 class로 인스턴스를 생성하기 전부터 static 멤버는 사용가능하다. static 멤버가 할당되는 메모리는 static area 다. 모든 객체가 공유할 수 있다. 로딩되면서부.. 더보기
PATH, CLASSPATH, BUILDPATH에 대해 path란 운영체제가 사용하는 환경변수 (environment variable) 실행 가능한 파일 또는 자바 바이트 클래스 경로 리눅스, 맥 등 터미널에서 set CLASS_PATH=... 로 설정 가능 echo $'환경변수 이름' 으로 설정된 환경변수 값 확인 가능 echo $CLASS_PATH classpath란 classpath 또한 환경변수로 java compiler가 사용 runtime시 compiler가 클래스파일을 찾는 경로 (정확히는 class loader) JVM이 프로그램을 실행할 때 class를 찾기 위해 사용 terminal에서 javac로 실행 시 디폴트는 현재 경로 참고 OS의 환경변수로 설정한 CLASS_PATH를 참고할 수 있다. (bash_profile, profile,,).. 더보기
[Java] 예외 처리 - custom exception custom exception이란 예외 클래스에는 자바에서 미리 정의한 예외 클래스들이 있다. -> 표준 예외 그리고 개발자가 직접 예외 클래스를 정의하여 사용할 수 있는데 이를 custom exception이라고 한다. ( 사용자 정의 예외 ) 비지니스 로직에서 발생가능한 예외를 더 구체적으로 알려주기 위한 목적 참고 링크 https://tecoble.techcourse.co.kr/post/2020-08-17-custom-exception/ https://ssoco.tistory.com/69 custom exception 만드는 팁 설명에 앞서 가능하다면 표준예외를 사용하는 것을 우선 추천한다. 표준예외는 가독성이 좋으며, 충분히 의미 전달이 되며, 메모리 사용량 감소하며, 로딩 시간이 줄어든다. 하지.. 더보기
[Java] 예외처리 시 주의 팁 예외 부분을 공부하다가 외국 사이트에서 예외 처리 시 실수할 수 있는 대표적인 예시들을 설명을 잘 설명되어 있어서 정리하게 되었다. https://stackify.com/common-mistakes-handling-java-exception/ 7 Common Mistakes You Should Avoid When Handling Java Exceptions Handling an exception in Java is one of the most common but not necessarily one of the easiest tasks. Here are several common mistakes you should avoid. stackify.com 1. 구체적인 예외 클래스 사용하기 java.lang.E.. 더보기
[Java] 시간(Time)/날짜(Date) 제공 클래스 및 시간 비교 개발하다가 데이터의 상태값과 시간을 기준으로 상태값이 정상인지 어떻게 찾을지 구글링 중 자바 8부터 제공되는 클래스들을 알게되었다. 원래는 Date나 Calender클래스를 Java 8 이전에는 사용했었다. 그런데 마침 개발환경 Java 버전이 8이라 이번에 사용해보고 블로그에 간단히 정리해보려고 한다 1 종류 1 LocalDateTime 2 LocalDate 3 LocalTime 4 ZonedDateTime 1 ~ 3은 이름에서 알 수 있듯이 시스템 기준 Date / Time 을 말한다. 4 ZonedDateTime은 LocalDateTime + 타임존/시차를 말한다. 따라서 우리나라보다는 미국, 캐나다과 같이 summer time이 있는 국가에 제공되는 서비스를 개발할때 고려하게 되는 부분이라고 생각.. 더보기