변수(variable)
사용법 : 자료형 변수명 = 값;
예시 : int num1 = 10;
데이터의 저장과 참조를 위해 할당된 메모리 공간에 붙인 이름으로 데이터의 값은 변할수 있다.
모든 키워드는 선언하고 사용해야만 한다.
변수 선언시에 저장 되는 값의 자료형을 선언해서 공간을 한정한다.
값을 저장 할 때 대입연산자는 '='을 사용하고, 오른편에 있는 값을 왼편에 변수에 대입한다.
변수선언시 값을 저장 할 수 있고, 처음 값을 지정하는 일을 초기화라고 한다.
변수는 한번에 선언 할 수도 있다. => int kor1, kor2, kor3;
- 인스턴스 변수 : 객체가 소유하는 변수(클래스 정의에서 static이 아닌 필드)
- 클래스 변수 : 객체가 공유하는 변수(클래스 정의에서 static 필드)
- 지역 변수 : 메소드 내부(또는 블록 내부)에서 선언된 변수
- 파라미터 : 메소드 호출 시 전달하는 값을 저장하기 위한 변수
변수의 사용 범위
지역변수와 파라미터
- 선언된 곳부터 해당 블록이 종료 될 때까지 유효(메소드가 실행 될 때 만들어지고 끝나면 사라짐)
- 지역변수는 초기값을 지정한 후 사용해야 한다.
- 지역 변수 선언에서 접근 제어자를 사용하지 않는다.
데이터 필드(인스턴스 변수 or 클래스 변수)
- 선언된 클래스 내부에서 사용 가능
- 자동으로 초기화 된다.
- 클래스 외부에서의 사용 가능 여부는 접근 제어자(access modifier)에 따라 다름
명령 행 매개 변수
프로그램을 실행 할 때 전달하는 인자로 프로그램 이름 뒤에 나열하는 매개변수다.
'java 클래스명 명령행매개변수' => java MyClass kim 123 => kim 123이 명령형 매개변수
main()함수에 전달되는 인자로 문자열로 전달된다.
상수(Constants)
사용법 : final 자료형 상수변수명 = 값;
예시 : final int MAX_SIZE = 10;
값이 변하지 않는 수로 값이 정해지면 이후로는 변경이 불가능한 변수도 상수라 한다.
변수 선언시 final 선언을 추가하면 그 변수는 상수가 되어, 값을 딱 한 번 할당 하고, 할당된 값을 변경 할 수 없다.
리터럴(literal)
변수나 필드에 저장 할 수 있는 각 자료형의 실제값
int num = 123; 으로 값을 초기화 했을때 오른편에 위치한 숫자를 '리터럴' 또는 '리터럴 상수'라고 한다.
정수형 리터럴(정수형 상수)
- 정수를 쓰면 int형으로 인식된다.
- 정수는 8진수(숫자 앞에 0 삽입, 032...), 10진수, 16진수(숫자 앞에 0x나 0X 삽입, 0x1a...)로 표현할 수 있다.
- byte, short 자료형은 허용 범위 안에서 int와 호환 된다.
- long형 정수의 표현을 사용하고 싶으면 소문자 l 또는 대문자 L을 붙인다.(3147483647L)
- 2진수 표현 방법도 제공 : 0b 또는 0B 붙여서 표현. 단위가 큰 수의 표현 및 인식에 도움을 주기 위해 언더바를 넣는 것도 허용하고 있다. (0B11001101, 100_000_000...)
값의 진법 변환
기본
00000001 => 1 00000010 => 2 00000100 => 4 00001000 => 8
00010000 => 16 00100000 => 32 01000000 => 64 10000000 =>128
2진수와 10진수
00101101 => 00000001 + 00000100 + 00001000 + 00100000 => 1 + 4 + 8 + 32 = 45
11 => 8 + 2 + 1 => 00001011
16진수로 변환
10진수 => 2진수 => 4자리씩 잘라서 읽고 앞에 0x(0X) 붙이기
6(4 + 2) => 0000 0110 => 0x06
11(8 + 2 + 1) => 0000 1011 => 0x0B
8진수로 변환
10진수 => 2진수 => 3자리씩 잘라서 읽기
11(8 + 2 + 1) => 00 001 011 => 013
실수형 리터럴(실수형 상수)
- 소수점이 있는 숫자
- 실수형 상수는 double형으로 인식된다. double형을 명시하고 싶으면 숫자 뒤에 d 또는 D를 붙인다.
- float형 실수를 표현하고 싶으면 숫자 뒤에 f 또는 F를 붙인다.
- 실수의 덧셈에서 float형은 오차가 발생할 수 있기 때문에 정밀도로 계산하기에 적절하지 않다.
- e 또는 E를 붙여서 표현 할 수 있다. 3.4e3 => 3.4 * 10의3승 => 3400.0 / 3.4e-3 => 3.4 * 10의-3승 => 0.0034
값의 진법 변환
기본
0001.0000 => 1 0000.1000 => 0.5 0000.0100 => 0.25 0000.0010 => 0.125
고정 소수점(Fixed Point) 표현방식의 4바이트 실수
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
부호비트 | 15bit (-2의15승 ~ 2의15승-1 => -32768 ~32767) 정수부 |
16bit 소수부 |
정수부를 327676 밖에 사용 할 수 없으면 더 큰 수를 담을 수 없어서 부동 소수점 표현방식을 사용한다.
부동 소수점(Float Point) 표현방식의 4바이트 실수
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
부호비트 | 8bit 지수부 |
23bit 가수부 |
12.125 => 1.2125e1 => 1.2125 부분은 가수부에 e1 부분은 지수부에 표기
불형 리터럴(불형 상수)
- true, false
문자형 리터럴(문자형 상수)
- 1개의 문자를 표현하고 단일 따옴표를 사용한다.
- 이스케이프 시퀀스(escape sequences) : 유니코드 문자들 중 키보드로 입력하기 어려운 문자의 표현을 위한 것으로 백슬래시를 붙여서 사용한다. \n, \\, \t ...
- char형으로 0~65536의 수와 호환 된다. (char)65 => 'A'
- 16비트 UNICODE로 인코딩 된다. '\uAC00' => '가' , '\u20AC' => €
자료형(data type)
변수의 값을 저장하거나, 메소드의 반환 값을 돌려 줄 대 값의 종류를 자료형이라고 한다.
자료형에 따라 적용 가능한 연산이 다르다. 예를들면 정수형과 문자열에서 + 연산자는 다르게 적용되에 다른 결과가 나온다.
JAVA의 기본 자료형(primitive type)
정해진 자료형의 값 자체로 저장 공간에 값 자체를 저장한다.
데이터 종류에 따라 크게 네 가지로 구분이 된다.
그 중 정수 표현 자료형, 실수 표현 자료형은 바이트의 크기에 따라 종류가 또 나뉜다.
분류 | 키워드 | 설명 | 길이(byte) | 값의 범위 |
문자 | char | UNICODE(ASCII에서 길이만 확장) a, 97, \u0061 |
2 | '\u0000'~'\uFFFF' |
논리 | boolean | 참/거짓 표현 | 1 | true 또는 false |
정수 | byte | 10진수 : 숫자로 시작 8진수 : '0'으로 시작 int octal = 023; 16진수 : '0x'로 시작 int hex = 0xC; |
1 | -128 ~ 127 |
short | 2 | -32768 ~32767 | ||
int | 4 | -2의31승 ~ 2의31승-1 | ||
long | 8 | -2의63승 ~ 2의63승-1 | ||
실수 | float | 소수점이 있는 숫자 저장 | 4 | (+/-)약1.4E-45 ~ 3.4E38 |
double | 8 | (+/-)약4.9E-324~1.8E308 |
JAVA의 참조 자료형(reference type)
참조 값(주소)을 가지는 자료형으로 저장 공간에 참조 값을 저장한다.
실제 데이터는 별도의 공간에 따로 저장된다.
기본형을 제외한 모든 자료형으로 클래스형의 변수, 배열형의 변수, 문자열형의 변수 등이 해당된다.
실제값이 저장된 메모리 주소를 의미하는 것으로 클래스 유형으로 선언 된 변수에는 해당 클래스의 인스턴스(객체)가 저장되어 있는 곳을 가르키는 메모리 주소가 저장된다.
자료형의 변환(형 변환 : type conversion)
자료형에 따라 같은 연산자라도 사용방법이 달라지기 때문에 서로 다른 자료형으로는 연산 할 수 없다.
두 자료형을 하나로 일치하는 과정을 형변환이라고 하고, 값의 자료형을 다른 자료형으로 변환하는 것이다.
일반적으로 기본형은 기본형끼리, 참조형은 참조형끼리 형변환을 할 수 있다.
JAVA에서는 컴파일 될 때 변수나 상수의 자료형을 엄격히 검사한다.
변수 선언 당시 자료형과 대입하는 값이 일치 하지 않는 경우 컴파일 오류가 발생하거나 형변환이 일어난다.
자료의 손실이 발생할 소지가 있는 경우에는 무조건 오류를 발생시킨다.
같은 종류의 자료형이면 자료의 손실이 발생하지 않는 경우에는 실제 자료형이 다르더라도 오류가 발생하지 않을 수도 있다.
묵시적 형 변환(자동 형 변환, Implicit Conversion)
- 프로그래머가 명시한 형 변환이 아닌 필요에 의해 자동으로 컴파일러가 해주는 형 변환
- 작은 타입에서 큰 타입으로 자동 형 변환 된다.
- byte -> short -> int -> long -> float -> double
- 개발자 -> 직원 -> 인간 -> 포유류
묵시적 형 변환 예 : long x = 30;
byte x = 30; 컴파일시 오류 발생
명시적 형 변환(Explicit Conversion)
- 프로그래머가 강제로 자료형을 변환 시키는 형 변환
- 큰 타입에서 작은 타입으로 변환 시키고 싶을 때 사용한다.
- 명시적 형 변환을 통해 자료형이 변환되면 컴파일 오류는 발생하지 않지만, 경우에 따라 자료의 손실이 발생할 수 있다.
- (자료형) 피연산자 => short 변수명 = (short) int정수형값
명시적 형 변환 예 : byte x = (byte) 30;
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] 구조적인 프로그래밍 (0) | 2021.11.24 |
---|---|
[JAVA] 자바의 입출력 (0) | 2021.11.21 |
[JAVA] 자바의 연산자와 제어문 (0) | 2021.11.21 |
[JAVA] 자바 프로그램 기본 사항 (0) | 2021.11.20 |
[JAVA] 자바 프로그래밍 (0) | 2021.10.07 |