변수란, 하나의 값을 저장할 수 있는 메모리 공간이다.
변수를 사용한다는 것은 변수에 값을 저장하고 읽는 행위를 말한다.
변수는 선언된 블록 내에서만 사용이 가능(Ex. 메소드)
1. naming
변수 이름은 메모리 주소에 붙여진 이름이다. 변수 이름을 통해 메모리 주소에 접근하여 값을 저장하거나 값을 읽는다.
자바 언어에서 정한 명명 규칙(naming convention)이 있는데 다음과 같다.
작성 규칙 | 예 |
첫 번째 글자는 문자이거나 '$', '_' 이어야 한다 (숫자는 안됨) | 가능: price, $price, _price / 안됨: 1vv, @dfd |
영어 대소문자 구분 | firstname, firstName은 다른 변수 |
카멜표기법(낙타 등 모양) : 첫 문자는 소문자로 시작, 다른 단어가 붙으면 첫 문자는 대문자로 한다. (관례) | maxSpeed |
어떤 언어든 같겠지만 예약어는 사용 불가능 | 아래 예약어 표 참조 |
분류 | 예약어 |
기본 데이터 타입 | boolean, byte, char, short, int, long, float, double |
접근지정자 | private, protected, public |
클래스와 관련된 것 | class, abstract, intercace, 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 |
네이밍을 함에 있어서 관례란 필수적인 것은 아니지만 개발자 간의 코드 작성 패턴이기도하고 서로간의 공유하는데 있어서 코드 리뷰가 좋기 때문에 가급적 지켜주는 것이 좋다.
2. 초기화 및 리터럴
초기화란, 변수에 값을 저장하는 행위이다.
int input = 10; // 초기화됨
리터럴이란, 변수에 입력된 값을 리터럴이라고 부른다. 흔히들 우리는 상수(constant)라고 알고 있는데 상수는 전체적인 의미를 담고 있고 리터럴은 상수의 개념에서 분류를 한 것이다.
- 정수 리터럴
- 실수 리터럴
- 문자 리터럴
- 문자열 리터럴
- 논리 리터럴
// 정수 리터럴(10진수)
0, 75, -100
// 정수 리터럴(8진수): 0으로 시작하는 값은 8진수로 간주함.
02, -04
// 정수 리터럴(16진수)
0x5, 0xA
// 실수 리터럴(10진수)
0.25, -3.14
// 실수 리터럴(지수와 가수)
5E7 // 5 X 10^7
0.12E-5 // 0.12 X 10^-5
// 문자 리터럴
'A', '한'
// 문자열 리터럴
"대한민국"
// 논리 리터럴
true, false
3. 변수의 사용 범위
자바 변수는 중괄호{} 내에서만 선언되고 사용된다. 중괄호를 사용하는 곳은 클래스, 생성자, 메소드이다.
여기서 우리는 메소드라는 것만 생각하자.(메소드를 함수라고 생각해도 무방하다)
메소드 내에서 선언된 변수를 특히 지역변수(local variable)라고 부른다.
지역변수의 특징은 메소드 실행이 끝나면 메모리에서 자동으로 없어진다.
단순 예시로 1번 메소드와 2번 메소드가 있다.
1번 메소드 안에 a 변수를 선언하였는데 2번 메소드에서 a를 사용하려고 하면 에러가 난다.
왜 에러가 생길까?
이유는 앞서 말한 지역변수 특징 때문이다. 1번 메소드에서 a가 선언 되어도 1번 메소드 실행이 끝나면 a는 소멸 되기 때문이다.
'Java' 카테고리의 다른 글
[자바] 전달인자(Argument)와 매개변수(Parameter)의 차이점 (0) | 2020.04.01 |
---|---|
[자바] 데이터 타입 ( 변수 선언시 고려할 사항) (1) | 2020.03.22 |
[자바] 프로그래밍이란? / 프로그래밍 기초이론 (0) | 2020.02.12 |
[자바] JAVA 공부 기록 (0) | 2020.02.12 |
[자바] 리눅스, JDK / 이클립스 설치 (0) | 2020.02.11 |