Scanner 클래스
java.util.Scanner는 Java의 표준 라이브러리 클래스로, 텍스트 기반 입력을 읽기 위한 도구이다.
Scanner 클래스를 사용하면 표준 입력 스트림(System.in), 파일, 문자열 등에서 데이터를 읽을 수 있다.
class Scanner의 method
여러가지가 있지만, 오늘은 데이터 읽기 메서드만 살펴보자.
// Scanner 객체 생성
Scanner sc = new Scanner(System.in);
sc.next(); // 공백으로 구분된 다음 토큰을 문자열로 반환.
sc.nextInt(); // 다음 정수를 반환.
sc.nextLong(); // 다음 long 값을 반환.
sc.nextDouble(); // 다음 double 값을 반환.
sc.nextBoolean(); // 다음 boolean 값을 반환.
sc.nextLine(); // 다음 라인 전체를 문자열로 반환.
sc.next(Pattern pattern); // 지정한 정규 표현식 패턴과 일치하는 다음 토큰을 반환.
이 중 주의해야 할 두 메서드가 있다.next()
와 nextLine()
이 그것이다.
next()
와 nextLine()
메서드는 입력 데이터의 처리 방식과 개행문자(Enter, \n
)의 역할에 따라서 차이가 있다.next()
메서드는 다음 토큰을 읽고 문자열로 반환하며, 일반적으로 공백 문자를 구분자로 사용한다. 따라서 입력에서 공백 문자 또는 개행 문자를 만나면 그 위치에서 읽기를 멈추고 반환하는 방식이다.
반면, nextLine()
메서드는 현재 위치에서 다음 개행 문자를 찾을 때까지 문자열을 읽어 반환한다. 따라서 입력에서 개행 문자가 나올 때까지 여러 줄을 읽을 수 읽을 수 있으며, 이를 하나의 문자열로 반환한다.
예를 들어, 다음과 같은 상황에서:
void main() {
Scanner sc = new Scanner(System.in);
String a = sc.next();
System.out.println(a);
String a2 = sc.nextLine();
System.out.println(a2);
}
// 입력 input:
// Hello World
// 출력 output:
// Hello
// World
이 코드의 실행과정은 다음과 같다:
- 사용자가 "Hello World"를 입력하고 엔터를 누른다.
sc.next();
는 "Hello"를 반환하고 커서는 " World"의 앞에 위치한다.sc.nextLine();
는 " World"를 반환하고 커서는 다음 줄로 이동한다.
따라서, next()
와 nextLine()
메서드는 필요에 따라 사용함에 있어 주의를 기울여야 한다.
'List instance = ArrayList<>();'
1. List 인터페이스와 그를 상속받은 클래스들
: List 인터페이스는 순서가 있는 데이터 컬렉션으로, 중복된 요소를 포함할 수 있다.
다음은 List 인터페이스와 List를 상속받은 주요 클래스들의 간략한 특징이다.
- List 인터페이스
- Java 컬렉션 프레임워크의 일부, 순서가 있는 데이터를 저장.
- 요소의 중복 허용.
- 요소의 추가, 제거, 검색, 정렬 등 지원.
- ArrayList
- 배열 기반의 동적 배열 자료 구조.
- 요소의 추가/접근 빠름, 랜덤 액세스 가능.
- LinkedList
- 이중 연결 리스트.
- 요소의 추가/제거 효율적. (중간에서도)
- ArrayList 보다 삽입/삭제 성능 우수.
- Vector
- Stack
- CopyOnWriteArrayList
- ImmutableList (Java 9 이상)
(4-7은 다음에...)
2. 다이아몬드 연산자
List<String> list = new ArrayList<>();
List<String> list = new ArrayList<String>();
: 두 코드는 사실상 동일한 의미를 갖는다. Java 7부터는 다이아몬드 연산자(< >
)를 사용하여 컴파일러가 타입을 추론하게 하기 때문에 타입 매개변수를 반복해서 명시적으로 기술할 필요가 없어졌기 때문이다.
즉, 다이아몬드 연산자를 사용한 전자의 코드에서는 컴파일러가 ArrayList의 타입 매개변수를 List으로 자동 추론하여 해당 타입을 할당한다.
보통 다이아몬드 연산자를 사용하는 것이 코드를 간결하게 만들고 가독성을 높일 수 있으므로 권장된다.
class String method
- split( str ):
- 문자열을 지정된 패턴(str, 혹은 정규표현식)을 기준으로 분리하고, 분리된 부분들을 배열로 반환.
- split( str, int_limit )으로 사용하면, str을 기준으로 나누어진 덩어리가 최대 int_limit 개가 되도록 분리하여 배열을 반환한다. 앞에서부터 순서대로 적용하기 때문에, 쿼리문 등을 분리할 때 사용.
- trim():
- 문자열의 앞뒤에 있는 공백 문자(스페이스, 탭, 개행문자 등)를 제거한 새로운 문자열 반환.
- 주로 입력 데이터에서 불필요한 공백을 제거할 때 사용.
- substring( int_start, int_end ):
- 문자열에서 특정 범위의 문자열을 추출하여 반환.
- int_start부터 int_end 직전까지.
- startsWith( str ):
- 문자열 접두사 체크, boolean 값 반환.
- endsWith( str ):
- 문자열 접미사 체크, boolean 값 반환.
- replace( strA, strB ):
- 문자열에서 strA(또는 charA)와 일치하는 모든 부분을 strB(또는 charB)로 대체(replace)한 문자열 반환.
'Study with me > TECH!T back-end shcool 7' 카테고리의 다른 글
week_03 JAVA 7/? (0) | 2023.10.30 |
---|---|
week_02 JAVA 6/? (0) | 2023.10.27 |
week_02 JAVA 4/? (0) | 2023.10.25 |
week_02 JAVA 3/? (1) | 2023.10.24 |
week_02 JAVA 2/? (0) | 2023.10.23 |