2024-09-04 :: 031 Java 시작하기
JS(자바 스크립트)를 끝내고 Java에 들어갔다. 기초적인 것은 대부분 자바스크립트와 비슷한 양상을 띄는데 한 번 스스로 정리해보는 시간을 가지고 앞으로 다룰 프로그램의 기본적인 생성 방법을 후술하도록 하겠다.
1. 변수
변수란 프로그램 처리 과정에 필요한 데이터를 담아둘 수 있는 저장공간을 말한다. 하나의 값만 저장이 가능하나 언제든 그 값이 변할 수 있다. 변수에 저장된 값은 언제든지 꺼내어 사용이 가능하다. (물론 영역 안에서 선언되어야 한다.)
변경된 값은 덮어쓰기 방식으로 기존의 값이 바뀌는 것이며 기본적으로 누적되는 형식이 아니다.
2. 변수의 선언
선언이란 변수를 새로 생성하다, 혹은 정의하다 라는 의미와 똑같다. 말 그대로 변수를 생성해야 데이터를 담을 수 있기 때문에 먼저 선언을 해야한다. 선언을 하는 방법은 데이터를 담을 타입을 정하고 변수명을 입력하면 된다.
3. 변수의 초기화
초기화는 선언된 변수에 처음 값을 담을 때를 말한다. 한 번 선언된 변수는 이후에도 값을 바꿀 수 있기 때문에 그런 경우에는 초기화라 하지 않는다. 초기화는 초기 값을 설정할 때만 일컫는 단어이다. 대입연산자(=)를 통해 변수에 값을 담을 수 있다.
4. 변수 이름의 규칙
데이터를 담을 변수의 이름은 사용자가 임의로 정할 수 있는데 몇 가지 제약이 있다. 숫자로 시작해서는 안되며, 달러표기($)와 언더바(_)를 제외한 특수문자가 앞에 와서도 안된다. 숫자가 앞에 오면 안되는 이유는 문자열은 따옴표(" ")로 변수와 문자의 구분이 가능하지만 숫자는 별도의 표기가 없기 때문에 혼동될 수 있는 위험이 있기 때문. 그 외에도 변수는 대소문자를 구분하기 때문에 같은 알파벳이라도 대소문자에 따라 전혀 다른 변수가 되니 주의하자.
5. 데이터 타입
앞서 변수를 선언하기 위해 데이터 타입을 정해야 한다 했는데, 데이터 타입이란 정수/실수/문자/논리(참과 거짓) 의 종류를 말한다. 이를 담아낼 데이터 타입을 미리 변수 앞에 표시하여 어떤 데이터 유형인지 추측이 가능하게 하는 것이다.
그리고 위의 4개의 타입인 기본 변수 외에도 '참조 변수'가 존재한다. 이는 어떤 객체가 만들어질 때 부여받는 주소를 저장하기 위해 나온 변수로 흔히 문자열을 담을 수 있는 String 또한 참조변수이다.
정수형 데이터
byte | 1Byte | 8 bit | -128 ~ 127 |
short | 2Byte | 16 bit | -32,768 ~ 32,767 |
int | 4Byte | 32 bit | -2,147,483,648 ~ 2,147,483,647 |
long | 8Byte | 64 bit | -2⁶³ ~ 2⁶³ -1 |
실수형 데이터
float | 4Byte | 32 bit | 1.4×10⁻ ⁴⁵ ~ 3.4×10³⁸ |
double | 8Byte | 64 bit | 4.9×10⁻³²⁴ ~ 1.8×10³⁰⁸ |
문자형 데이터
char | 2Byte | 16 bit | 0 ~ 2¹⁶ -1 (유니코드 ~65535) |
6. 형변환
생성 때 지정된 데이터 타입을 이후에 바꿀 수도 있는데 이를 형변환이라고 한다. 형변환의 종류에는 자동 형변환과 명시적 형변환이 있는데, 자동 형변환은 일단 기본적으로 변수가 가지고 있는 데이터 값이 변하면 안된다. 그래서 기본적인 제약이 있는데 명시적 형변환은 이를 가능토록 강제로 변환시키는 것을 말한다. 타입을 강제로 바꾸기 때문에 명시적 형변환을 사용하게 되면 변수의 값이 바뀐다는 점이 있다.
데이터 타입이 수용할 수 있는 각 데이터의 크기가 다른데 당연히 데이터 크기가 큰 타입을 보다 작은 타입에 담으려고 하면 에러가 뜬다. 하지만 이럴 때 괄호를 붙여 강제로 데이터 타입을 바꾸면 처리과정을 거쳐 그 데이터 크기에 맞는 값으로 바뀌게 된다. 위와 같이 강제형변환을 한 test_1 변수의 값은 -127로 출력 될 것이다. byte가 담을 수 있는 범위의 한계를 벗어났기 때문에 다시 음수에서부터 시작되어 숫자를 세어가기 때문이다.
반대로 데이터 타입의 크기가 작은 변수는 보다 큰 타입의 변수에 담는 것이 가능한데, 수용할 수 있는 범위가 넓어 변수에 담긴 값이 변하지 않기 때문이다.
실수가 담긴 변수를 데이터 타입이 정수인 곳에 담으려 하자 에러가 뜬다. 이는 정수를 표현하는 곳에서 실수(소숫점)를 지원하지 않기 때문인데 이를 강제로 변환하여 출력하게 된다면 소숫점을 없앤 정수만 화면에 출력된다. 하지만 반대로 정수를 실수로 변환하는 것은 가능하다. 숫자 10과 10.0은 같은 수기 때문에 오류없이 잘 작동되는 것을 확인할 수 있다.
이번에는 문자형에 정수를 담아보았지만 역시 되지 않았다. 하지만 반대로 문자를 정수형에 담아내자 에러 없이 잘 작동되었는데 이는 문자는 애초부터 할당되어 있는 고유의 숫자를 가지고 있기 때문이다.