■ 변수란?
프로그램의 동작에 필요한 데이터를 저장할 필요가 있다. Java는 이러한 데이터를 메모리에 저장한다. 변수가 프로그램 언어에서 가장 기본이면서 중요한 문법인데 그 이유는 프로그램에서 사용되는 데이터가 바로 이 변수에 저장되고 관리 되기 때문이다.
변수(Variable)는 값(Value)이 저장된 메모리의 위치에 주어진 대표 이름이다. 프로그램에서 사용하는 데이터(숫자, 문자, 문자열, 논리값)들을 저장하기 위한 메모리 공간으로 그릇에 비유할 수 있다. 변수를 변수라고 부르는 이유는 변수 저장된 데이터가 처리에 따라 달라지기 때문이다.
■ 변수 선언 및 초기화
변수를 이용하기 위해서는, 우선 그 변수에 어떤 타입(“수치/문자열등)의 값을 저장할 것인가?” “무슨 이름을 붙일 것인가?”, “처음에 저장할 값은 무엇인가?” 등을 선언(지정)해야 한다. 변수를 이해 할 때 그릇을 떠올리면 쉬운데 물을 담으면 물그릇 밥을 담으면 밥그릇이 된다. myInt 라는 이름의 변수에 4라는 정수타입의 값을 담았다라고 표현하면 데이터의 의미를 명확하게 전달할 수 있다. ≠ 반대 의미로는 상수가 있다. 상수는 한번 값을 가진 이후에는 다른 값으로 변경할 수 없는 특수한 변수를 의미한다.
다시말해서, 기본적으로 이렇게 지정하면 된다.
- 데이터 타입(유형) : 8가지
- 변수이름
- 초기값
- int myInt =4; (설명: 데이터 타입 , 변수이름 = 초기값 ; )
- double myReal = 2.5;
■ 변수 선언
변수 선언은 프로그램에서 사용하려는 변수를 프로그램에 알리는 것이다. 프로그램은 선언된 변수만 제어할 수 있다. 변수를 사용하기 전에 저장하고자 하는 데이터 유형이나 크기에 따라 반드시 자료형(Data type)을 붙여서 변수를 선언하여야 한다.
데이터 타입 변수이름 ; (문장 종결을 반드시 세미콜론으로 마무리)
- 반드시 문자(한글도가능)로 시작 해야 한다.( 숫자 안됨)
- 공백 포함 안됨
- 특수 기호는 '$', '_' 요렇게 두 가지만 허용
- 대 / 소문자 구별 (score, SCORE 는 다른 변수로 처리됨)
- 자바에서 미리 지정한 예약어는 사용할 수 없음
- 소문자로 시작하고 새로운 단어가 결합되면 첫 글자를 대문자로 변경한다. (예: javaScript )
- 변수 이름은 길이 제한이 없고 너무 축약된 이름은 가독성을 떨어뜨리기 때문에 지양
■ 변수와 데이터 유형
각 변수들은 그들이 가질 있는 자료형에 따라 다양한 형태으로 분류될 수 있다. 기본 자료형(Data type)에는 정수, 실수, 문자, 논리값 등과 같은 자료형이 있으며, 참조 자료형에는 배열, 클래스, 인터페이스 등이 있다.
- 상수(Constant) : 항상 일정한 값을 유지하는 데이터이다.
- 변수(Variable) : 특정 상황에 따라 값이 변하는 데이터이다.
- 기본자료형(primitive datatype)은 값을 가지고 있는 변수 즉, 선언된 변수에 실제 값이 저장된다.
- 참조자료형(reference dataType)은 주소를 가지고 있는 변수 즉, 선언된 변수에 값이 아닌 인스턴스(객체)에 대한 주소값이 저장된다..
기본 자료형
문자형: char x = 'y'; System.out.println(x); [ 출력값 ] >> y (아스키 코드값 참고)
논리형: boolean x = true; System.out.println(x); [ 출력값 ] >> true
정수형: byte, short, int x = 10;, long
부동 소수점형: float, double x = 10;
참조 자료형
클래스
-String 클래스 : String 객체간의 비교는 .equals() 메소드를 사용String str1 = new String(test);
String str1 = new String(test);
String str2 = new String("test");
-Wrapper 클래스 : 기본자료형을 감싼 형태로, 기본자료형의 데이터를 인스턴스(객체)로 만들기 위해 사용하는 클래스이다. valueOf() 메소드 이용
< Wrapper 클래스의 종류 >
기본자료형 Wrapper 클래스 byte Byte char Char(Character) short Short int Integer long Long float Float double Double boolean Boolean
int x = 5; Integer x_test = new Integer(x); // int → Integer String y = "5"; Integer y_test = new Integer(y); // String → Integer
int x = 5; Integer x_test = Integer.valueOf(x); // int → Integer String y = "5"; Integer y_test = Integer.valueOf(y); // String → Integer }
인터페이스 :추상 메소드와 상수의 집합이며, 구현부와 함께 선언해야 인터페이스 사용 가능
public interface Eatable { void eat(); } public interface action extends Eatable { // 구현부 }
배열 : 여러 개의 값을 관리할 수 있다. 배열은 하나의 공간을 갖게되고, 그 공간에 값이 직접 들어가는게 아니라 값이 들어있는 다른공간의 위치 주소값(참조값)을 알려준다. 또한 같은 타입의 값만 받을 수 있으며, 어떤 형태의 값을 받을지 선언할 때 지정해줘야 한다.
1) 기본자료형으로 배열 선언
public class Test { public static void main(String[] args) { int [] x = new int[array_size]; // array_size는 0보다 큰 정수 } }
2) 참조자료형으로 배열 선언
public class Test { public static void main(String[] args) { Long [] x = new Long[array_size]; // array_size는 0보다 큰 정수 Object[][] y = null; } }
■ 변수 초기화
변수 초기화는 앞에서 선언한 변수에 데이터를 저장하는 동작이다. 초기화하는 방법은 아래와 같은 2종류의 방법이다.
선언과 초기화를 다른 열에서 수행하는 방법
int num;
num = 10;
선언과 초기화를 같은 열에서 수행하는 방법
int num = 10;
위의 방법 중 어떤 방법을 사용해도 상관 없다. 데이터 유형이 같으면 다음과 같이 변수를 열거할 수도 있다.
double num = 3.14, num2 =1.413;
Tip
수학에서는 ‘=‘의 의미가 같다는 의미로 사용되지만, 프로그래밍에서는 대입의 의미로 사용된다.
그래서 int result = 5 라는 코드의 의미는 int 형의 result 변수에 5를 대입한다는 의미이다. 연산자 알아보기