변수란 '단 하나의 값을 저장할 수 있는 메모리 공간'을 의미한다.
변수 타입: 변수에 저장될 값이 어떤 종류인지 지정하는 것이다. 값의 종류에 맞게 적절한 변수 타입을 선택해야 한다.
변수 선언: 변수를 선언하면 타입에 알맞은 크기의 저장 공간이 확보되고, 이 공간은 변수 이름을 통해 사용할 수 있다. 변수에 값을 넣을 때는 대입 연산자 =를 사용한다.
변수 값 교환하기: 두 변수의 값을 서로 바꿀 때는 변수를 하나 더 선언해서 '임시 저장소(temp)'로 사용해야 한다.
출력하기: 화면에 글자나 변수의 값을 출력할 때는 System.out.println()을 사용한다.
덧셈 연산자(+)의 특징: 숫자를 더하는 연산도 하지만, 문자열과 숫자를 하나로 결합하는 역할도 한다. (참고로 문자열은 큰따옴표 ""로 묶은 연속된 문자를 말한다.)
변수, 클래스, 메서드 등의 이름을 지을 때 지켜야 하는 필수 규칙 4가지이다.
대소문자가 구분되며 길이에 제한이 없다.
예약어(Keyword)를 사용해서는 안 된다. (예: int, class, true 등)
숫자로 시작해서는 안 된다.
특수문자는 _와 $만 허용한다.
타입은 크게 기본형(Primitive Type)과 참조형(Reference Type)으로 나뉜다. 엄밀히 말하면 '타입(Type)'이라는 단어가 '자료형(Data Type)'을 포함하는 더 넓은 의미로 사용된다.
기본 자료형
특징: 변수 선언 시 해당 변수의 이름으로 메모리의 스택(Stack) 영역에 공간이 할당되고, 그 안에 실제 값이 직접 저장된다. 자바의 실제 연산에 사용되는 것은 모두 기본형 변수이다.
주요 타입 특징:
int: CPU가 가장 효율적으로 처리할 수 있는 타입이라 정수를 다룰 때 보통 가장 많이 사용한다.
char (문자형): 내부적으로는 정수형과 별반 다르지 않아 정수형, 실수형과도 연산이 가능하다.
boolean (논리형): 참/거짓만 가지며, 다른 기본형과의 연산이 불가능하다.
실수형(float, double): 같은 크기의 정수형보다 훨씬 큰 값을 표현할 수 있지만, 오차가 발생할 수 있다는 단점이 있다. 정밀도가 높은 타입을 쓰면 오차 범위를 줄일 수 있다.
참조 자료형
특징: 실제 데이터(객체)는 메모리의 힙 영역에 생성되고, 변수(스택 영역)에는 그 객체가 어디에 있는지 알려주는 주소값을 저장한다.
사용: 자바는 참조형 변수 간의 직접적인 (산술) 연산을 할 수 없다. 참조형 변수를 사용할 때는 클래스의 이름을 변수의 타입으로 사용하므로, 클래스 이름이 곧 참조 변수의 타입이 된다.
상수는 변수처럼 값을 저장할 수 있는 공간이지만, 한 번 값을 저장하면 다른 값으로 바꿀 수 없다는 결정적인 차이가 있다.
선언 방법: 변수를 선언하는 방법과 동일하되, 변수 타입 앞에 final 키워드를 붙여주면 된다.
명명 규칙: 상수의 이름은 모두 대문자로 작성하는 것이 관례이다. 여러 단어로 이루어져 있다면 언더바(_)로 구분한다. (예: MAX_VALUE)
프로그래밍에서는 상수를 '값을 한 번 저장하면 변경할 수 없는 저장 공간'으로 정의하기 때문에, 우리가 흔히 말하는 '값' 그 자체를 구분하여 부를 용어가 필요하다. 이를 리터럴이라 부른다.
변수 : 하나의 값을 저장하기 위한 공간
상수 : 값을 한 번만 저장할 수 있는 공간
리터럴 : 그 자체로 값을 의미하는 것 (기존의 '상수' 개념)
예시 분석
int year = 2014; → year는 변수, 2014는 리터럴
final int MAX_VALUE = 100; → MAX_VALUE는 상수, 100은 리터럴
데이터를 저장할 때 문자인지 문자열인지에 따라 사용하는 타입이 달라진다.
char 타입: 단 하나의 문자만 저장할 수 있다. 리터럴을 작은따옴표(' ')로 감싼다.
String 타입: 여러 문자를 저장하기 위해 사용한다. 리터럴을 큰따옴표(" ")로 감싼다.
숫자나 불리언 같은 기본형 타입의 값을 문자열로 변환할 때는 매우 간단한 트릭을 사용한다. 아무런 내용도 없는 빈 문자열("")을 더해주면 된다.
예: 7 + "" → "7" (숫자 7이 문자열 "7"로 변환됨)
어떤 타입이든 문자열과 더하면 그 결과는 항상 문자열이 된다는 점을 이용한 방식이다.
printf()와 같은 출력 메서드를 사용할 때, 값을 어떤 형식으로 출력할 것인지 지정해 주는 역할을 한다.
지시자는 출력하려는 값의 타입과 일치해야 한다.
주요 지시자:
%d: 10진수(decimal) 정수 형식으로 출력
%f: 부동 소수점(floating-point) 실수 형식으로 출력
%s: 문자열(string) 형식으로 출력
%c: 문자(character) 형식으로 출력
%n: 줄바꿈(newline) 처리