어노테이션 만들기 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Retry { int maxRetryCount() default 3; int maxAbc() default 10; } @interface로 어노테이션 클래스를 선언한다 @Retention을 통해 어느 시점에 적용할지를 설정한다. @Target을 통해 어떤 곳에 적용할지를 설정한다. (클래스, 메서드, 변수 등등) 어노테이션은 내부적으로 값을 가질 수 있고, 여기에 값을 주면 옵션으로 값을 설정할 수 있다. 타입 + 이름 + () + default형태로 선언한다 어노테이션 사용하기 @Retry(maxRetryCount = 10, maxAbc =..
보호되어 있는 글입니다.
문자열 Concat 시간복잡도 확인하기 String += String vs .join
기본 타입과 참조 타입 변수는 기본 타입(Primitive)을 저장하는 변수와 참조(Reference) 타입을 저장하는 변수가 있다. 기본 타입 변수는 값을 실제로 변수에 바로 저장하는 방식이다. 기본 타입 변수에 들어갈 수 있는 값은 정수, 실수 등이 있다. 반면에 참조 타입 변수는 변수에 값을 저장하는 것이 아닌 객체의 주소값을 저장한다. 참조 타입 관련 더 알아보자 먼저 우리가 사용하는 String은 Primitive Type이 아닌 객체 타입이다. String은 실제로 Heap 메모리 영역에 객체를 하나 생성하고, 그 객체에 우리가 넣은 값을 넣어주는 형태로 동작한다고 한다. 이를 참고해서 다시 한번 참조변수에서 대해서 알아본다면, 참조변수에서 '=='을 사용하면, 그 의미는 같은 주소를 가리키고..
Try Catch 일단 Try 내에 있는 코드를 실행해본다. 예외가 발생할 경우 Catch에 있는 구문으로 넘어가고, Catch의 () 안에 있는 것과 동일한 Exception Type이면 그 구문에서 예외처리를 해준다. Try Catch Finally Finally 블록은 항상 실행된다. 이걸 활용한 예외처리 방식이다. 주로 I/O Stream을 할 때 많이 사용한다. I/O Stream을 하게 되면, 열었던 파일을 반드시 닫아줘야한다. 그런데 열었던 파일을 닫아주기 위해서는 파일이 열려있는 상태여야한다. 즉, 예외 처리 안에서 또 다시 예외처리가 발생하면서 코드가 굉장히 지저분해진다. 이 때 Finally 구문을 쓴다. Finally는 무조건 사용이 되기 때문에, 파일이 열든 열리지 않든 Finall..