1. 변수(variable)란?
변하는 수?
하나의 값을 저장할 수 있는 메모리 공간
2. 변수의 선언
① 변수의 선언 이유
- 값(data)을 저장할 공간을 마련하기 위해서
② 변수의 선언 방법
변수타입 변수이름;
int age
3. 변수에 값 저장하기
① 변수에 값 저장하기(' = ' 는 등호가 아니라 대입)
int age ; // 정수 (int)타입의 변수 age를 선언
age = 25 ; // 변수 age에 25를 저장
int age = 25; // 위의 두 줄을 한 줄로
② 변수의 초기화 - 변수에 처음으로 값을 저장하는 것
(주의 : 지역 변수는 읽기 전에 꼭! 초기화 해야함.)
int x = 0; // 변수 x를 선언 후, 0으로 초기화
int y = 5; // 변수 y를 선언 후, 5로 초기화
int x = 0, y = 5; // 위의 두 줄을 한 줄로
4. 변수의 값 읽어오기
① 변수의 값이 필요한 곳에 변수의 이름을 적는다.
int year = 0, age = 14;
year = age + 2000;
→ year = 14 + 2000;
→ year = 2014;
age = age + 1; // 변수의 값을 1증가시키는 방법
→ age = 14 + 1;
→ age = 15;
System.out.println(age);
→ System.out.println(15); // 15가 화면에 출력됨.
5. 변수의 타입
① 변수의 타입은 저장할 값의 타입에 의해 결정된다.
int age = 25; (o)
int age = 3.14; (x)
② 저장할 값의 타입과 일치하는 타입으로 변수를 선언
char ch = '가'; // char는 문자 타입
double pi = 3.14; // double은 실수 타입
6. 값의 타입
문자 - char
숫자 - 정수 - byte, short, int, long
- 실수 - float, double
논리 - boolean (true or false)
7. 변수, 상수, 리터럴
변수(variable) - 하나의 값을 저장하기 위한 공간
상수(constant) - 한 번만 값을 저장 가능한 변수
리터럴(literal) - 그 자체로 값을 의미하는 것
int score = 100;
score = 200; (변경 o)
final int MAX = 100; // MAX는 상수
Max = 200; // 에러
char ch = 'A';
String str = "abc";
8. 리터럴의 접두사와 접미사
boolena power = true;
char ch = 'A';
String str = "ABC";
byte b = 127;
byte b = 128; // 에러
int i = 100; // 10진수
int oct = 0100; // 8진수
int hex = 0x100; // 16진수
long l = 10_000_000_000L;
long l = 100; // OK
float f = 3.14f; // f 생략 x
double d = 3.14d; // d 생략 o
10. → 10.0
.10 → 0.10
10f → 10.0f
1e3 → 1000.0d
9. 변수와 리터럴의 타입 불일치
① 범위가 ' 변수 > 리터럴' 인 경우, OK
int i = 'A' ; // int > char
long l = 123 ; // long > int
double d = 3.14f // double > float
② 범위가 '변수 < 리터럴' 인 경우, 에러
int i = 30_0000_0000 ; // int의 범위(±20억) 벗어남
long l = 3.14f ; // long < float
float f = 3.14d; // float < double
③ byte, short 변수에 int 리터럴 저장가능
단 , 변수의 타입의 범위 이내이어야 함.
byte b = 100; // OK, byte의 범위(-128 ~ 127)에 속함
byte b = 128; // 에러, byte의 범위를 벗어남.
10. 문자와 문자열
char ch = 'A';
char ch = 'AB'; // 에러
String s = "A";
String s = ""; // 빈 문자열
char ch = ''; // 에러
String s = "ABC";
String s1 = "AB";
String s2 = new String("AB");
11. 두 변수의 값 교환하기
int x = 10, y = 20;
x = y; // y의 값을 x에 저장 ( x )
y = x; // x의 값을 y에 저장 ( x )
int x = 10, y = 20;
int tmp;
tmp = x; // x의 값을 tmp에 저장
x = y; // x의 값을 y에 저장
y = tmp; // tmp의 값을 y에 저장
12. 기본형과 참조형
기본형(Primitive type)
- 오직 8개(boolean, char, byte, short, int, long, float, double)
- 실제 값을 저장
참조형(Reference type)
- 기본형을 제외한 나머지(String, System 등)
- 메모리 주소를 저장(4 byte 또는 8 byte)
Date today; // 참조형 변수 today를 선언
today = new Date(); // today에 객체의 주소를 저장
13. 기본형(Primitive type) - 종류와 크기
> 논리형 - true와 false 중 하나를 값으로 가지며, 조건식과 논리적 계산에 사용된다.
> 문자형 - 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.
> 정수형 - 정수 값을 저장하는데 사용된다. 주로 사용하는 것은 int와 long이며, byte는 이전 데이터를 다루는데 사용되며, short은 c언어와의 호환을 위해 추가되었다. (잘 안쓰임)
> 실수형 - 실수 값을 저장하는데 사용된다. float와 double이 있다.
14. 형식화된 출력 - printf()
> println()의 단점 - 출력형식 지정불가
① 실수의 자리수 조절불가 - 소수점 n자리만 출력하려면?
System.out.println(10.0/3); // 3.3333333333...
② 10진수로만 출력된다. - 8진수, 16진수로 출력하려면?
System.out.println(0x1A); // 26
> printf()로 출력형식 지정가능
System.out.printf("$.2f", 10.0/3); // 3.33
System.out.printf("$.2d", 0x1A); // 26
System.out.printf("$.2x", 0x1A); // 1A
System.out.printf("age:%d year:%d\n", 14, 2017);
"age:14 year:2017\n"이 화면에 출력된다.
System.out.printf("age:%d",age); // 출력 후 줄바꿈을 하지 않는다.
System.out.printf("age:%d%n", age); // 출력 후 줄바꿈을 한다.
15. printf()의 지시자
① 정수를 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진수
② 8진수와 16진수에 접두사 붙이기
System.out.printf("%#o", 15); // o17
System.out.printf("%#x", 15); // oxf
System.out.printf("%#x", 15); // oXF
③ 실수 출력을 위한 지시자 %f - 지수형식(%e, 간략한 형식 %g)
float f = 123.4567890f;
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.00000e-8 간략한 형식
16. printf()의 지시자
System.out.printf("[%5d]%n", 10); // [ 10]
System.out.printf("[%-5d]%n", 10); // [10 ]
System.out.printf("[%5d]%n", 10); // [ 10]
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]
17. 화면에서 입력받기
> Scanner란?
- 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
> Scanner를 사용하려면...
① import문 추가
import java.uitl.*;
② Scanner 객체의 생성
Scanner scanner = new Scanner(System.in);
③ Scanner 객체를 사용
int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장
String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장
int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)로 변환
18. 정수형의 오버플로우
10진수
0 ~ 9
00 ~ 99
000 ~ 999
0000 ~ 9999
2진수
0 ~ 1
00 ~ 11
000 ~ 111
0000 ~ 1111
19. 타입간의 변환방법
1. 문자와 숫자간의 변환
2. 문자열로의 변환
3. 문자열을 숫자로 변환
'java' 카테고리의 다른 글
자바강의 3일차 (1) | 2023.12.27 |
---|---|
자바강의 2일차 (1) | 2023.12.27 |
자바강의 1일차 (0) | 2023.12.24 |
자바의 정석 ch4 (1) | 2023.12.24 |
자바의 정석 ch3 (0) | 2023.12.22 |