변수
변수는 데이터를 담아둘 수 있는 메모리 공간이다.
쉽게 말해 상자라고 할 수 있다.
기본적인 틀은 다음과 같다.
int a;
여기서 int는 데이터 타입이고, a가 변수(명)가 된다.
데이터 타입은 말 그대로 그 데이터가 무슨 타입인지 나타내주는 것이다.
대표적으로 int, float, long 등 이 존재한다. (해당 타입들을 처음 봤으면 float정의 long 정의를 구글에 검색해보자)
a는 변수(명)로 이제 이곳에 바뀌는 값이 들어가게 된다.
이것을 '변수 선언' 이라고 한다.
int a = 1;
이렇게 쓰면 데이터 타입은 int고 변수는 a가 되며 그 변수에 처음 들어가는 값은 1이 된다.
초기값을 설정해주면서 선언을 해주는 것이다.
변수 설정에는 몇가지 약속이 있다.
변수명의 처음엔 숫자가 들어 갈 수 없고, $, _ 이외의 특수문자는 사용 할 수 없다. 그리고 대소문자를 구분한다.
상수
상수는 처음에 선언한 값으로 고정 된 값이다. 선언 이후 바꾸면 에러가 발생한다.
기본적인 틀은 다음과 같다.
final int a = 100;
이렇게 되면 a를 다른 값으로 바꾸는 순간 오류가 발생하게 된다.
데이터 타입
데이터 타입은 정수, 실수, 문자, 논리 4가지가 존재한다.
정수형은 정수 데이터 타입을 담는다. ex) 1, 2, 3, 4
크기별로 byte, short, int, long이 존재하고 왼쪽에서 오른쪽으로 갈 수록 크기가 커진다.
따라서 크기 때문에 상위 타입에는 하위 타입을 표현 할 수 있지만, 역은 그렇지 않다.
long은 L을 붙여 표시해준다. ex) long a = 4L
실수형은 실수 데이터 타입을 담는다. ex) 0.1, 0.001, 0.2, 3.4
크기별로 float과 double이 있고, 특이하게 int와 float의 크기는 같지만, float를 int로 형변환시 소숫점이
없어지는 데이터 손실이 발생한다.
float f를 붙여 표시해준다. ex) float a = 0.1f
문자형은 문자 데이터 타입을 담는다. ex) A, AP, 안녕하세요
문자는 char로 문자열(문자의 집합)은 string을 사용한다.
논리형은 논리 데이터를 가진다. ex) true(1), false(0)
이것은 boolean이라는 자료형 안에 담긴다.
형변환
형변환이란 데이터 타입을 다른 데이터 타입으로 변경하는 작업입니다.
형이 맞지 않는 데이터 타입끼리 연산을 하면 오류가 발생하므로 형변환이 필요합니다.
위에 말했듯이 상위 데이터 타입을 하위 데이터 타입으론 표현 할 수 없지만,
강제 형변환을 통해서는 가능하다. 예를 들자면 큰 상자를 작은 상자에 접거나 구겨서 넣을 순 있지만,
큰 상자는 그 형태나 기능을 상실한다.
이것을 보고 명시적 형변환이라고 한다. 명시적 형변환은 데이터 손실을 유발한다.
변수의 3가지 종류
변수는 총 3가지의 형태로 구분 될 수 있다.
1. 데이터 타입
2. 전역변수와 지역변수
3. 인스턴스 변수와 클래스 변수
데이터 타입은 위에서 설명한 것과 주소값을 담는 참조변수가 존재한다.
전역변수와 지역변수는 범위에 따른 구분으로 전역변수는 클래스 밑에 정의된 변수고, 지역변수는 클래스 안의 함수에서 정의된 변수이다.
전역변수와 지역변수 이름은 같을 수 있지만, 함수안에서는 지역변수가 우선권을 가진다.
인스턴스 변수와 클래스 변수의 차이는 인스턴스 변수는 클래스를 생성할 때마다 클래스 각각에 선언된 변수이고, 그래서 이름이 같아도 참조변수로 주소를 구분하면 각각 다른값을 가질 수 있다.
클래스 변수는 static을 변수 앞에 붙여서 사용한다. 이 클래스변수로 선언이 된 변수는 유일하며 공유된 값을 가지고, 클래스명으로 접근 할 수 있다.