728x90
1. 변수(Variable)
값이 변할 수 있는 데이터를 임시적으로 저장하기 위한 수단
메모리는 1byte 크기의 데이터를 저장할 수 있는 메모리 셀들이 모여서 만들어지고 각 메모리셀에는 고유 번호가 오름차순으로 매겨져 있다. 이를 메모리 주소라고 한다.
아파트 비교한 메모리
변수를 이용하지 않으면?
- 저장해야 할 값이 많을때 메모리 주소를 식별하기 어렵다.
- 시스템 운영에 꼭 필요한 데이터를 실수로 덮어 쓸 가능성이 존재한다.
변수선언, 값 할당, 변수 명명 규칙
- 변수선언
변수를 선언한다는 것은 어떤 값을 저장할 메모리 공간을 확보하고, 해당 메모리 공간을 식별할 수 있는 이름을 붙이는 것을 의미한다.
- 값 할당
변수에 값을 저장하는 것이다.
여기서 대입 연산자는 : 어떤 값을 변수에 대입, 할당 시켜주는 연산자를 의미한다.
- 변수 명명 규칙
변수명을 소문자로 쓰고 띄어쓰기 및 단어를 구분할 때 대문자 사용한다.
띄어쓰기는 _(언더바) 로 구분한다.
ex) num 과 NUM 은 다른 변수이다.
숫자로 시작하는 변수명은 사용할 수 없다.
자바에서 이미 사용 중인 예약어(reserved word)는 변수명으로 사용할 수 없다.
2. 상수(Constant)
변하지 말아야 할 데이터를 임시적으로 저장하기 위한 수단
상수를 사용하는 이유
- 프로그램이 실행되면서 값이 변하면 안되는 경우에 사용한다.
- 코드 가독성을 높이고 싶은 경우에 사용한다.
- 코드 유지관리를 손쉽게 하고자 하는 경우에 사용한다.
3. 리터럴 (Literal)
문자가 가리키는 값 그 자체
4. 타입(Type)
어떤 값의 유형 및 종류를 의미한다.
값이 차지하는 메모리 공간의 크기와, 값이 저장되는 방식이 결정된다.
이때, 기본 타입과 참조 타입으로 나뉜다.
- 기본 타입(primitive type) : 실제 값이 저장되는 타입
- 참조 타입(reference type) : 주소값이 저장되는 타입
위 예제에서,
- int = primitive = 1; 은 기본타입변수 = 1; 과 같다.
- Object reference = new Object(); 는 참조타입변수 = 객체; 와 같다.
- System.out.println(); 은 출력(); 과 같다.
정수타입
타입별로 차지하는 메모리 공간의 크기와 표현범위
정수타입의 오버플로우, 언더플로우
- 오버플로우
자료형이 표현할 수 있는 범위 중 최대값 이상의 값을 표현한 경우 발생한다.
최대값이 넘어가면 데이터 타입의 최소값으로 값이 순환한다.
ex) 값이 byte 형이고,byte 형의 최대값인 127을 값으로 가지는 경우, 이 값에 1을 더하면 128이 되는게 아니라, 최소값인 -128이 된다.
- 언더플로우
자료형이 표현할 수 있는 범위 중 최소값 이하의 값을 표현한 경우 발생한다.
최소값이 넘어가면 데이터 타입의 최대값으로 값이 순환한다.
ex) 값이 byte 형이고, byte 형의 최소값인 -128을 값으로 가지는 경우, 이 값에 1을 빼면 -129가 되는게 아니라, 최대값인 127이 된다.
실수타입
실수타입의 오버플로우, 언더플로우
- 오버플로우
값이 음의 최소 범위 또는 양의 최대 범위를 넘어갔을 때 발생, 값은 무한대가 된다.
- 언더플로우
값이 음의 최대 범위 또는 양의 최소 범위를 넘어갔을때 발생, 값은 0이 된다.
논리타입
- boolean
참, 거짓을 저장할 수 있는 데이터 타입 (true, false를 값으로 가진다.)
단순하게 참, 거짓을 표현하기위해서는 1bit만 있으면 되지만, JVM이 다룰 수 있는 데이터의 최고 단위가 1byte이기 때문에 boolean형은 1byte(8bit)의 크기를 가진다.
문자타입
- char
2byte 크기를 가진다.
문자 타입 변수를 선언하면 해당 변수에 오직 하나의 문자형 리터럴을 저장할 수 있다.
자바는 유니코드로 문자를 저장하기 때문에 char letter1 = 'a'; 와 같이 문자형 리터럴을 문자형 변수에 할당하면 letter1에는 영문자 a의 유니코드 숫자 값이 저장된다. 변수의 값을 읽어 올 때는 해당 변수가 저장하고 있는 숫자값을 유니코드로 인식하여 해당 숫자와 일치하는 코드를 가진 문자로 변환해준다
※유니코드?
전 세계의 모든 문자를 컴퓨터에서 일관되게 다루기 위한 국제 표준 숫자 코드 번호
타입변환
- 자동 타입 변환
바이트 크기가 작은 타입에서 큰 타입으로 변환할 때
덜 정밀한 타입에서 더 정밀한 타입으로 변환할 때
자동 타입 변환
- 수동 타입 변환
수동으로 타입을 변환할 때에는 캐스팅 연산자()를 사용하여 괄호 안에 변환하고자 하는 타입을 적어주면 된다.
'JAVA' 카테고리의 다른 글
[JAVA]열거형(Enum), 제네릭(Generic) + 래퍼클래스(Wrapper Class) (0) | 2022.11.30 |
---|---|
[JAVA]제어문(Control Flow Statements) (0) | 2022.11.30 |
[JAVA]콘솔 입출력(I/O) (0) | 2022.11.30 |
[JAVA]문자열(String)과 연산자(Operator) (0) | 2022.11.30 |
[JAVA] 기초 (0) | 2022.11.30 |