Old Posts226 [Java] 열거 타입(Enum) 사용법 및 예제 프로그래밍 언어에서는 열거 타입을 제공하는 경우가 많다. 요일이나 계절처럼 한정된 개수의 값들을 하나로 묶어서 사용하고 싶을 때, 열거 타입을 사용하면 편하다. 자바에서는 Enum 타입을 통해서 이런 종류의 데이터를 사용할 수 있다. enum 사용법 enum 선언 enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, STURDAY, SUNDAY; } enum 타입의 데이터를 선언하기 위해서는 'enum' 키워드를 이용해야한다. enum 키워드 뒤에 열거 타입의 이름을 쓰고, 중괄호를 연 다음 값들을 나열해서 사용하면 된다. enum의 정의에 나열된 값들은 0부터 순차적으로 1씩 증가하는 값을 갖게 된다. 자바에서는 enum의 값들을 클래스처럼 사용할 수도 .. 2021. 6. 29. [Java] 리소스 번들(ResourceBundle) 사용법 및 예제 자바 프로그램을 작성할 때, 로케일을 통한 국제화를 지원해야할 경우가 있다. 에러 메시지를 로케일에 따라 한국어로 찍었다가 일본어, 영어로 출력하는 경우를 생각해볼 수 있다. 자바는 리소스 번들(ResourceBundle)을 통해 이런 기능을 지원한다. ResourceBundle 리소스번들은 한번에 여러 로케일(언어와 국가)을 처리할 수 있다. 쉽게 현지화할 수 있고, 다른 언어로 번역해서 사용할 수 있다. 향후에 더 많은 로케일이 지원되어 쉽게 수정할 수 있다. 국제화 지원을 위한 프로퍼티 파일은 다음과 같이 구성되어야 한다. ${프로퍼티명}_${언어코드}_${국가코드}.properties ${프로퍼티명}_${언어코드}.properties ${프로퍼티명}.properties 예를 들어, 'message.. 2021. 6. 29. [Java] 파일 입출력 (FileReader, FileWrite) 사용법 및 예제 자바 애플리케이션을 작성할 때, 파일에 데이터를 출력하거나 파일로부터 데이터를 읽어오는 일은 흔하다. '[Java] 입력 스트림(InputStream)과 출력 스트림(OutputStream)'에서 언급했던 문자 기반 스트림인 FileReader, FileWriter 클래스를 이용한 파일 입출력을 정리해보자. 1. FileReader (파일 읽기) FileReader 클래스는 문자 기반 스트림 객체다. 텍스트 파일을 자바 프로그램으로 읽어올 때 사용한다. 문자 단위로 데이터를 읽기 때문에 텍스트 파일만 읽을 수 있다. File file = new File("파일경로"); FileReader fileReader1 = new FileReader(file); FileReader fileReader2 = new .. 2021. 6. 29. [Java] Maven 빌드시 "warning: [options] bootstrap class path not set in conjunction with 1.7" 메이븐(Maven) 프로젝트를 빌드할 때, 다음 경고 메시지가 출력되는 경우가 있다. "warning: [options] bootstrap class path not set in conjunction with 1.7" 메이븐 프로젝트에서 사용한 자바 버전과 빌드할 때 사용한 자바 버전이 다른 경우에 발생한다. 예를 들어 JDK 1.7 버전 기준으로 메이븐 프로젝트 코드가 작성되었다고 하자. 만약 접속한 환경에서 JAVA_HOME이 JDK 1.8 경로를 가리키고 있으면 메이븐 프로젝트와 자바 버전이 맞지 않게 된다. JDK 버전을 여러개 사용하는 경우는 생각보다 흔하다. 해결 방법으로는 메이븐 빌드를 할 때, 메이븐 프로젝트에 명시되어 있는 자바 버전으로 JAVA_HOME 환경변수를 맞춰주면 된다. 2021. 6. 28. [Java] 정규표현식 사용법 및 예제 - Pattern, Matcher 자바에서 정규표현식(Regular Expression)'을 사용해보자. 1. 정규표현식(Regular Expression) 정규표현식 혹은 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용되는 언어다. 정규 표현식은 텍스트 편집기나 스크립트 언어에서 문자열의 검색과 치환을 위해 지원하고 있다. 특히 Perl 같은 스크립트 언어는 언어 자체에서 강력한 정규표현식을 구현하고 있어, 문자열, 텍스트 처리에 특화된 스크립트를 작성할 수 있다. 자바 역시 프로그래머가 정규표현식을 사용할 수 있도록 여러가지 유틸을 제공하고 있다. 2. 자바 정규표현식 자바 프로그래밍에서 정규표현식을 작성하기 위해서 java.util.regex 패키지에 있는 클래스들을 사용하면 된다. 주로 Pattern 클래스와 Matc.. 2021. 6. 28. [Java] JVM on-heap 메모리와 off-heap 메모리 자바 프로그램에서 생성된 객체는 '힙(Heap)'이라는 메모리 영역에 생성된다. 힙 영역에 생성된 객체는 'GC(Garbage Collector)'의 관리를 받으며 사용되지 않는 경우 GC에 의해 다시 회수된다. 1. on-heap 메모리 우리가 일반적으로 알고 있는 '힙(Heap)' 메모리 영역이 on-heap 영역에 해당된다. 자바 프로그램에서 'new' 연산 등을 이용해 생성된 객체는 힙 영역에 생성된다. C, C++의 경우라면 객체의 생성과 소멸을 프로그래머가 관리해줘야한다. 반면 자바의 경우 GC(Garbage Collection) 알고리즘에 의해 자연스럽게 회수된다. 프로그래머는 객체의 메모리 회수, 메모리 릭(Memory Leak) 등을 걱정하지 않아도 된다는 장점이 있다. 하지만 GC 알고.. 2021. 6. 28. [Java] final 키워드의 의미와 예제 자바 코드에서 자주 볼 수 있는 final 키워드에 대해서 정리해보자. final은 '최종적'이라는 의미를 갖고 있는 단어다. 자바에서는 final 키워드를 멤버 변수와 클래스, 메소드 그리고 메소드 인자에 붙일 수 있다. 각각이 의미하는 바에 대해서 알아보자. 1. final 멤버변수 클래스를 선언할 때 멤버 변수의 앞에 final 키워드를 붙일 수 있다. private final int number = 0; 이 경우 변수에 값 할당을 딱 한번 할 수 있다. final 멤버 변수에 값을 할당하는 방법에는 필드 선언시하는 것과 생성자를 통해서 할당하는 것이 있다. 만약 멤버 변수를 final로 선언하고, 선언부와 생성자에서 초기화하지 않으면 컴파일 에러가 발생한다. 이렇게 값이 할당된 멤버변수의 값은 다.. 2021. 6. 27. [Java] this 키워드의 의미 및 사용법 자바에서 'this'라는 키워드는 '객체 자기자신'을 의미한다. 주로 3가지 패턴으로 사용된다. 1. 생성자 혹은 메소드의 인자(parameter)와 객체의 속성이 같은 경우 다음 자바 코드를 보자. public class Person { private int age; void setAge(int age) { this.age = age; } } Person 클래스에 setAge()라는 메소드를 정의하는 코드다. setAge() 메소드의 인자 이름이 'age'인데 이는 Person 클래스의 멤버 변수인 age와 동일하다. 이 경우 어떤 것이 멤버 변수이고 어떤것이 인자인지 구별하기 위해 this 키워드를 앞에 붙여준다. this는 현재 객체를 의미하고, this.age는 현재 객체의 멤버 변수를 의미한다... 2021. 6. 26. [Java] 입력 스트림(InputStream)과 출력 스트림(OutputStream) - java.io 패키지 자바 프로그램은 외부에서 데이터를 읽거나 외부로 데이터를 쓰는 작업을 할 수 있다. 예를 들어 콘솔 입력을 받거나 모니터에 결과를 출력한다던가, 네트워크나 파일에서 데이터를 읽거나 쓰는 경우는 매우 흔하다. 이런 데이터의 입출력은 '스트림(Stream)'이라는 개념을 통해 수행된다. (Java8부터 도입된 스트림 기능과 혼동하지말자. 여기서 말하는 스트림은 입력 스트림(InputStream)과 출력 스트림(OutputStream)에 대한 내용이다) 1. 자바의 입출력 스트림(IOStream) 스트림(Stream)은 개울, 시내라는 명사와 '흐르다'라는 동사의 의미를 가지고 있는 단어다. 데이터의 입출력 관점에서보면 소스에서 타겟으로 데이터가 흘러가는 모양을 생각하면 편하다. 소스(Source)에서 생성된.. 2021. 6. 25. 이전 1 ··· 14 15 16 17 18 19 20 ··· 26 다음