자바의 정석 Chapter02 를 참고하여 정리한 포스트입니다.
- 이전글
- 자바의 정석 Chapter01
- 다음글
- 자바의 정석 Chapter03
Chapter 02
1.1 변수 (variable)
변수란, 단 하니의 값을 저장할 수 있는 메모리 공간이다.
1.2 변수의 선언과 초기화
변수 선언
1
2
int age; //age라는 이름의 변수를 선언
변수타입 변수이릅
변수 초기화(initialization)
뱐수가 사용되기 전에 적절한 값으로 초가화 하는 것이 좋다.
변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것이다.
1
2
3
int age = 25; //변수 age를 선언하고 25로 초기화
int a, b;
int x = 0, y = 0;
지역 변수는 사용되기 전에 초기화를 반드시 해야 하지만 클래스 변수의 인스턴스 변수는 초기화를 생략할 수 있다.
두 변수의 값 교환하기
변수 x,y의 값을 서로 바꾸는 방법
1
2
int x = 10;
int y = 20;
잘못된 방법
- 변수 y에 저장된 값을 변수 x에 저장
- x = y;
- 변수 값 : x = 20, y = 20
- 변수 x에 저장된 값을 변수 y에 저장
- y = x;
- 변수 값 : y = 20, x = 20
올바른 방법
x의 값을 위한 임시 저장 변수를 선언하면 된다.
1
2
3
int x = 10;
int y = 20;
int tmp; //x값을 임시로 저장할 변수를 선언
- 변수 x에 저장된 값을 변수 tmp에 저장
- tmp = x;
- 변수 값 : x = 10, y = 20, tmp = 10
- 변수 y에 저장된 값을 변수 x에 저장
- x = y;
- 변수 값 : x= 20, y = 20, tmp = 10
- 변수 tmp에 저장된 값을 변수 y에 저장
- y = tmp;
- 변수 값 : x = 20, y = 10, tmp = 10
1.3 변수의 명명규칙
식별자(identifier)는 같은 영역 내에서 서로 구분될 수 있어야 한다.
식별자 규칙
- 대소문자가 구분되며 길이에 제한이 없다.
- 예약어를 사용해서는 안 된다.
- 숫자로 시작해서는 안 된다.
- 특수문자는 ‘_‘와 ‘$’만을 허용한다.
2. 변수의 타입
사용하는 값(data)의 종류(type)는 크게 문자와 숫자로 나누며
숫자는 다시 정수와 실수로 나눌 수 있다.
이러한 값(data)의 종류(type)에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것이 자료현(data type)이다.
- 자료형(data type) : 문자형(char), 정수형(byte, short,int, long), 실수형(float, double) 등이 있다.
기본형과 참조형
자료형은 크게 기본형과 참조형으로 나눌 수 있다.
-
- 기본형(primitive type)
- 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float,double)
계산을 위한 실제 값을 저장한다. (모두 8개)
-
- 참조형(reference type)
- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입
2.1 기본형(primitive type)
기본형의 종류
분류 | 타입 |
---|---|
논리형 | boolean true, false 중 하나를 값으로 가지며, 조건식와 논리적 계산에 사용 |
문자형 | char 문자를 저장하는데 사용되며, 변수에 하나의 문자만 저장 가능 |
정수형 | byte, short, int, long 정수를 저장할 때 사용 |
실수형 | float, double 실수를 저장할 때 사용 |
기본형의 종류와 크기
종류 \ 크기 | 1byte | 2byte | 4byte | 8byte |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
2.2 상수와 리터럴 (constant & literal)
상수(constant)는 변수와 마찬가지로 값을 저장할 수 있는 공간이지만, 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 있다.
상수를 선언하는 방법은 변수와 동일하며, 단지 변수의 타입 앞에 키워드 ‘final’을 붙여주기만 하면 된다.
1
finalint MAX_SPEED = 10; // 상수 MAX_SPEED를 선언 & 초기화
그리고 상수는 반드시 선언과 동시에 초기화해야 하며, 그 후 부터는 상수의 값을 변경하는 것이 허용되지 않는다.
1
2
3
final int MAX_SPEED; //에러, 상수는 선언과 동시에 초기화해야 한다.
final int MAX_VALUE = 100; //OK, 선언과 동시에 초기화
MAX_VALUE = 200; //에러, 상수의 값은 변경할 수 없다.
상수의 이름은 모두 대문자로 하는 것이 암묵적인 관계
리터럴(literal)
상수의 다른 이름이다.
- 변수(variable) : 하나의 값을 저장하기 위한 공간
- 상수(constant) : 값을 한번만 저장할 수 있는 공간
- 리터럴(literal) : 그 자체로 값을 의미하는 것
1
2
3
4
5
int year = 2014;
final int MAX_VALUE = 100;
//year : 변수, 2014 : 리터럴
//MAX_VALUE : 상수, 100 : 리터럴
리터럴의 타입과 접미사
종류 | 리터럴 | 접미사 |
---|---|---|
논리형 | false, true | 없음 |
정수형 | 123, 0b0101, 077, 0xFF, 100L | L |
실수형 | 3.14, 3.0e8, 1.4f, 0x1, 0p-1 | f, d |
문자형 | ‘A’, ‘1’, ‘\n’ | 없음 |
문자열 | “ABC”, “123”, “A”, “true” | 없음 |
16진수 표시를 위해 리터럴 앞에 접두사 ‘0x’ 또는 ‘0X’를, 8진수의 경우에는 ‘0’을 붙인다.
1
2
3
int octNum = 010; //8진수 10, 10진수로 8
int hexNum = 0x10; //16진수 10, 10진수로 16
int binNum = 0b10; //2진수 10, 10진수로 2
실수형에서는 float타입의 리터럴에 접미사 ‘f’ 또는 ‘F’를 붙이고, double타입의 리터럴에는 접미사 ‘d’ 또는 ‘D’를 붙인다.
1
2
float pi = 3.14f; //접미사 f 대신 F를 사용해도 된다.
double rate = 1.618d; //접미사 d 대신 D를 사용해도 된다.
타입의 불일치
리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통이지만, 타입이 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 허용된다.
1
2
3
int i = 'A'; //OK, 문자 'A'의 유니코드인 65가 변수 i에 저장된다.
long i = 123; //OK, int보다 long타입이 더 범위가 넓다.
double d = 3.14f; //OK, float보다 double 타입이 더 범위가 넓다.
2.3 형식화된 출력 - printf()
자주 사용되는 printf()의 지시자
지시자 | 설명 |
---|---|
%b | 불리언(boolean) 형식으로 출력 |
%d | 10진(decimal) 정수의 형식으로 출력 |
%o | 8진(octal) 정수의 형식으로 출력 |
%x, %X | 16진(hexa-decimal) 정수의 형식으로 출력 |
%f | 부동 소수점(floating-point)의 형식으로 출력 |
%e, %E | 지수(exponent) 표현식의 형식으로 출력 |
%c | 문자(character)로 출력 |
%s | 문자열(string)로 출력 |
2.4 화면에서 입력받기 - Scanner
- 예제 2-6
ScannerEx.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import java.util.*; //Scanner를 사용하기 위해 사용 class ScannerEx { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("두 자리 정수를 하나 입력해주세요 > "); String input = scanner.nextLine(); int num = Integer.parseInt(input); //입력받은 문자열을 숫자로 변환 System.out.println("입력내용 : " +input); System.out.println("num = %d%n", num) } }
- 결과
1 2 3
두 자리 정수를 하나 입력해주세요 > 77 입력내용 : 77 num = 77
3. 기본형 (primitive type)
3.1 논리형 - boolean
논리형에는 boolean 한 가지 밖에 없다.
true, flase 중 하나를 저장할 수 있으며 기본값은 false이다.
1
2
boolean power = true;
boolean checked = False; //에러,대소문자가 구분된. true 또는 flase만 가능
3.2 문자형 - char
문자형에도 char 한 가지 자료형밖에 없다.
1
2
3
4
5
char ch = 'A'; //문자 'A'를 char 타입의 변수 ch에 저장
char ch = 65; //문자의 코드를 직접 변수 ch에 저장
int code = (int)ch; //ch에 저장된 값을 int타입으로 변환하여 저장
3.3 정수형 - byte, short, int, long
정수형에는 모두 4가지 자료형이 있으며, 각 자료형이 저장할 수 있는 값의 범위가 서로 다르다.
byte < short < int < long
(1) (2) (4) (8)
3.4 실수형 - float, double
실수형은 실수를 저장하기 위한 타입으로 float, double 두 가지가 있다.
타입 | 저장 가능한 값의 볌위 (양수) | 정밀도 | bit | byte |
---|---|---|---|---|
float | 1.4 * 10^-45 ~ 3.4 * 10^38 | 7자리 | 32 | 4 |
double | 1.4 * 10^-45 ~ 3.4 * 10^38 | 15자리 | 64 | 8 |
4. 형변환
4.1 형변환(캐스팅, casting)이란?
형변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
ex) int 타입의 값과 float타입의 값을 더하는 경우, 먼저 두 값을 같은 타입으로 즉, 둘 다 float타입으로 변환한 다음에 더해야 한다.
4.2 형변환 방법
(타입)피연산자
- 예제 2-12
CastingEx1.java
1 2 3 4 5 6 7 8 9
class CastingEx1 { public static void main(String[] args) { double d = 85.4; int score = (int)d; System.out.println("score = " + score); System.out.println("d = d" + d); } }
- 결과
1 2
score = 85 d = 85.4 //형변환 후에도 피연산자에는 아무런 변화가 없다.
🌞 정보 : 공부 기록용 블로그입니다. 오타나 내용 오류가 있을 경우 알려주시면 감사하겠습니다.
댓글남기기