변수에 대한 설명을 하려고 합니다.
우선 변수란 값을 저장할 수 있는 메모리 상의 공간을 의미합니다. 하나의 변수는 단 하나의 값만을 저장할 수 있습니다. 그래서 값을 여러번 저장하면 마지막에 저장한 값을 갖게 됩니다.
간단한 예를 들어 보겠습니다.
위 소스를 보면 number이라는 변수를 생성한 것을 알 수 있습니다.
number의 앞에 int 라는 것이 붙어 있는데 이 int는 변수의 타입을 의미합니다.
int는 integer를 나타내며 정수를 나타내는 변수타입 입니다.
즉 위의 소스는 number이라는 정수형 변수를 선언하고 그 값을 0으로 초기화를 시키겠다는 말입니다.
그 다음에 number = number +1 이라는 문이 있습니다.
이는 number의 값에 1을 더하겠다는 의미로 number의 값은 1이 됩니다.
위에서 말했듯이 값을 여러번 저장하면 마지막에 저장한 값을 가지게 됩니다.
그래서 number의 값은 1이 되고 출력은 'number의 값은 : 1입니다.' 가 됩니다.
또 여러개의 변수를 선언할 때는 두 가지 방법이 있습니다.
하나는 이렇게 변수를 선언하는 방법입니다.
이렇게 선언을 하면 변수를 선언할 때 마다 줄을 바꿔서 새로 선언을 해야 하므로 공간이 낭비되고 코드가 길어지며 매번 정수형 타입을 선언해야 하는 번거로움이 있습니다.
하지만 한 눈에 보기에 좋다는 장점이 있습니다.
다른 방식은 이렇게 한줄에 여러개를 선언하는 방식입니다.
이 방식으로 하면 코드를 간결하게 할 수 있습니다.
하지만 여러개의 변수를 이렇게 선언을 하면 한 눈에 보기 힘들다는 단점이 있습니다.
상황에 따라 자신이 편한 방식으로 사용하면 될 것 입니다.
다음은 변수명을 지을 때 규칙을 설명하겠습니다.
1. 대소문자가 구분되며 길이에 제한이 없다.
- True와 true는 서로 다른 것으로 간주된다.
2. 예약어를 사용해서는 안 된다.
- true는 예약어라서 사용할 수 없지만, True는 사용할 수 있다.
3. 숫자로 시작해서는 안 된다.
- top10은 허용하지만, 7up는 허용되지 않는다.
4. 특수문자는 '_'와 '$'만을 허용한다.
- $harp은 허용되지만, S#arp는 허용되지 않는다.
[참고] 예약어는 키워드(keyword) 또는 리져브드 워드(reserved word)라고 하는데, 프로그래밍언어의 구문에 사용되는 단어를 뜻합니다. 그래서 예약어는 클래스나 변수, 메서드의 이름으로 사용할 수 없습니다.
책에는 이렇게 4가지의 규칙이 나와있습니다.
그 외에 자바프로그래머들에게 권장하는 규칙들이 있습니다.
1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
- lastIndexof, StringBuffer
3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다.
- FI, MAX_NUMBER
위의 규칙은 반드시 지켜야 할 규칙은 아니지만, 코드를 보다 쉽게 이해하기 위한 개발자들 사이의 암묵적인 약속입니다. 지키지 않아도 따로 문제가 되지는 않지만 가능하면 지키도록 합시다.
명명규칙에 대해 좀 더 알아보고 싶으시면 키워드로 카멜 케이스를 찾아보시길 추천드립니다.
쌍봉낙타라고 하여 처음 시작은 소문자 단어의 시작은 대문자로 이루는 표기법입니다.
다음은 변수의 타입입니다.
제일 처음에 언급했던 int 외에도 여러 가지의 변수 타입이 있습니다.
변수의 타입은 크게 기본형과 참조형 2가지로 나눌 수 있습니다.
기본형 변수는 실제 값(data)를 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소를 값으로 가집니다.
자바에서 실제 연산에 사용되는 것은 모두 기본형 변수 입니다.
기본형(Primitive type)
논리형 - boolean
문자형 - char
정수형 - byte, short, int, long
실수형 - float, double
참조형(Reference type)
- 8개의 기본형을 제외한 나머지 타입, 객체의 주소를 저장한다.
기본형 변수에는 위처럼 8개의 타입이 있으며, 크게 논리형, 문자형, 정수형, 실수형 으로 구분이 됩니다.
논리형은 true와 false 중 하나의 값으로 가지며, 조건식과 논리적 계산에 사용됩니다.
문자형은 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있습니다.
정수형은 정수값을 저장하는데 사용됩니다.
실수형은 실수값을 저장하는데 사용됩니다.
크기 종류 |
1 byte |
2 byte |
4 byte |
8 byte |
논리형 |
boolean |
|
|
|
문자형 |
|
char |
|
|
정수형 |
byte |
short |
int |
long |
실수형 |
|
|
float |
double |
char형 변수에는 문자를 이용하여 특수문자를 사용할 수 있습니다.
\t 는 tab키를 의미하고, \b 는 backspace키를 의미한다. 여기서 \는 \를 의미하는데 이 역슬래쉬를 출력하기 위해서는 \\를 사용하면 됩니다.
char형 변수는 단 하나의 문자만 저장을 할 수 있기 때문에 여러 문자를 저장하기 위해서는 string클래스를 사용해야 합니다. string에 대해서는 다음에 좀 더 자세히 공부하기로 하고 넘어 가겠습니다.
마지막으로 형변환에 대해 설명하겠습니다.
형변환은 변수 또는 리터널의 타입을 다른 타입으로 변환하는 것입니다.
형변환도 기본형과 참조형으로 나뉘며 기본형은 기본형으로만, 참조형은 참조형으로만 형변환이 가능합니다. 이 장에서는 기본형 형변환에 대해서만 언급을 하고 있고, 참조형 형변환은 다음에 더 자세히 나옵니다.
형변환을 하는 방법은 변수나 리터널 앞에 변환하고자 하는 타입을 괄호와 함께 붙여주면 됩니다.
간단한 예를 들어보도록 하겠습니다.
변수 a를 실수형으로 선언을 했는데
정수형으로 실수 a를 저장합니다.
그리고 그 값을 byte 형으로 변환하여 저장합니다.
이 소스의 출력 결과는
85.4
85
85
가 나옵니다.
즉 피연산자는 형변환 후에도 아무런 변화가 없다는 것을 알 수 있습니다.
8개의 기본형 중 boolean을 제외한 나머지 7개의 기본형 간에는 서로 형변환이 가능합니다.
형변환을 할 때 자바에서 자동으로 형변환을 해 주는 경우가 있는데 이 때는 값의 범위가 작은 것에서 큰 것으로 형변환을 시킬 때 입니다. 값의 범위란 위의 표에 있는 크기를 의미합니다.
그 반대인 경우는 반드시 캐스트 연산자를 이용한 형변환을 해야 합니다.
형변환에서의 키워드를 추출해보면
1. boolean을 제외한 나머지 7개의 기본형은 서로 형변환이 가능하다.
2. 기본형과 참조형은 서로 형변환할 수 없다.
3. 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략할 수 있다.
이정도로 볼 수 있습니다.
'JAVA' 카테고리의 다른 글
자바8 - 3. 람다 (0) | 2018.10.02 |
---|---|
자바8 - 2. 동적 파라미터화 (0) | 2018.10.02 |
HashMap vs HashTable vs ConcurrentHashMap (0) | 2017.12.31 |
CheckedException vs UnCheckedException (0) | 2017.06.16 |
JAVA - 로그함수 (밑이 2인 로그 함수) (0) | 2015.11.26 |