목차
System
System.out은 시스템의 표준 출력 장치를 말한다.
out은 표준 출력 장치, in은 표준입력장치
System.out.println("출력내용");
System.in.read();
위와같은 형식으로 사용한다.
출력하기(.out)
메소드 | 의미 |
println(내용); | 괄호 안의 내용을 출력하고 행을 바꿔라(개행) |
print(내용); | 괄호 안의 내용을 출력만 해라 |
printf("형식 문자열", 값1, 값2....); | 괄호 안 첫번째 문자열 형식대로 내용을 출력하라 개발자가 원하는 형식화된 문자열 출력가능 (ex. 전체 출력 자릿수제한, 소수 자릿수 제한) |
print(내용+\n); == println(내용)
printf 사용방법
printf("형식 문자열", 값1, 값2....);
형식문자열 안에는 다음과 같은 내용이 들어갈 수 있다.
% [argument_index$] [flags] [width] [.precision] conversion(변환문자)
값의 순번 -,+ 전체자리수 소수자릿수
conversion
%conversion은 필수로 작성하고 그외는 생략가능 %는 형식 문자열의 시작을 의미
conversion은 값의 타입에 따라 d(정수), f(실수), s(문자열)을 입력
값1, 값2는 형식화된 문자열에 제공될 내용을 작성
[argument_index$]
형식 문자열에 포함될 값이 2개 이상일 경우에는 값의 순번을 알려줘야한다.
System.out.printf("%1$s, %2$s, %3$s, %4$s, %5$s", "나는", "오늘도", "자바", "공부를", "한다.\n");
System.out.printf("%s, %s, %s, %s, %s", "나는", "오늘도", "자바", "공부를", "한다.");
1$는 첫번째 값 2$는 두번째 값을 의미 생략해도 논리적인 오류는 발생하지 않는다.
flags
빈 자리를 채우는 방법 생략되면 왼쪽이 공백으로 채워지고, -가오면 오른쪽이 공백으로 채워짐
0은 공백대신 0으로 채움
자주 사용되는 형식 문자열
형식화된 문자열 | 설명 | 출력형태 | |
정수 | %d %6d %-6d %06d |
정수 6자리 정수, 왼쪽 빈 자리 공백 6자리 정수, 오른쪽 빈자리 공백 6자리 정수, 왼쪽 빈자리 0 채움 |
123 _ _ _123 123_ _ _ 000123 |
실수 | %10.2f %-10.2f %010.2f |
소수점 이상 7자리, 소수점 이해 2자리 , 왼쪽 빈자리 공백 소수점 이상 7자리, 소수점 이해 2자리 , 오른쪽 빈자리 공백 소수점 이상 7자리, 소수점 이해 2자리 , 왼쪽 빈자리 0 채움 |
_ _ _ _123.45 123.45_ _ _ _ 0000123.45 |
문자열 | %s %6s %-6s |
문자열 6자리 문자열, 왼쪽 빈 자리 공백 6자리 문자열, 오른쪽 빈 자리 공백 |
abc _ _ _ abc abc_ _ _ |
특수문자 | \t \n %% |
탭(tab) 줄 바꿈 % |
% |
입력하기 (.in)
키코드
키코드를 읽기 위해서는 System.in의 read()를 사용
int KeyCode = System.in.read();
* 사용자가 입력한 키의 키코드를 출력해주는 사이트
코드를 작성하여 테스트해보면 키코드중 13과 10이 함께 입력됨을 알수있을 것이다.
이는 캐리지리턴(CR:13)과 라인피드(LF:10)로 구성된 2개의 키코드가 함께 입력되는 것이다.
단점: 키코드를 하나씩 읽기 때문에 2개 시아의 키가 조합된 한글은 읽을 수 없다.
키보드로부터 입력된 내용을 통 문자열로 읽지 못한다.
Scanner
키코드의 단점을 보완하기 위해 Scanner클래스를 사용 사용자로부터 입력받은 데이터를 저장
Scanner sk = new Scanner(System.in);
String inputData = sk.nexLine(); // Enter키 이전까지 입력된 문자열을 읽음
해당코드를 사용하려면 import java.util.Scanner; 패키지 선언문 바로 밑에 임포트가 되어야 사용가능하다.
sk.nextInt();
sk.nextDouble();
sk.nextShort();
sk.nextLong();
sk.nextFloat(); 이 존재한다.