Java

변수(Variable)

셩리둥절 2022. 9. 18. 04:58
반응형

변수

변수란 값을 저장할 수 있는 메모리 공간을 의미한다.

변수에는 다양한 타입의 값을 저장할 수 없고 한가지 타입의 값만 저장할 수 있다.

ex) int a = 1;로 선언시 a = "안녕"; 식으로 변경이 불가능 하다. "안녕"은 String 타입이기 때문

변수의 선언

변수 선언은 어떤 타입의 데이터를 저장할 것인지, 변수 이름이 무엇인지를 결정한다.

int number;		//정수(int) 값을 저장할 수 있는 변수 선언
double value;	//실수(double) 값을 저장할 수 있는 변수 선언

코드1 처럼 선언할 수 도 있지만 Java Coding Convention 상 코드2처럼 한줄에 하나의 변수를 선언하는 것이 좋습니다.

//코드1
int x, y, z;	//비추천
//코드2
int x;
int y;
int z;

변수 명명(naming convention)

1. 첫 번째 글자는 문자이거나 '$', '_' 이어야 하고 숫자로 시작할 수 없다.

2. 영어 대소문자가 구분된다. -> valuetest와 valueTest는 다른 변수이다.

3. 첫 문자는 소문자로 시작, 연속되는 단어의 첫 문자는 대문자.(Camel case 관례)

4. 문자 수(길이) 제한 없다.

5. 예약어는 사용할 수 없다.

 

위 이외에도 변수명은 개발 시 가독성의 중요한 부분이므로 어플리케이션 개발 시 int a; 와 같은 의미없는 변수명으로는 선언하지 않는 것이 좋습니다!

공부할 때는 상관없지만, git의 공개된 repository에 올리는 프로젝트인 경우 한글로는 명명하지 않는 것이 좋습니다.

int $value;		//가능
int valueTest; 		//Camel case
int class; 		//예약어 안됨

int @value;		//$, _ 제외 특수기호 안됨
int 1value; 		//숫자 시작안됨
int Test; 		//첫 글자 대문자 안됨

예약어 종류

기본 데이터 타입 boolean, byte, char, short, int, long, float, double
접근 지정자 private, protected, public
클래스 관련 class, abstract, interface, extends, implements, enum
객체 관련 new, instanceof, this, super, null
메소드 관련 void, return
제어문 관련 if, else, switch, case, default, for, do, while, break, continue
논리값 true, false
예외 처리 관련 try, catch, finally, throw, throws
기타 transient, volatile, package, import, synchronized, native, final, static, strictfp, assert

예약어는 처음부터 다 외울 필요 없이 계속 공부해나가다 보면 당연히 변수명으로 안쓰게 됩니다!!

 

변수값 저장

변수에 값을 저장할 때에는 대입 연산자(=)를 사용합니다.

변수를 선언하고 처음 저장한 값을 초기값이라고 합니다.

int num1;			//변수 선언
num1 = 1;			//변수 초기화

int num2 = 2;		//선언과 초기화를 동시에 한 경우

데이터 타입

기본(원시: primitive) 타입

정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입

종류   메모리 사용 크기
정수 byte 1 byte 8 bit
char 2 byte 16 bit
short 2 byte 16 bit
int 4 byte 32 bit
long 8 byte 64 bit
실수 float 4 byte 32 bit
double 8 byte 64 bit
논리 boolean 1 byte 8 bit

자바는 기본적으로 정수 연산을 int 타입으로 수행한다.

byte 와 short는 메모리는 절약할 수 있으나, 값의 범위가 작은 편이여서 연산 시에 범위 초과시 잘못된 결과를 얻을 수 있다.

반응형

'Java' 카테고리의 다른 글

Java에서 사용하는 정렬(sort) 메소드는 무슨 알고리즘을 사용할까?  (2) 2025.02.10
Scanner와 BufferedReader 차이 분석  (4) 2025.02.06
[디자인 패턴]MVC 패턴  (1) 2022.10.06
JVM(Java Virtual Machine)  (0) 2022.09.15
Java  (1) 2022.09.11