Back-End/Java

    [Java/자바] BigDecimal 정리

    https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net 위의 문제를 풀다가 BigDecimal을 처음 사용해봤는데 잘 정리해두면 유용하게 쓰일 것 같아서 포스팅합니다! BigDecimal? - 자바에서 숫자를 정밀하게 저장하고 표현할 수 있는 객체입니다. - 자바에서 소수는 정밀도의 한계로 인해 값이 유실되는 경우가 있는데, 그것을 방지할 수 있습니다. - 단점은 느린 속도 & 복잡한 사용 방법을 제외하면 없습니다. (그만큼 좋음!) BigDecimal 기본 상수 BigDecimal은 객체이기 때문에 초기화가 기본 타입보..

    [자바/JAVA] 래퍼 클래스(Wrapper Class)

    래퍼 클래스(Wrapper Class) 란? 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(Reference type)으로 나누어진다. 대표적인 기본 타입으로 char, int, float, double, boolean 등이 있고 참조 타입으로 class, interface 등이 있는데 간혹 기본 타입의 데이터를 객체로 표현해야 하는 경우가 있다. 이럴 때 기본 자료 타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(Wrapper class)라고 한다. 자바에서 모든 기본타입은 값을 갖는 객체를 생성할 수 있는데, 이런 객체를 포장 객체라고 한다. 이 객체는 기본 타입의 값을 내부에 두고 포장을 하기 때문에 그렇게 불리는데, 래퍼 클래스로..

    [자바/JAVA] StringBuffer / StringBuilder

    StringBuffer란? String 클래스와는 다르게 StringBuffer 클래스는 인스턴스의 값을 변경할 수 있는 가변 클래스(mutable class)이다. StringBuffer는 내부적으로 버퍼라는 독립적인 공간을 가지는데 기본값은 16이다 (문자 16개 저장 가능) 물론 생성자를 통해 버퍼의 크기를 설정해줄 수도 있다. String으로 문자 결합 시 새로운 인스턴스가 계속해서 생기기 때문에 메모리 공간도 낭비되고 속도도 느려지게 되는데 StringBuffer 클래스는 기존 인스턴스에 문자열을 추가할 수 있기 때문에 공간 낭비도 없고 속도도 빨라집니다. StringBuffer에서 append() 메서드를 통해서 문자열을 추가할 수 있습니다. StringBuffer sb = new String..

    [자바/JAVA] String 클래스

    자바에서 문자열을 다루기 위해 제공하는 String 클래스는 정말 중요하기 때문에 잘 알아두는 게 중요합니다 ㄹㅇ로! Immutable이란? String 클래스의 가장 큰 특징은 "Immutable" 하다는 것입니다. Immutable은 불변의 라는 의미를 가지고 있습니다. 즉, 한 번 생성된 String 인스턴스는 값을 읽어 올 수만 있고 변경은 할 수 없다는 말과 같습니다. 예를 들어 "+" 연산자를 이용해서 문자열을 결합하는 경우 인스턴스 내의 값이 바뀌는 것이 아니라 새로운 값을 가진 String 인스턴스가 만들어지는 것입니다. 덧셈 연산자를 이용해서 문자열을 결합 시 여러 개의 String 인스턴스가 생성되어 메모리에 올라가기 때문에 결합 횟수는 되도록이면 최소화하는 것이 메모리에 부담이 가지 ..

    [자바/JAVA] 문자열 분리 (StringTokenizer) 🔥

    평소에 많이 사용되지만 본인은 자주 사용하지 않았던 StringTokenizer을 정리해보려고 한다. StringTokenizer는 하나의 문자열을 여러 개의 문자열로 분리하기 위해 사용한다. 문자열을 분리하기 위한 기준 문자를 구분자라고 한다. 구분자로 분리된 문자열을 토큰이라고 함 StringTokenizer는 항상 문자 타입을 리턴하기 때문에 숫자로 사용 시에는 Integer.parseInt()를 사용하여 파싱 해서 사용해야 한다. 복잡한 형태의 구분자를 사용해서 문자열을 나눌 시에는 정규식을 사용하는 메서드를 사용하는 것이 좋다. (split, Scanner) 생성자 StringTokenizer(String str) 구분자를 받지 않는 생성자 StringTokenizer(String str, St..