JAVA

[JAVA] 자바의 변수와 초기화

예나부기 2021. 7. 30.

>> 변수는 변하는 수를 담는 공간이라고 알고 있었지만, 자바에서 몇 개의 변수 종류가 있는지와 각각 생성되고 소멸되는 시기에 대해서는 알지 못했다. 다시 기본부터 차근차근 짚어보자는 생각으로 정리한다.

 

자바에는 네 가지 변수가 있다.

  • 지역 변수 (local variables) 
  • 매개 변수 (parameters)
  • 인스턴스 변수 (instance variables)
  • 클래스 변수 (class variables)

1) 지역번수

- 중괄호 내에 선언된 변수

- 지역변수를 선언한 중괄호 내에서만 유효

2) 매개변수

- 매소드에 넘겨주는 변수

- 매소드가 호출될 때 생명이 시작되고, 매소드가 끝나면 소멸된다.

3) 인스턴스 변수

- 매소드 밖에, 클래스 안에 선언된 변수. 앞에는 static이라는 예약어가 없어야 한다.

- 객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸된다.

4) 클래스변수

- 인스턴스 변수처럼 매소드 밖에, 클래스 안에 선언된 변수 중 타입 선언 앞에 static이라는 예약어가 있는변수

- 클래스가 처음 호출될 때 생명이 시작되고, 자바 프로그램이 끝날 때 소멸된다.

 

public class VariableTypes{
 int instanceVariable; //인스턴스 변수
 static int classVariable; //클래스 변수
 public void method(int parameter){ //매개변수
  int localVariable; //지역변수
 }
}

 

초기화

 

초기화란 뭘까? 어떤 변수든 값을 저장하기 위해서 만든다. 저장할 값이 정해져 있다면, 그 값을 지정해주면 되겠지만, 항상 저장할 값이 정해져있지는 안다. 그래서, 변수를 선언할 때에는 초기화를 해줘야 변수를 사용할 수 있다.

 

int a = 100;과

Dog dog = new Dog();의 차이점은 무엇일까?

 

int를 초기화 할 때는 값을 바로 적어주었고,

Dog를 초기화 할 때는 new라는 예약어로 생성을 한다.

자바에서는 이렇게 new를 사용해서 초기화 할 수 있는 것을 참조 자료형,

그렇지 않고 바로 초기화가 가능한 것을 기본 자료형이라고 한다.

 

참조자료형 중 딱 하나 예외적인 것이 String이다.

String의 초기화는 대부분의 개발자가

String a = "java"; 와 같은 방식으로 한다.

하지만, 참조 자료형이기 때문에 이와 같이 초기화 해줘도 된다.

String a = new String("java");


클래스(Class)란?

    º개념

           ·  객체를 정의하고 만들어 내기 위한 설계도 혹은 틀

           ·  연관되어 있는 변수와 메서드의 집합

    º특징

           ·  객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성된다.

           ·  필드(field)란 클래스에 포함된 변수(variable)를 의미한다.

           ·  메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합

 

객체(Object)란?

    º개념

           ·  소프트웨어 세계에 구현할 대상

           ·  클래스에 선언된 모양 그대로 생성된 실체

    º특징

           ·  '클래스의 인스턴스(instance)' 라고 부른다.

 

인스턴스(Instance)란?

    º개념

           ·  설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체

              ·  즉, 객체를 소프트웨어에 실체화 하면 그것을 '인스턴스'라고 부른다.

              ·  실체화된 인스턴스는 메모리에 할당된다.

    º특징

           ·  인스턴스는 객체에 포함된다고 볼 수 있다.

           ·  oop의 관점에서 객체가 메모리에 할당되어 실제 사용될 때 '인스턴스'라고 부른다.

           ·  추상적인 개념(또는 명세)과 구체적인 객체사이에 초점을 맞출 경우에 사용한다.

           ·  즉, 인스턴스라는 용어는 반드시 클래스와 객체 사이의 관계로 한정지어서 사용할 필요는 없다.

           ·  인스턴스는 어떤 원본(추상적인 개념)으로 부터 '생성된 복제본'을 의미한다.

댓글