변수의 정의, 선언 방법
- 변수: 하나의 값을 저장할 수 있는 메모리 공간(RAM을 1 byte로 나누고 연속적인 주소로 나눔 = 메모리 주소 ⇒ 사람이 기억하기 불편함)
- 변수의 선언
- 값을 저장할 공간을 마련하기 위함
- 변수 선언 방법:
// 변수타입 변수이름; int age; // 정수 타입의 변수 age를 선언 age = 25; // 변수 age에 25를 저장 (등호가 아닌 대입) int age = 25; // 한줄로 축약
- 변수의 초기화: 변수에 처음으로 값을 저장
int x = 0; int y = 5; int x = 0, y = 5;
- 변수의 종류
- 클래스 변수
- 인스턴스 변수
- 지역변수: 지역변수는 읽기 전 꼭 초기화 해야 함
- 변수 값 읽기
- 변수 값이 필요한 곳에 변수 이름 적기
int year = 0, age =14; year = age + 2000; // year = 14 + 2000; year = 14 + 2000; year = 2014; // 대입연산은 제일 마지막에 저장 age = age + 1; // 변수의 값을 1 증가 시키는 방법 age = 14 + 1; age = 15;
변수의 타입
- 변수의 타입
- 변수의 타입은 저장할 값의 타입에 의해 결정
- 저장할 값의 타입과 일치하는 타입으로 변수를 선언
int age = 25; // 정수타입이기 때문에 25(정수)를 저장할 수 있는 것 age = 3.14; // 에러 발생 => 3.14는 실수 char ch = '가'; // 문자 double pi = 3.14; // 실수
- 값의 타입(8가지 = 기본형)
- 문자 - char
- 숫자
- 정수 - byte, short, int, long
- 실수 - float, double
- 논리 - boolean (true / false)
변수, 상수, 리터럴
- 변수(variable): 하나의 값을 저장하기 위한 공간
- 상수(constant): 한 번만 값을 저장 가능한 변수 (변경 X)
int score = 100; score = 200; final int MAX = 100; // MAX는 상수 MAX = 200; // 에러 발생
- 리터럴(literal): 그 자체로 값을 의미하는 것 (기존의 상수 개념)
int score = **100**; score = **200**; final int MAX = **100**; // MAX는 상수 MAX = **200**; // 에러 발생 char ch = '**A**'; String str = "**abc**";
- 리터럴의 접두사 및 접미사
| 종류 | 리터럴 | 접미사 |
| --- | --- | --- |
| 논리형 | false, true | 없음 |
| 정수형 | 123, 0b0101, 077, 0xFF, 100L(long타입) | L |
| 실수형 | 3.14, 3.0e8, 1.4f, 0x1, 0p-1 | f(float: 생략 불가), d(double: 생략 가능) |
| 문자형 | ‘A’, ‘1’, ‘\n’ | 없음 |
| 문자열 | “ABC”, “123”, “A”, “true” | 없음 |
- 접미사: 대소문자 구별하지 않지만 l의 경우 1과 혼동할수 있기 때문에 대문자로 입력
- \n = 개행문자 (하나의 문자로 취급)
- byte b = 127; (int 타입)
- 값의 범위: -128 ~ 127
- int i = 100; // 10진수
- int oct = 0100; // 8진수
- 16진수는 0x로 시작
- 이진수는 0b로 시작
- long 타입의 경우 int 범위외의 숫자일경우 접미사 L 필수
```
10. // = 10.0 (double)
.10 // = 0.10 (double)
10f // = 10.0f (float)
1e3 // = 1000.0 (double)
```
- 변수와 리터럴 타입 불일치
- 범위가 변수 > 리터럴인 경우 O
int i = 'A'; // int > char (65가 저장됨) 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.14; float < double
- byte, short 변수에 int 리터럴 저장 가능
- 단, 변수 타입 범위 이내의 숫자만 저장 가능
byte b = 100; // byte 범위 내(-128~127) byte b = 128; // 에러
- println
- 10진수만 출력
- 출력될 경우 접미사는 생략되어 나옴
문자와 문자열
- 문자
- String ⇒ 문자열을 사용할 때 쓰는 클래스(new를 생략 가능한 클래스)
char ch = 'A'; char ch = 'AB' // 에러 String s = "ABC"; String s2 = new String("AB");
- 문자열
- 연속된 여러 문자(문자가 없거나, 하나만 있어도 됨)
String s = ""; char ch = ''; // 에러 String s1 = "A" + "B"; // "AB"가 됨 "" + 7 // 문자열 "7"이 됨(숫자를 문자열로 변환) "" + 7 + 7 // 결과 "77" 7 + 7 + "" // 결과 "14" 문자열과 + any type = 문자열
두 변수의 값 교환
int x = 10, y = 20;
x = y; // y의 값을 x에 저장 (x의 원래 값 사라짐)
y = x;
int x = 10, y = 20;
int tmp = x;
x = y;
y = tmp;