공부/java
02. 변수(Variable)
ㄱ ㅣ린
2023. 1. 13. 20:47
■ 변수(Variable)
- 프로그램에서 사용될 값을 저장하는 메모리 공간이다.
- 변수를 사용 시, 변수의 데이터형을 사용하여 선언해야한다.
- 어떤 진법의 리터럴을 변수에 저장해도 실제로는 2진수로 바뀌어 저장된다.
- 변수 선언 위치에 따라 instance 변수, static 변수, local변수 가 있다
- 동일 영역에서는 같은 변수명을 사용할 수 없다 (같은 이름의 변수는 하나만 선언할 수 있다)
- 자바는 정수형, 실수형, 문자형 등의 다양한 타입을 제공한다.
- 이름 규칙
- 대소문자가 구분되고, 길이에 제한이 없다
- 예약어를 사용해서는 안된다
- 숫자로 시작해서는 안된다
- 특수문자는 '_'와 '$'만 허용된다
□ 지역변수 (Local Variable)
- method안에서 선언되고, 사용되는 변수(method 밖에서는 사용 불가)
- 자동초기화가 되지 않아, 초기화를 한 후 사용해야한다(초기화되지 않은 변수 사용시 변수안에 쓰레기값이 담겨 에러가 발생!)
- 변수의 초기화는 변수 사용전, 처음으로 값을 저장하는 것이다
- 선언된 변수는 상수값을 저장한다(Literal에 Stack에 저장된다)
- 사용법
- 선언 및 초기화(값 할당)
□ 상수와 리터럴(Constant & Literal)
- 상수(Constant)
- 변수와 같이 값을 저장하는 공간이지만 변수와 달리 한번 값을 저장하면 다른값으로 변경이 불가능하다
- 상수 선언은 변수 타입 앞에 'final'을 붙이면 된다
final int MAX = 10; // 선언 및 초기화
- 리터럴(Literal)
- 수 그 자체의 값
- 상수는 리터럴에 이름을 붙여서 코드를 더 쉽게 이해하게 만들어준다.
변수(Variable) | 하나의 값을 저장하기 위한 공간 |
상수(Constant) | 값을 한번만 저장할 수 있는 공간 |
리터럴(Literal) | 그 자체로 값을 의미하는 것 |
■ 데이터 형(Data Type)
- 값을 저장하기위해 종류별로 미리 예약해둔 메모리 공간
- 변수 선언 시 사용
- 기본형(primitive type) 데이터형, 참조형(reference type) 데이터형으로 구분
- 기본형: 변수에 값 직접 저장 [ byte, short, int, long, float, double, char, boolean == 8가지]
- 참조형: 변수에 주소 저장 [ class, array, string == 3가지]
int i = 10; // 기본형
String str = "hell0 world"; // 참조형
□ 기본형(Primitive type)
- 변수에 리터럴의 값을 직접 저장하는 데이터형
- 정수형 - byte, short, int, long
- 실수형 - float, double
- 문자형 - char
- 논리형 - boolean
값 종류 | 데이터형 명 | 크기( byte ) | 범위(range) | 사용 예 |
정수 | byte | 1 | -128 ~ +127 | byte b=10; |
short | 2 | -32768 ~ + 32767 | short s=10; | |
int | 4 | -2147483648 ~ +2147483647 | int i =10; | |
long | 8 | 2^63 ~ + 2^63-1 | long l=10; long l=int초과L; //형명시 L,l |
|
실수 | float | 4 | 유효연산 7자리 | float f=3.14; //error, 형명시 float f=3.14F; |
double | 8 | 유효연산 15자리 | double d=3.14; //형명시 생략 double d=3.14D; |
|
문자 | char | 2 | ‘로 묶여진 영문자 한자, 숫자 한자, 한글 한자의 unicode값을 저장 |
char c=‘A’; // Unicode값할당 |
불린 | boolean | 1 | true, false 저장 | boolean b=true; booleanb1=false; |
◇ 정수형 - byte, short, int, long
- 연산과정에서 해당 타입이 표현할 수 있는 범위를 넘어가면 Overflow(오버플로우)가 발생하게 된다
추가
◇ 실수형 -float, double
추가
◇ 문자형- char
- 문자를 저장하기 위한 변수를 선언할 때 사용된다
- char c = 'A'; // 문자 'A'가 아닌 유니코드 65가 저장된다. 하지만 출력은 'A'로 된다
- char c = 65; // 65가 저장되지만 출력은 'A'로 나온다
- 문자의 유니코드를 알고 싶다면 정수형(int)으로 변경하면 된다
- int code = (int) c; // 변수 c에는 'A'가 들어가 있고 출력은 65가 나오게 된다
- 인코딩(Encoding)과 디코딩(Decoding)
+ 추가
- 8bit 문자집합 => 한글 지원 안함 (ASCII CODE: 0~255)
- 16bit 문자집합 => 한글 지원 (UNICODE: 0~65535)
- 유니코드: 0~9(48, 57) / A~Z (65~90) / a~z(97~122)
숫자 | 유니코드 | 영어 대문자 |
유니코드 | 영어 소문자 |
유니코드 |
0 | 48 | A | 65 | a | 97 |
1 | 49 | B | 66 | b | 98 |
2 | 50 | C | 67 | c | 99 |
3 | 51 | D | 68 | d | 100 |
4 | 52 | E | 69 | e | 101 |
5 | 53 | F | 70 | f | 102 |
6 | 54 | G | 71 | g | 103 |
7 | 55 | H | 72 | h | 104 |
8 | 56 | I | 73 | i | 105 |
9 | 57 | J | 74 | j | 106 |
K | 75 | k | 107 | ||
L | 76 | l | 108 | ||
M | 77 | m | 109 | ||
N | 78 | n | 110 | ||
O | 79 | o | 111 | ||
P | 80 | p | 112 | ||
Q | 81 | q | 113 | ||
R | 82 | r | 114 | ||
S | 83 | s | 115 | ||
T | 84 | t | 116 | ||
U | 85 | u | 117 | ||
V | 86 | v | 118 | ||
W | 87 | w | 119 | ||
X | 88 | x | 120 | ||
Y | 89 | y | 121 | ||
Z | 90 | z | 122 |
+ 특수문자 표현
특수문자 | 문자 리터럴 |
탭(tab) | \t |
백스페이스 | \b |
새로운 줄 | \n |
\ 표현 | \\ |
' 표현 | \' |
" 표현 | \" |
유니코드(16진수) 문자 | \u유니코드 |
□ 형명시
- Literal의 크기를 일시적으로 변경한다
- 정수
- 정수 Literal은 4byte가 기본크기이고, L&l을 정수상수 뒤에 붙여 리터럴의 크기를 8byte로 변경할 수 있다
- 정수상수 값이 int의 범위라면 생략가능
- 실수
- 실수 Literal의 8byte가 기본크기이고, F&f를 실수상수 뒤에 붙여 리터럴의 크기를 4byte로 변경할 수 있다.
- D, d 생략가능. 리터럴의 크기를 8byte로 유지
□ 형변환(Casting)
□ 자바 출력
- console 출력, 주로 debug용으로 사용
- 표준 출력 method
- System.out.print( 값 ); // 출력 후 줄 변경 없음.
- System.out.println( 값 ); // 출력 후 줄 변경.
- System.out.format();
- System.out.printf();
- 문자열은 + 연산자를 사용하면 문자열을 서로 붙여서 출력
- System.out.println( 12+2 ); // 14, 숫자는 연산의 결과가 나온다
- System.out.println( "12" + "2"); // 122, 문자열은 붙임
- System.out.println( "12"+ 2 ); // 122, 문자열은 붙임
- System.out.printf("%d". age);
지시자 | 설명 |
%b | boolean 형식 출력 |
%d | 10진(decimal) 정수 형식 출력 |
%o | 8진(octal) 정수 형식 출력 |
%x | 16진(hexa) 정수 형식 출력 |
%f | 부동 소수점(float) 형식 출력 |
%c | 문자(character)로 출력 |
%s | 문자열(String)로 출력 |
진법은 일단 생략
+ 자바 권장 규칙
- 클래스명은 항상 대문자로 시작한다
- 여러단어로 이뤄진 이름은 단어 첫글자를 대문자로 한다
- 상수의 이름은 모두 대문자로 짓는다.