본문 바로가기

Java

(29)
[Java] static 초기화 블록 최근 static 초기화 블록이 헷갈리는 일이 있어서 이참에 정리하려고 한다. 초기화 블록은 클래스 내의 멤버변수를 명시적 초기화보다 복잡한 초기화를 할 때 사용되는 방법이다. 초기화블록은 static 초기화 블록과 일반 초기화 블록이 있다. 이 둘을 각 각 클래스 초기화 블록 과 인스턴스 초기화 블록 이라고 한다. 클래스 초기화 블록 클래스 초기화 블록의 선언은 static { } 이런 식으로 하고, 클래스가 로딩되는 시점에 한 번만 실행된다. 인스턴스가 생성되면 heap에 인스턴스의 크기만큼 메모리가 잡히고 초기화 블록이 멤버변수들의 초기화를 수행한다. 그다음에 생성자가 실행된다. 인스턴스 초기화 블록 인스턴스 초기화 블록은 { } 이런 식으로 선언한다. 인스턴스 초기화 블록은 모든 생성자들이 공통적..
[Java] BigInteger 자바에서 long의 범위를 벗어나는 정수를 다루고 싶을 경우에는 java.math 패키지 안에 있는 BigInteger 클래스를 이용하면 된다. BigInteger는 생성자 파라미터로 String을 받으며 수들의 연산은 메서드를 이용한다. 아래는 BigInteger 클래스의 기본적인 사칙연산 메서드들을 정리해 둔 표이다. BigInteger 메서드 설명 BigInteger add (BigInteger val) 덧셈을 한 뒤 BigInteger 타입으로 반환한다. BigInteger subtract (BigInteger val) 뺄셈을 한 뒤 BigInteger 타입으로 반환한다. BigInteger multiply (BigInteger val) 곱셈을 한 뒤 BigInteger 타입으로 반환한다. Big..
[Java] 정규표현식 정규표현식이란 문자열중 원하는 패턴을 가진 문자열을 찾기 위해 해당 문자열의 패턴을 표현한 문자 식입니다. ^ : 문자열의 시작을 나타냅니다. 하지만 [] 안에 사용되면 not으로 쓰입니다. $ : 문자열의 종료를 의미합니다. . : 임의의 한 문자 ex) ^c.$ : c로 시작하는 두 글자 * : * 기호 앞의 문자가 없을 수 도 있고 무수히 많을 수도 있다. ex) ^c.*$ : c로 시작하는 모든 문자 (= c로 시작하는 모든 임의의 문자) // c, c1, c12... + : + 기호 앞의 문자가 1개 이상 ex) ^c.+$ : c로 시작하는 두 글자이상 // c1, c2, ccc ? :? 앞의 문자가 없거나 하나 있다. ex) ^c.?$ : c 이거나 c로 시작하는 두 글자 [] : 문자 집합의..
[Java] java.util.Objects를 이용한 NPE방어 java.util.Objects에는 isNull()과 nonNull(), requireNonNull()이 존재한다. isNull()은 매개변수로 Object 객체를 받아 해당 객체가 null이면 true, 아니면 false를 반환한다. nonNull()은 isNull()과 반대의 기능을 제공한다. requireNonNull()은 매개변수로 받은 객체를 검사하여 null이면 NPE를 torow 합니다. 또한 Objects의 equals()는 비교 당시 null인지 검사도 함께 해 주어 편리하게 사용이 가능하다.