Ch.02 변수(Variable)
- 변수와 상수
- 변수란?
- 의미: 단 하나의 값을 저장할 수 있는 메모리 공간
- 값을 다루기 위해 사용
- 변수의 선언과 초기화
- 변수의 초기화: 변수를 사용하기 전 처음으로 값을 저장하는 것
- 변수타입 변수이름; //선언 방법
- 변수이름 = 값; //초기화 방법
- 변수의 명명 규칙
- 변수의 이름 == 식별자 (identifier)
- 대소문자 구분, 길이의 제한 없음
- 예약어 사용 안됨
- 숫자로 시작 안됨
- 특수문자 '_' 와 '&' 외에는 사용 안됨
- 클래스의 권장 명명 규칙
- 클래스 이름의 첫 글자: 대문자
- 카멜 표기법
- 상수의 이름: 모두 대문자 (여러 단어: '_'로 구분)
- 변수의 타입
- 기본형
- 논리형(boolean(1)), 문자형(char(2)), 정수형(byte(1), short(2), int(4), Long(8)), 실수형(float(4), double(8))
- 기본형: 계산을 위한 실제 값 저장
- 참조형: 객체의 주소를 저장
- 클래스이름 변수이름; //참조형 선언 방법
- 상수과 리터럴
- 변수(variable): 하나의 값을 저장하기 위한 공간
- 상수(const): 값을 저장하는 공간, 한번 값을 저장하면 변경할 수 없음
- 리터럴(literal): 그 자체로 값을 의미
- 필요성: 리터럴에 의미 있는 이름을 붙여 코드의 이해와 수정 용이
- 형식화된 출력 – printf()
- 지시자(%)의 개수와 출력값 개수 일치
- 화면에서 입력받기 – Scanner
- 화면으로부터 입력을 받는 방법
- java.util class
- 진법
- 10진법과 2진법
- 컴퓨터는 2진 체계로 설계되어 있기 때문에 일상생활에서 사용하는 10진법을 변환해서 저장함
- 2진법: 0과 1로 이루어진 데이터
- 비트(bit)와 바이트(byte)
- 비트 (bit): 한 자리의 2진수, 컴퓨터가 저장할 수 있는 최소 단위
- 바이트 (byte): 비트 * 8
- n비트로 표현할 수 있는 10진수
- 값의 개수: 2^n
- 값의 범위: 0 ~ 2^n-1
- 8진법과 16진법
- 2진법의 단점(자리수 길어짐)을 보완한 방법
- 8진법: 0 ~ 7로 표현
- 16진법: 0 ~ 9, A ~ F로 표현
- 정수의 진법 변환
- 10진수를 n진수로의 변환 방법
- n으로 10진수를 나누고 나온 나머지값을 기억
- 더 이상 나눌 수 없을 때까지 반복
- 아래서부터 위로 올라가면서 조합
- 10진수를 n진수로의 변환 방법
- 실수의 진법 변환
- 정수의 진법 변환과 같지만 n을 계속 곱함
- 위의 결과에서 소수부만 가져가서 반복
- 소수부가 0이 될 때까지 반복 후, 위에서 아래로 조합 후 앞에 0.을 붙임
- 음수의 2진 표현법 – 2의 보수법
- 2의 보수 = 1의 보수 + 1
- 1의 보수: 2진수의 1의 보수를 모두 더하면 1이 됨
- 기본형(primitive type)
- 논리형 – Boolean
- true / false
- 문자형 – char
- 하나의 문자만 저장
- 문자가 아닌 문자의 유니코드(0포함 양수)로 저장
- 정수형 – byte, short, int, long
- 각각 크기(byte): 1,2,4,8
- int 범위(+-20억)을 넘어가면 long을 사용
- byte, short는 성능보다 공간 절약할 때 사용
- 오버플로우: 부호있는 정수는 부호비트가 0에서 1이 될 때 오버플로우 발생
- 실수형 – float, double
- 범위를 벗어나면 오버플로우가 아닌 무한대(infinity)가 됨
- 언더플로우: 실수형이 표현할 수 없는 아주 작은 값 의미, 0이됨
- 값의 범위 뿐만 아니라 정밀도 고려
- 형변환
- 형변환(캐스팅, casting)
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
- 형변환 방법
- 기본형의 형변환 방법: (타입) 피연산자
- 기본형(논리형 제외)은 서로 형변환 가능
- 기본형과 참조형간의 형변환은 다른 방법 사용
- 정수형 간의 형변환
- 큰 범위의 데이터에서 작은 범위의 데이터로 변환할 경우 → 값 손실 발생
- 작은 범위의 데이터에서 큰 범위의 데이터로 변환할 경우 → 나머지 빈 공간은 0 또는 1로 채워짐
- 실수형 간의 형변환
- float → double:
- 지수 부분 (E): float의 기저인 127 빼고 double의 기저인 1023을 더함
- 기수 부분 (M): float의 기수 23자리를 채우고 남은 자리를 0으로 채움
- double → float:
- 지수 부분 (E): double의 기저인 1023을 빼고 float의 기저인 127을 더함
- 기수 부분 (M): 24번째의 자리에서 반올림
- float → double:
- 정수형과 실수형 간의 형변환
- 정수형 → 실수형: 10진수로 8자리 이상의 값을 실수형으로 변환할 때 double 사용
- 실수형 → 정수형: 소수점 자리를 버림, 반올림 일어나지 않음
- 자동 형변환
- 컴파일퍼가 자동적으로 추가
- 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환
- 값 손실이 없는 경우: 표현 범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우 생략 가능
'JAVA 기초' 카테고리의 다른 글
[JAVA 기초] JAVA의 정석 - Ch.05 배열(Array) (정리) (2) | 2025.01.15 |
---|---|
[JAVA 기초] JAVA의 정석 - Ch.04 조건문과 반복문 (정리) (1) | 2025.01.15 |
[JAVA 기초] JAVA의 정석 - Ch.03 연산자(Operator) (정리) (0) | 2025.01.15 |
[JAVA 기초] JAVA의 정석 - Ch.01 자바를 시작하기 전에 (정리) (3) | 2025.01.15 |
[JAVA] 기초 - 제네릭(Generic) (1) | 2024.12.01 |