본문 바로가기

JAVA44

[JAVA] 컬렉션 프레임워크 (Collections Framework) 이제까지 대량의 데이터를 저장하기 위해 배열을 사용했습니다. 하지만 배열은 여러 가지 한계점들을 가집니다. 우선 크기가 고정적이어서 지정한 크기보다 더 많은 데이터를 저장하고 싶으면 배열을 다시 생성해야 합니다. 또한, 중간에 데이터를 삽입하고 싶으면 이후 데이터들의 인덱스값을 조정해야 하며, 중간에 데이터를 삭제하면 해당 방이 비어 있게 됩니다. 이러한 한계점들을 보완하고 데이터를 더욱 효율적으로 관리하기 위해 자바에서는 다양한 종류의 컬렉션(Collection) 클래스를 제공하게 됩니다. 컬렉션 프레임워크(Collections Framework)란 대량의 데이터를 저장하는 클래스들을 표준화한 설계를 뜻합니다. ▶ 컬렉션 특징 컬렉션은 배열과 다르게 하나의 컬렉션에 서로 다른 데이터 타입 저장이 가능하.. 2022. 6. 1.
[JAVA] 예외 발생시키기, 사용자 정의 예외 클래스 ▶ 예외 발생시키기 - throw 키워드 시스템이 예외로 인식하지 않는 경우에도 필요에 따라 예외를 강제로 발생시켜야 하는 경우가 있습니다. 이 경우에는 throw 키워드를 이용하여 예외를 명시적으로 발생시켜야 합니다. 주의할 점은, throws 키워드(예외가 발생된 곳에서 예외를 직접 처리하지 않고 호출한 곳으로 예외 처리를 위임)와 구분해야 한다는 것입니다. 다음과 같이 throw 키워드를 사용합니다. 발생시킨 예외는 반드시 예외 처리해야 비정상 종료를 막을 수 있습니다. Exception e = new Exception([인자]); //객체 생성 throw e; //예외 발생시키기 throw new Exception([인자]); //한줄 작성 가능 num 값이 0보다 큰 경우 예외를 발생시키는 프로.. 2022. 6. 1.
[JAVA] 예외 처리 (Exception Handling) ▶ 예외 처리(Exception Handling)란? 일반적으로 에러(error)라고 일컫는 예외(Exception)는 프로그램 실행 중 발생되는 의도치 않은 문제를 의미합니다. 예외가 발생되면 프로그램이 비정상 종료되는데, 예외가 발생되었을 때 프로그램이 비정상 종료되지 않고 정상 종료되도록 처리하는 것을 예외 처리(Exception Handling)라고 합니다. 예외 처리의 목적은 이미 발생된 예외를 수정하는 것이 아닌, 예외가 발생된 이유를 메세지를 통해 사용자에게 알려주고, 프로그램이 끝까지 수행되어 정상 종료되도록 하는 것입니다. 다음은 자바에서 제공하는 예외처리 클래스들간의 상속관계를 계층구조로 표현한 것입니다. 예외 클래스의 최상위 클래스는 Throwable 클래스이고, 하위로 Error 클.. 2022. 5. 31.
[JAVA] enum (열거형 상수) enum은 열거형 상수로서, 데이터가 몇 개의 한정된 상수값으로 구성될 때 주로 사용됩니다. 이전에는 public static final로 지정된 일반적인 상수를 사용하였으나, JDK 1.5 버전부터 enum을 사용할 수 있게 되었습니다. enum을 이용하면 반드시 정의된 값만 사용하도록 설정할 수 있으며, 만약 잘못된 값을 설정할 경우 컴파일 시 에러가 발생하여 개발 단계에서 문제점을 곧바로 찾을 수 있게 됩니다. enum 은 다음과 같이 생성하고 사용할 수 있습니다. 열거한 상수값에는 0번부터 자동으로 인덱스값이 부여됩니다. public enum 타입 {상수값1, 상수값2, 상수값3}; 타입 변수명 = 타입.상수값; 다음은 enum의 대표적인 메소드입니다. 메소드 설명 name() enum 상수의 이.. 2022. 5. 30.
[JAVA] Scanner (스캐너) 클래스 자바에서 키보드로부터 데이터를 입력받는 방법 중 하나로 Scanner 클래스를 이용하는 방법이 있습니다. Scanner 클래스는 다음과 같이 생성합니다. Scanner scan = new Scanner(System.in); 다음은 Scanner 클래스의 주요 메소드입니다. 메소드 설명 next() 문자열을 공백 기준으로 한 단어씩 반환 nextLine() 한 줄 전체를 반환 nextInt() int 값으로 받아서 반환 nextDouble() double 값으로 받아서 반환 nextBoolean() boolean 값으로 받아서 반환 close() 자원 반납 import java.util.Scanner; public class ScannerTest { public static void main(String[.. 2022. 5. 29.
[JAVA] Calendar, SimpleDateFormat 클래스 ◆ Calendar 클래스 자바에서 날짜 데이터를 처리하기 위해 Calendar 클래스와 Date 클래스를 사용합니다. 하지만 Date 클래스 내 많은 메소드가 deprecated 되었기 때문에 날짜 조작은 주로 Calendar 클래스를 이용합니다. 다음은 Calendar 클래스의 주요 상수와 메소드입니다. 상수 설명 Calendar.YEAR 년도 반환 Calendar.MONTH 월 반환 (0~11) Calendar.DAY_OF_MONTH 일 반환 Calendar.DAY_OF_WEEK 요일 반환 Calendar.AM_PM 오전/오후 반환 Calendar.HOUR 시간 반환 Calendar.MINUTE 분 반환 Calendar.SECOND 초 반환 메소드 설명 getTime() 현재날짜를 Date 타입으로.. 2022. 5. 29.
[JAVA] Wrapper (래퍼) 클래스 자바에서는 8개의 기본 데이터 타입과 동일한 값을 표현할 수 있는 8개의 Wrapper 클래스를 제공합니다. 기본 데이터를 클래스로 둘러싸서 클래스가 제공하는 변수 및 메소드를 활용하고자 하는 목적으로 사용됩니다. 기본형 Wrapper 클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean ◆ Wrapper 클래스의 주요 메소드 //문자열 "123"을 정수 123으로 변경 int strInt = Integer.parseInt("123"); System.out.println(strInt+10); //문자열 "3.14F"를 실수 3.14F로 변경 float strFloat = .. 2022. 5. 29.
[JAVA] StringTokenizer, split(), toCharArray() ◆ 문자열 나누기 - StringTokenizer, split() java.util.StringTokenizer는 문자열을 특정 구분자로 분리할 수 있는 클래스입니다. StringTokenizer 클래스를 다음과 같이 생성하고 사용할 수 있습니다. 생성자의 첫 번째 값으로 문자열을 설정하고, 두 번째 값으로 구분자를 지정합니다. 구분자를 생략하면 공백을 기준으로 분리합니다. StringTokenizer st = new StringTokenizer("홍길동,이순신,유관순", ","); String 클래스의 split() 메소드와 매우 비슷한 기능을 제공하는데, 다음과 같이 다소 차이가 있습니다. 구분 구분한 문자열 여러 구분자로 구분시 구분자가 두 문자 이상 공백 문자열 포함 StringTokenizer .. 2022. 5. 29.
[JAVA] StringBuffer 클래스 (StringBuilder) 지금까지 문자열을 생성할 때 String 클래스를 이용했습니다. 그런데 String 클래스는 한 번 생성된 문자열은 변경되지 않는다는 불변(immutable) 특징을 가집니다. 다양한 메소드로 문자열을 가공해도 기존 문자열은 변경되지 않고 새롭게 변경된 문자열이 생성되기 때문에, 문자열 연산시 메모리를 비효율적으로 사용하게 됩니다. 따라서 문자열이 자주 변경되거나 문자열 연산작업이 많은 경우에는 StringBuffer 또는 StringBuilder 클래스를 사용하는 것이 좋습니다. 이 클래스들은 문자열이 변경되어도 새로운 문자열이 생성되지 않고 저장된 문자열이 동적으로 변경되는 가변(mutable) 특징을 가집니다. StringBuffer와 StringBuilder의 사용법은 거의 유사합니다. Strin.. 2022. 5. 28.
[JAVA] 상속 - 추상 클래스와 인터페이스 상속을 적용하면 코드를 재사용하고 다형성, 오버라이딩 메소드 등을 이용하여 재사용성 및 유지보수를 향상시킬 수 있습니다. 하지만 상속은 강제성이 없습니다. 하위 클래스에서 상위 클래스의 메소드를 상속받아 사용하지 않고 자신만의 메소드를 사용하게 되면 상속의 장점을 얻을 수 없게 됩니다. 이 때문에 상위 클래스의 메소드를 반드시 사용하게끔 강제할 필요성이 생기는데, 추상 클래스와 인터페이스를 사용하면 상위 클래스의 메소드를 반드시 사용하도록 강제할 수 있어 재사용성 및 유지보수를 더욱 향상시킬 수 있게 됩니다. ◆ 추상 클래스 (abstract class) 클래스가 설계도라면, 추상 클래스는 미완성 설계도라고 할 수 있습니다. 블록({ }) 이 없는 추상 함수(abstract method)를 포함할 수 있.. 2022. 5. 28.