변수와 상수 그리고 리터럴
변수 = 단 하나의 값을 저장할 수 있는 공간
상수= 단 하나의 값을 저장할 수 있는 공간이지만 변경 불가 / 반드시 final을 붙여야함
리터럴= 데이터 값
int age; = age라는 이름의 변수를 선언하는 것
int = 변수 타입
age= 변수 이름
두 변수의 값 교환하기
-> int x= 10;
int y= 20;
int tmp; -> x 값을 임시로 저장할 변수를 선언해야함
변수의 타입
값(data) - 기본형 -논리형(boolean)
-문자형(char)
-정수형(byte, short, int, long)
-실수형(float, double)
-참조형(클래스의 이름이 참조 변수의 타입이 됨)
8bit 16bit 32bit 64bit
정수형은 표현범위가 -2^n-1 ~ 2^n-1 -1 임.
예를 들어 byte = 1byte(8bit) 이기 떄문에 -2^7 ~ 2^7-1 -> -128~127임
리터럴의 타입과 접미사
정수형 = long 타입에만 l 붙임 없을경우 int 타입
실수형(소수) = 리터럴에 소수점 or 10의 제곱(E,e) , f, F, d, D가 있으면 실수형 리터럴임 (d, D는 생략 가능)
접두사
2진수 -> int binNum = 0b10; -> 2진수 10 / 10진수로는 2
8진수 -> int octNum= 010; -> 8진수 10 / 10진수로는 8
16진수 ->int hexNum= 0x10; -> 16진수 10/ 10진수로는 16
'A' = 문자 리터럴 ->char
"A" = 문자열 리터럴 -> 변수의 타입이 String 이어야 저장 가능 -> ""; 빈 문자열도 가능
문자열 + any type = 문자열
문자열은 왼쪽부터 진행됨
""+7+7 -> "7"+7 -> "7"+"7" -> "77"
7+7+"" -> 14+"" -> "14"+"" -> "14"
형식화된 출력 - print(f)
println()의 단점 - 출력형식 지정 불가 / 10진수로만 출력가능
printf() = 출력형식 지정가능
System.out.printf("%.2f" , 10.0/3); = 3.33 (소숫점 둘째자리까지 출력)
System.out.printf("%d", 0x1A); = 26 (10진수로 출력)
System.out.printf("%X", 0x1A); = 1A (16진수로 출력)
지시자 | 설명 |
%b | 불리언(boolean) 형식으로 출력 |
%d | 10진(decimal) 정수의 형식으로 출력 |
%o | 8진(octal) 정수의 형식으로 출력 |
%x, %X | 16진(hexa_decimal) 정수의 형식으로 출력 |
%f | 부동 소수점의 실수 형식으로 출력 |
%e, %E | 지수 표현식의 실수 형식으로 출력 |
%c | 문자로 출력 |
%s | 문자열로 출력 |
이외 = javaAPI -> Formatter 참고
예시
System.out.printf("age:%d year : %d\n" , 14 , 2017); -> "age:14 year:2017\n" 으로 출력
\n = printf는 줄바꿈을 자동으로 하지 않기떄문에 넣는 줄바꿈 문자(개행문자)임.
System.out.printf("%d", 15) ; //15 10진수
System.out.printf("%o", 15); //17 8진수
System.out.printf("%x", 15); // f 16진수
System.out.printf("%s", Integer.toBinaryString(15)); // 1111
이진 문자열을 표현(중요X)
8진수와 16진수에 접두사 붙이는 방법 (#추가)
System.out.printf("%#o", 15) ; // 017
System.out.printf("%#x", 15); // 0xf
System.out.printf("%#X", 15); // 0XF
12345
System.out.printf("[5d]%n", 10); //[ 10] 5자리 출력
System.out.printf("[%-5d]%n", 10); // [10 ] -는 왼쪽정렬 해줌
System.out.printf("[%05d]%n', 10); //[00010] 빈자리에 0 채워줌
System.out.printf("[5d]%n", 123456); // [123456] 5자리 출력이지만, 입력이 123456 7자리 라서 그대로 7자리 [123456] 출력
- 실수 출력을 위한 지시자 %f
System.out.printf("%14.10f%n", d); = 전체 14자리 중 소수점 아래 10자리 까지 표현하라는 뜻
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
1 | . | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 0 |
소수점 앞자리에 빈자리는 공백, 소수점 뒷자리 빈자리는 0 으로 표기
2.4 화면에서 입력받기 -Scanner
Scanner -> 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
Scanner 클래스를 사용하기위한 순서
1. import 문 추가
import java.util.*;
2. Scanner 객체의 생성
Scanner scanner = new Scanner(System.in);
-> System.in 은 화면 입력
3. Scanner 객체 사용
int num = scanner.nextInt();
-> 화면에서 입력받은 정수를 num에 저장 / nextInt는 정수를 뜻함
String input = scanner.nextLine() ;
int num = Integer.parseInt(input);
->int num = scanner.nextInt(); 를 위와 같이 두줄로 쓸 수 있음
-> nextLine()은 하나의 행
숫자를 문자열로 바꿀 때 = 숫자 + " "
문자열을 숫자로 바꿀 떄 = Integer.parseInt() 메소드 사용