안녕하세요. 성조입니다.
이번 포스팅에서는 JAVA의 변수와 상수에 대해서 설명합니다.
다음은 목차입니다.
- 변수와 상수의 개념 정의
- 변수의 종류
- 변수와 상수의 선언 방법
- 변수 각각의 초기화 방법
변수와 상수의 개념 정의
변수란?
컴퓨터 과학에서는 아직 알려지지 않았거나 전체가 모두 알려지지 않은 양이나 정보에 대한 상징적 이름이라 한다.
변수를 정의하면 다음과 같다.
A라고 선언된 변수에((ex) String a) 사용자가 입력하는 B값((ex) a = sc.next())을 넣으라는 것이다.
저장되는 원리에 대해서 그림으로 간단하게 보이려 한다.
컴퓨터에는 메모리라는 저장 공간이 있다.
다음의 그림은 위에 언급된 것과 같이 A라고 선언된 변수 A에 B값을 넣어준 모습이다.
물리적으로 존재하는 메모리 어딘가에 저장된 A라는 변수에 할당된 B라는 값이다.
메모리는 사용자가 원하는 위치에 저장되지 않는 것은 아니다.
C/C++ 언어의 경우 포인터를 활용하면 가능하다.
C/C++ 언어의 포인터는 값의 주소를 참조하거나 저장하는 등의 다양한 형태로 사용된다.
메모리 영역의 경우
운영체제에서는 32bit와 64bit 방법이 있다.
지원되는 주소의 규모는 다음의 32bit 0x00000000 ~ 0xFFFFFFFF(8개 자릿수)와 0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF(16개 자릿수)가 각각 존재하는데 데이터를 저장할 수 있는 크기가 다르다.
메모리의 자세한 내용은 컴퓨터 구조를 복습할 때 진행하고 지금은 간단한 그림으로 내용을 설명해 본다.
상수란?
프로그램의 시작과 종료 언제든지 항상 일정한 값을 갖는 수를 말한다.
변수의 종류
자바(JAVA)에서 변수의 종류를 설명한다.
변수의 종류
기본 타입, 레퍼런스 타입, var 타입이 있다.
상수의 경우 변하지 않는 값이므로 같이 설명하지 않는다.
기본 타입
기본 타입에는 총 8가지 방법이 있다.
대부분의 언어에 존재하는 char, boolean, byte, short, long, int, float ,double형이 존재한다.
여기서 String(문자열)타입의 경우 기본으로 제공되는 기본 타입이 아니므로 포함되지 않는다.
1바이트(byte) 당 8비트(bit)이다.
데이터 타입 | 자료명 | 단일 크기 | 단일당 지원 크기 | |
문자 타입 | char | 2 byte(바이트), Unicode (기본 유니코드) |
0 ~ 65535 | |
논리 타입 | boolean | 1 bit | true, false | |
정수 타입 | byte | 1 byte | -128 ~ 127 (-2^7 ~ 2^7-1) | |
short | 2 byte | -32768 ~ 32767 (2^14 ~ 2^14-1) | ||
int | 4 byte | -2^31 ~ 2^31-1 | ||
long | 8 byte | - 2^63 ~ 2^63-1 | ||
실수 타입 | float | 4 byte | -3.4E38 ~ 3.4E38 | |
double | 8 byte | -1.7E308 ~ 1.7E308 |
(E의 경우 exponent를 의미한다.)
문자 타입의 경우 문자열이 아닌 단일 문자 하나씩만을 저장할 수 있다. 또한 유니코드를 지원하므로 변수에 가, 나, 다, 라와 같은 문자들을 저장할 수 있다. ex) char a='e'; 또는 char a ='가';
논리 타입의 경우 true와 false로만 변수 값으로 가질 수 있다. 자바는 논리 타입이 True와 False를 변수 값으로 받지 않는다. 다음 사진과 같이 변수 값을 저장할 수 없다.
정수 타입의 경우 소수점이 없는 정수 형태를 저장할 수 있다.
실수 타입의 경우 소수점을 포함한 값을 변수에 저장할 수 있다.
정수와 실수의 선언 방법은 아래 선언 방법에서 설명한다.
레퍼런스(reference) 타입
레퍼런스 타입은 말 그대로 참조하는 값이다.
메모리 주소 값를 참조하는 타입으로 배열, 클래스, 인터페이스가 있다.
var 타입이란?
변수에 저장되는 값을 자동으로 기본 타입에 맞춰 저장된다.
리터럴(literal)
추가적으로 리터럴 타입에는 변수를 따로 저장하지 않고 사용자가 원하는 값을 직접 출력할 값을 지정하는 방법이다.
리터럴에는 기본 타입의 문자, 논리, 정수, 실수형의 저장되는 값들이 존재한다.
변수와 상수 선언 방법과 초기화 방법
변수 선언시 중요한 부분이 있다.
변수의 경우 문자, 논리, 정수, 실수 모두 정해진 이름은 없다. 하지만 좋은 협업을 위해서는 적재적소에 맞는 선언을 통일하는 것이 좋다. 프로젝트에서 진행되는 명명 규칙을 따르는 것도 좋은 방법이다.
다음의 사진은 변수를 선언하는 방법의 예를 든다.
기본 타입
- 숫자를 포함할 수 있다.
- 숫자로 시작할 수 없다.
- 띄어쓰기를 포함할 수 없다.
- 예약어를 저장할 수 없다.
단 true를 저장할 수 있으나 자바는 대소문자를 구분하기 때문에 True를 변수명으로 사용할 수 있다. 하지만 예약어의 경우 혼동될 수 있으므로 사용은 지양된다. if의 경우도 If나 iF도 변수 명으로 사용은 가능하다.
- 특수 기호는 _와 $만 가능하다.
(여담 프로젝트는 순수 숫자로도 생성 가능하다.)
실수 float형의 경우 마지막에 f를 작성해야 한다.
[정리]
byte: 8비트 정수를 저장하는 데 사용되며, 값의 범위는 -128부터 127까지이다.
short: 16비트 정수를 저장하는 데 사용되며, 값의 범위는 -32768부터 32767까지이다.
int: 32비트 정수를 저장하는 데 사용되며, 값의 범위는 -2147483648부터 2147483647까지이다. 일반적으로 정수를 저장할 때 가장 많이 사용된다.
long: 64비트 정수를 저장하는 데 사용되며, 값의 범위는 -9223372036854775808부터 9223372036854775807까지이다.
float: 32비트 실수를 저장하는 데 사용된다.
double: 64비트 실수를 저장하는 데 사용된다. 일반적으로 실수를 저장할 때 가장 많이 사용된다.
char: 16비트 유니코드 문자를 저장하는 데 사용되며, 값의 범위는 0부터 65535까지이다.
boolean: 참(true) 또는 거짓(false) 값만을 가질 수 있는 논리형 타입이다.
레퍼런스(reference) 타입
레퍼런스 타입의 경우 참조하여 선언되는데 위에 언급한 것과 동일하게 배열, 클래스, 인터페이스가 있다.
[정리]
클래스(Class) 타입: 사용자가 직접 정의하여 사용하는 클래스를 변수로 사용할 수 있다.
예를 들어, String, Scanner, Random 등이 존재한다.
인터페이스(Interface) 타입: 인터페이스 역시 변수의 타입이 될 수 있다.
배열(Array) 타입: 동일한 타입의 여러 변수를 하나의 변수로 취급하여 사용할 수 있는 타입이다.
var 타입
기본 타입을 근본으로 하는 var 타입이다.
Java 10부터 사용 가능한 변수 생략 타입이다.
자바에서 자동으로 저장되는 값에 맞춰서 변수 타입을 선언해준다.
선언과 초기화가 바로 된다.
오타나 문제가 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다!
- reference -
잘못 정의된 개념이 있다면 댓글 부탁드립니다!
감사드립니다.
'Java ☕ > Java' 카테고리의 다른 글
[Java] 메소드 오버로딩과 오버라이딩 (with 아삭 한입 정리하기) (0) | 2023.05.23 |
---|---|
[Java] 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (0) | 2021.12.14 |
Java의 장단점 (0) | 2021.11.10 |
객체, 클래스, 인스턴스의 개념 (0) | 2021.01.02 |
Java 개인 프로젝트_ 웹 데이터 크롤러_ 설계 파트 (0) | 2020.11.29 |