Java/변수와 연산자

Java 변수 (Variable)

PiccoBella 2023. 3. 18. 15:39

■ 변수란?

프로그램의 동작에 필요한 데이터를 저장할 필요가 있다. 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를 대입한다는 의미이다.  연산자 알아보기