하나의 값을 저장할 수 있는 메모리 공간
변수타입 변수이름;
int age;
1)변수에 값 저장하기
int age; //int타입 변수 age를 선언
age = 25; //변수 age에 25를 저장
2)변수의 초기화
변수에 처음으로 값을 저장하는 것
int x = 0, y = 5; //변수 x, y를 선언 후 0, 5로 초기화
1)변수의 타입은 저장할 값의 타입에 의해 결정된다.
int age = 25;
age = 3.14; //에러
2)저장할 값의 타입과 일치하는 타입으로 변수를 선언.
char ch = '가';
double pi = 3.14;
- 값(data)
- 문자 - char
- 숫자
정수 - byte, short, int, long
실수 - float, double
- 논리 - boolean
- 변수(variable) 하나의 값을 저장하기 위한 공간
- 상수(constant) 한 번만 값을 저장 가능한 변수
- 리터럴(literal) 그 자체로 값을 의미하는 것
int score = 100; //score는 변수, 100은 리터럴
final int MAX = 200; //MAX는 상수, 200은 리터럴
byte b = 128; //에러. byte타입 범위 -128~127
int oct = 0100; //8진수. 접두사 0
int hex = 0x100; //16진수. 접두사 0x
long l = 10_000_000_000L; //100억. L 생략불가
long l = 100; //L 생략가능
float f = 3.14f; //f 생략불가
double d = 3.14d; //d 생략가능
10. --> 10.0
.10 --> 0.10
10f --> 10.0f
1e3 --> 1000.0(d)
1)범위가 '변수 > 리터럴'인 경우, OK
int i = 'A' //int > char
long l = 123; //long > int
double d = 3.14f; // double > float
2)범위가 '변수 < 리터럴'인 경우, 에러
int i = 30_0000_0000; //에러. int의 범위(약 -20억~20억) 벗어남
long l = 3.14f //에러. long < float
float f = 3.14; //에러. float < double
3)byte, short 변수에 int리터럴 저장가능
byte b = 100; //OK. byte범위(-128~127)에 속함
byte b = 128; //에러. byte범위를 벗어남
char ch='A'; //문자
char ch='AB'; //에러
String s="ABC"; //문자열
String s1="AB";
String s2=new String("AB");
String s1 = "A" + "B"; //"AB"
"" + 7 --> "" + "7" -->"7" //숫자 + 문자열 --> 문자열
문자열 + any type --> 문자열
any type + 문자열 --> 문자열
int x = 10, y = 20;
int tmp; //1. 빈 컵
tmp = x; //2. x의 값을 tmp에 저장
x = y; //3. y의 값을 x에 저장
y = tmp; //4. tmp의 값을 y에 저장
- 논리형 - true/false, 조건식과 논리적 계산에 사용
- 문자형 - 문자를 저장, 변수 당 하나의 문자만을 저장할 수 있다(여러문자는 String)
- 정수형 - 정수 값을 저장, 주로 int, long 사용, byte는 이진 데이터를 다루는데 사용
- 실수형 - 실수 값을 저장, float와 double
- n비트로 표현할 수 있는 값의 개수 : 2^{n}개
- n비트로 표현할 수 있는 부호없는 정수의 범위 : 0 ~ 2^{n} - 1
- n비트로 표현할 수 있는 부호있는 정수의 범위 : -2^{n-1} ~ 2^{n-1} - 1
byte -2^{7} ~ 2^{7} - 1
short -2^{15} ~ 2^{15} - 1
char 0 ~ 2^{16} - 1
int -2^{31} ~ 2^{31} - 1
long -2^{63} ~ 2^{63} - 1
float 정밀도 7자리
double 정밀도 15자리
1)정수를 10진수, 8진수, 16진수로 출력
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 , 2진수
2)8진수와 16진수에 접두사 붙이기
System.out.printf("%#o", 15); // 017 , 8진수
System.out.printf("%#x", 15); // 0xf , 16진수
System.out.printf("%#X", 15); // 0Xf , 16진수
3)실수 출력을 위한 지시자 %f - 지수형식(%e), 간략한 형식(%g)
System.out.printf("%f", f); // 123,456787 소수점아래6자리
System.out.printf("%e", f); // 1,234568e + 02 지수형식
System.out.printf("%g", 123.456789); // 123.457 간략한 형식
System.out.printf("%g", 0.00000001); // 1.000000e-8 간략한 형식
System.out.printf("[%5d]%n", 10); //5자리
System.out.printf("[%-5d]%n", 10); //왼쪽정렬, 5자리
System.out.printf("[%05d]%n", 10); //공백 0으로 채움, 5자리
System.out.printf("d=%14.10f%n", d); //전체 14자리 중 소수점 아래 10자리
String url = "www.codechobo.com";
System.out.printf("[%s]%n", url); // [www.codechobo.com]
System.out.printf("[%20s]%n", url); // [ www.codechobo.com]
System.out.printf("[%-20s]%n", url); // [www.codechobo.com ]
System.out.printf("[%.8s]%n", url); // [www.code] 8글자 부분출력
1) import문 추가
import java.util.*;
2) Scanner 객체의 생성
Scanner scanner = new Scanner(System.in);
3) Scanner 객체를 사용
int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장
String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장
int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)로 변환
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int num2 = scanner.nextInt();
System.out.println(num);
System.out.println(num2);
String input = scanner.nextLine();
int num3 = Integer.parseInt(input); System.out.println(num3);
최대값 + 1 --> 최소값
최소값 - 1 --> 최대값
- 문자와 숫자간의 변환
숫자 + '0' --> 문자
문자 - '0' --> 숫자- 문자열로의 변환
숫자 + "" --> 문자열
문자 + "" --> 문자열- 문자열을 숫자, 문자로 변환
Integer.parseInt("문자열") --> 숫자
"문자열".charAt(0) --> 문자
예제2-9
String url = "www.codechobo.com";
float f1 = .10f; // 0.1
float f2 = 1e1f; //10.0
float f3 = 3.14e3f;//3140.0
double d =1.23456789;//1.23456789
System.out.printf("f1=%f, %e, %g%n", f1, f1, f1);
//0.100000, 1.000000e-01, 0.100000
System.out.printf("f2=%f, %e, %g%n", f2, f2, f2);
// 10.000000, 1.000000e+01, 10.0000
System.out.printf("f3=%f,%e,%g%n",f3,f3,f3);
//3140.000000, 3.14000e+03, 3140.00
System.out.printf("d=%f%n", d);
//d=1.234568
System.out.printf("d=%14.10f%n",d);
//d= 1.2345678900 전체14자리 중 소수점10자리
System.out.printf("[12345678901234567890]%n");
//[12345678901234567890]
System.out.printf("[%s]%n",url);
//[www.codechobo.com]
System.out.printf("[%20s]%n",url);
//[ www.codechobo.com]
System.out.printf("[%-20s]%n",url);
//[www.codechobo.com ]
System.out.printf("[%.8s]%n",url);
//[www.code] 왼쪽에서 8글자만 출력