공부했던 자료 정리하는 용도입니다.
재배포, 수정하지 마세요.
변수(Variable) : 값을 저장하기 위한 공간 상수(Constant) : 값을 한 번만 저장할 수 있는 공간(수정 불가능) 리터럴(Literal) : 값 자체를 의미. 상수 풀(constant pool)에 있음 |
변수
값을 저장할 수 있는 메모리 공간. 변수를 선언하면 메모리에 변수 타입에 맞는 메모리가 할당되고, 변수의 이름을 통해서 제어할 수 있다.
■ 변수의 선언
변수타입 이름 = 값
변수의 초기화란 변수를 사용하기 전에 값을 미리 저장해 놓는 것을 말한다. 초기화하지 않은 상태로 값을 불러오면 쓰레기 값을 불러오기 때문에 사용하기 전에 미리 초기화해놓아야 한다.
[참고] 변수의 명명 규칙 1. 대소문자 구별, 길이에 제한 X 2. 예약어를 사용해서는 안된다. 3. 숫자로 시작해서는 안된다. 4. 특수문자는 _ 와 $ 만 사용 가능 |
■ 변수의 타입
- 기본형 : 실제값을 저장
정수형 : byte , short , int , long
실수형 : float , double
문자형: char
논리형 : boolean - 참조형 : 값이 저장되어 있는 주소를 저장
ex) 기본형을 제외한 나머지 타입
■ 기본형의 종류와 크기
- 논리형(boolean) : true , false 두 가지 값만 존재 (대소문자를 구분하기 때문에 True 와 다름)
- 문자형(char)
: 하나의 문자를 저장할 수 있다. 실제로는 문자의 유니코드(정수)가 저장된다.
문자를 코드로 변환하는 것을 문자 인코딩, 그 반대의 과정을 디코딩이라고 한다.
유니코드는 전부 양수(0 포함)이므로 0 ~ 65535 의 범위를 가진다.
■ 특수문자
tab | \t |
backspace | \b |
form feed | \f |
new line | \n |
carriage return | \r |
역슬래시(\) | \\ |
' | \' |
" | \" |
유니코드(16진수)문자 | \u유니코드 ex) \u0041 |
- 정수형(byte, short, int, long)
: 크기마다 표현할 수 있는 값의 범위가 다르다. (하나의 비트를 부호 비트로 쓰고 나머지로는 값을 표현하는데 쓴다.) - 실수형(float, double) : 정수와 달리 부호와 지수, 가수 부분으로 나뉘어 저장된다.
float 은 7자리, double 은 15자리를 오차 없이 저장할 수 있다.(정밀도)
■ 변수가 저장할 수 있는 값의 범위
- 정수형 : -2^(비트수-1) ~ 2^(비트수-1) -1 이다.
- char형 : \u0000 ~ \uffff
상수
: 변수와 비슷하지만 값을 수정할 수 없다.
변수 선언과 동일하게 하되, 앞에 final 을 붙이면 된다. 관례상 대문자로 선언한다.
ex) final int MAX_VALUE = 10;
■ 리터럴과 접두사, 접미사
- 정수형, 실수형
접두어를 통해서 진수를 표현할 수 있다. 16진수는 0x 또는 0X, 8진수는 0을 붙인다.
- 정수형일 경우 접미사가 없으면 int , long 의 경우에는 l 이나 L 을 붙인다.
실수형일 경우 접미사가 없으면 double (d를 붙임), float 은 f 를 붙인다. - 문자형
- 문자 리터럴은 글자 하나를 의미하고 ' 로 묶는다.
문자열 리터럴은 두문자 이상이고 " 로 묶는다
형변환(Casting)
: 변수 or 상수의 타입을 다른 타입으로 변환하는 것
(바꿀 타입) 피연산자로 하면 된다. ex) (int)c
큰 타입에서 작은 타입으로 변환하는 경우 값의 손실이 발생할 수 있다.
1. 자동 형 변환
: 컴파일러가 자동적으로 해주는 형 변환.
서로 다른 두 타입 간의 연산에서는 표현 범위가 더 넓은 타입으로 자동 형 변환된다. (기존 값을 최대한 보존하는 방법으로 함)
- short 와 char 는 둘 다 2 byte지만 범위가 서로 달라서 어느 쪽이든 값 손실이 발생해서 서로 자동 형 변환되지 않는다.
- boolean 을 제외한 기본형들을 서로 형 변환이 가능하다.
- 기본형과 참조형은 서로 형 변환이 X
- 서로 다른 타입의 변수 간의 연산은 형 변환을 해야 하지만 값의 범위가 작은 타입에서 큰 타입으로의 형 변환은 생략가능
2. 명시적 형변환
: 변수가 저장할 수 있는 값의 범위보다 큰 값을 저장하려는 경우에는 값 손실이 발생할 수 있어서 에러가 나는데 형 변환을 명시적으로 표시해주면 실수가 아닌 의도적인 것으로 판단하여 에러를 발생시키지 않는다.
출력 형식
System.out.print : 출력 포맷을 정할 수 있다.
ex) System.out.printf("%d년 %d월 %d일", 2019, 5, 20); : 2019년 5월 20일
* printf() 의 지시자
%b | boolean 형식으로 출력 |
%d | 10진(decimal) 정수 형식으로 출력 |
%o | 8진(octal) 정수의 형식으로 출력 |
%x , %X | 16진(hexa - decimal)형식으로 출력 |
%f | 부동소수점(floating-point)형식으로 출력 |
%e , %E | 지수(exponent) 표현식으로 출력 |
%c | 문자(character)로 출력 |
%s | 문자열(string)으로 출력 |
- java에서는 char 타입을 %d 로 출력하려면 int 로 형 변환을 해야 출력할 수 있다.
- 출력될 값이 차지할 공간을 숫자로 지정할 수 있다.
5d : 오른쪽 정렬
-5d : 왼쪽 정렬
'Back end > Java' 카테고리의 다른 글
[Java] 변수(Variable)와 메서드(Method) (0) | 2019.06.17 |
---|---|
[Java] 객체지향 언어, 클래스(Class)와 객체(instance) (0) | 2019.06.11 |
[Java] 배열(Array) (0) | 2019.06.04 |
[Java] 조건문과 반복문 (0) | 2019.05.23 |
[Java] 연산자(Operator) (0) | 2019.05.21 |