2022-03-03
헝가리언 표기법: 변수 앞에 접두어를 붙여 변수 성격을 표현한다.
boolean bOk = (”파리”==”새”); ← 논리형
int nMoney = 100; ← 정수형
char pName = “홍길동”;
변수: Variable (가변값)
상수: Constant (불변값)
System.out.print(값); // 출력만
System.out.println(); // 출력하고 줄바꿈
System.out.printf(); // 형식대로 출력
System - 클래스명 out - 객체명 print - 메서드명
클래스(System): 변수, 객체, 메서드 포함한 형식 자료형
객체형(out): Object (실체)
메서드(method): 함수(기능)
논리형 자료형: boolean
상수: true or false
출력서식 : %b(소문자) or %B(대문자)
System.out.printf("%b\n", true);
System.out.printf("%b %B \n", true, true);
boolean bOk = 3>2;
System.out.printf("3 > 2 : %b\n", bOk);
정수형 자료형: byte, short, int long → 기본형 int
상수: 1 0 ← 소수점이 없는 수, 1L ← long 형 상수
출력서식: %d (decimal): 10진수
%x (hexa): 16진수
%o (octal): 8진수
//100에 대한 각 진수 값 출력
System.out.printf("10진수: %d\n", 100);
System.out.printf("16진수: %x\n", 100);
System.out.printf("8진수: %o\n", 100);
>>10진수: 100
>>16진수: 64
>>8진수: 144
//각진수의 값 -> 10진수로 출력
System.out.printf("%d\n", 0x64);
System.out.printf("%d\n", 0144);
System.out.printf("%d\n", 0xff);
>> 100
>> 100
>> 100
//자릿수 지정해서 출력
int n = 123;
// %md : m <- 출력자릿수
System.out.printf("[%10d]\n", n);
// %0md : m <- 출력자릿수 0 <- 빈 공간을 0으로 채워라
System.out.printf("[%013d]\n", n);
// %-md : -m <- 출력자릿수, 음수 부호는 정렬 left
System.out.printf("[%-10d]\n", n);
>>[ 123]
>>[0000000000123]
>>[123 ]
// 출력 자릿수가 지정 자릿수보다 크면 지정 자릿수를 무시한다
실수형 자료형: float, double(기본형) <- 소수점이 있는 수
상수: 1.0 0. <-double
1.0F <- float
1.0e+2 <- 지수 형태
출력서식: %f <- 소수점 이하 6자리
%e <- 소수점 이하 6자리
%g <- 자릿수가 적은 쪽으로 출력
System.out.println(1.0); // <- double
System.out.println(1.0F); // <- float
>> 1.0
>> 1.0
double d = 12.345678912;
System.out.printf("%f\n", d);
System.out.printf("%e\n", d);
System.out.printf("%g\n", d);
>> 12.345679
>> 1.234568e+01
>> 12.3457
// %m.nf : m(전체자릿수) n(소숫점이하자릿수)
// %0m.nf : 0(앞의 자릿수 0으로 채우기)
// %-m.nf : -(left 정렬)
double pi = Math.PI;
System.out.println(pi);
>>3.141592653589793
System.out.printf("%f\n", pi);
System.out.printf("[%10f]\n", pi);
System.out.printf("[%10.2f]\n", pi);
System.out.printf("[%010.2f]\n", pi);
System.out.printf("[%-10.2f]\n", pi);
>>3.141593
>>[ 3.141593]
>>[ 3.14]
>>[0000003.14]
>>[3.14 ]
문자형 자료형 : char
문자형 자료형 : char (2byte)
상수: 'A' '한' '韓'
출력서식: %c
ASCII 통신문자코드: 0~126
0~31: 통신 및 제어문자
32~126: 키보드 상 문자 코드
'A' : 65
'a' : 97 (소-> 대문자 간격: 32)
'0' : 48
'1' : 49
\r: carrige return(home)
\n: new line(enter)
\t: tap key
\a: alert(경고음)
\f: 다음 장에 출력하기
\b: caret의 위치를 이전으로 (<- 키)
public static void main(String[] args) {
System.out.printf("%c\n", 'a');
System.out.printf("%c\n", 65);
System.out.printf("%c\n", 66);
System.out.printf("%d\n", (int)'한');
System.out.printf("%c\n", 54620);
System.out.printf("A\n%c\n",66);
System.out.println("A\tB\tC");
-콘솔-
>> a
>> A
>> B
>> 54620
>> 한
>> A
>> B
>> A B C
문자열 자료형: String
문자열 자료형: String
문자열: 1개 이상의 문자의 나열된 값
// "ABC" -> 'A' 'B' 'C'
상수: "ABC"
출력 서식: %s
%ms <- 문자수를 m개만 출력
스캐너를 사용해서 입력하는 프로그램을 만들었다.
결과
잘됨
실습 2
잘됨
실습3
잘됨
잘안됨
왤까요?
Scanner는 입력이 들어오기 전까지 키보드 버퍼에서 대기하게 된다.
next(), nextInt(), nextDouble(), nextBoolean() 은 입력 구분자 전의 값만 가져오기 때문에 엔터 값이 그대로 대기하고 있게 된다. 따라서 아래 구문에서 엔터 값을 인식하게 된다. 그렇기 때문에 2개 구문이 한번에 출력되는 것이다.
nextLine을 쓰기 전에 키보드 버퍼 내의 엔터 값을 제거해 주어야 한다.
scanner.nextLine(); 값을 중간에 끼워넣어서 엔터 값을 없애주면
잘됨