Java

    [Java] 예외 종류

    Java에서 예외는 Error, RuntimeException, OtherException 3가지 종류로 나뉜다. 먼저 Error는 메모리 부족(OutOfMemoryError), 스택오버플로우(StackOverFlowError)등 JVM 또는 하드웨어적인 시스템의 문제로 발생하는 것을 의미한다. 다시 말해 개발자의 영역이 아님 시스템 영역의 문제이기 때문에 Error가 발생하면 프로그램을 종료시키는 것이 통상적이다. 다음으로는 큰 분류로 Exception이다. Error와 Exception의 가장 큰 차이점은 개발자가 프로그램적으로 처리할 수 있느냐 없느냐의 차이이다. 즉, 예외가 발생하더라도 프로그램이 비정상 종료되는 일을 막을 수 있다. Exception은 RuntiException과 OtherExc..

    [Java] volatile 키워드

    특징 keyword로 Java 변수를 Main Memory에 직접 저장한다. 변수의 값을 Read 할 때마다 CPU Cache에 저장된 값이 아닌 Main Momory에서 직접 읽는다. 변수의 값을 Write할 때마다 Main Memory에 직접 작성한다. 필요성 멀티 스레드 환경에서 하나의 스레드가 Read&Write 하고 다른 스레드에서 Read 할 때, 해당 변수에 대한 최신 값을 보장한다. 예시 class Object { public int count = 0; } 위 Object를 공유하는 두 개의 스레드 A, B가 있다고 가정하자. 스레드 A는 count의 값을 읽고 1씩 증가시키는 연산(Read&Write)을 하고 스레드 B는 count를 읽는 연산만 수행한다(Read). A는 count값을 ..

    [Java] Scanner와 BufferedReader

    Scanner Java에서 데이터를 입력받을 때, 가장 손쉽고 빠르게 입력받을 수 있도록 도와주는 클래스이다. 이 Scanner 클래스는 java.util 패키지에 포함되어 있으며 문자, 정수, 실수를 입력받을 수 있도록 도와주고, 무엇보다 쓰기 너무 편하다. Scanner의 객체를 만들 때는 System.in을 넣어 만드는데 이 System.in은 입력값을 바이트 단위로 입력받는 것을 의미한다. 한번 코드로 알아보자. Scanner scanner = new Scanner(System.in); 이렇게 객체를 만든 뒤, scanner를 통하여 next() 메서드를 이용하여 입력값을 받을 수 있는데, 공백 이전까지의 값이 입력된다. 또한 각 입력 값을 받을때 원하는 자료형으로 입력받도록 메서드를 지원한다. ..