ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day17- JAVA (자바 ,객체지향언어, 변수, 클래스변수, 인스턴스변수, 메서드, 매개 변수)
    KIC/JAVA 2021. 7. 15. 17:05
    반응형

    [객체지향언어]

    -> 코드의 재사용성이 높다.

     

    -> 코드의 관리 용이

     

    -> 신뢰성이 높은 프로그래밍 가능

     

    -> 유지보수가 용이 -> 비용이 줄어들게 된다.

     

     

     

     

    [객체의 구성 요소]

    -> 속성과 기능으로 구성되어 있다.

     

    -> 속성은 맴버 변수로 기능은 메서드로 표현 된다.

     

     

     

     

     

    -> 인스턴스는 같은 클래스로 선언된 참조변수를 통해 다룰 수 있다.

     

    -> 메서드의 내용은 모든 인스턴스에 대해 동일하다. (동일한 틀)

     

    -> 참조 변수에는 하나의 값만이 저장될 수 있다. 둘 이상의 참조변수가 하나의 인스턴스를 가리키는 것은 가능하지만 하나의 참조변수로 여러 개의 인스턴스를 가리키는 것은 불가능

     

     

     

     

    클래스 - 데이터와 함수의 결합

    1) 변수 - 하나의 데이터를 저장할 수 있는 공간

    2) 배열 - 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간

    3) 구조체 - 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간

    4) 클래스 - 데이터와 함수의 결합(구조체 + 함수)

         -> 자바에서는 String이라는 클래스로 문자열을 다룬다.

         -> 문자열을 단순히 문자의 배열로 정의하지 않고 클래스로 정의한 이유는 문자열과 문자열을 다루는데 필요한               함수들을 함께 묶기 위해서이다.

     

     

     

     

     

     

    [변수]

    인스턴스변수(instance variable)
    - 클래스 영역에 선언되며, 클래스의 인스턴스를 생성 할 때 만들어진다. 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.

     

     

     

     

    클래스변수(class variable)
    - 클래스 변수를 선언하는 방법은 인스턴스변수 앞에 static을 덧 붙이기만 하면 된다.
    - 클래스변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다.
    - 그래서 클래스 변수를 공유 변수(shared variable)라고도 한다. 클래스 변수는 인스턴스를 생성하지 않고도 언제라도 바로 사용 할 수 있으며, '클래스이름.클래스변수'와 같은 형식으로 사용한다.

     



    지역변수(local variable)
    - 메서드 내에 선언되어 메서드 내에서만 사용 가능하며, 메서드가 종료되면 소멸되어 사용할 수 없게 된다.

    - for문 또는 while문의 블럭 내에 선언된 지역변수는, 지역변수가 선언된 블럭{} 내에서만 사용 가능하며, 블럭{}을 벗어나면 소멸되어 사용할 수 없게 된다.

     

     

     

     

    [클래스변수와 인스턴스변수]

    인스턴스 변수:  인스턴스가 생성될 때 마다 생성 될 때마다 생성되므로 각기 다른 값을 유지할 수 있다.

    클래스 변수:  모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 갖는다.

    [호출]
    클래스 변수(static) : 클래스명.변수명,인스턴스 변수명 -> 변수 하나의 공간을 공유하기 때문에 이렇게 가능 

    인스턴스 변수 : 인스턴스 변수명

     

    [선언 위치에 따른 변수의 종류]
    클래스(static) 변수 :

      클래스 영역에 선언.
      static 예약어로 선언함
      글래스 정보가 메모리에 로드될때 변수메모리 할당.
      객체화(new 연산자로 주소생성 )와 관련없는 변수임.
      메모리할당 위치 : 클래스 영역.
      클래스의 모든 객체의 공동 변수로 사용됨.
      사용 : 클래스명 . 변수명,


    인스턴스변수 :

      클래스 영역에 선언됨
      자료저장형 변수명; 선인됨.
      객체회시 메모리 할당받음.
      반드시 객체화 되어야 변수를 사용할 수 있음
      메모리 할당 위치 : 입영역
      사용 : 참조변수명, 변수명


    지역변수:

      메서드 내부에서 선언됨.
      (매개변수포함) 초기화되어야함.
      변수선언이 실행될때 메모리 할당.
      메모리할당 : 스택영역
      사용 : 변수명

     

     

    [메서드]

    - 메서드는 어떤 작업을 수행하기 위한 명령문의 집합 이다.


    - 하나의 메서드는 한 가지 기능만 수행하도록 작성 하는 것이 좋다.


    - 반복적으로 수행되어야 하는 여러 문장을 하나의 메서드로 정의해 놓으면 좋다.


    - 관련된 여러 문장을 하나의 메서드로 만들어 놓는 것이 좋다.

    - 메서드는 크게 선언부와 구현부(몸통, body), 두 부 분으로 나누어져 있다.

     

    - return -> return이 실행되면 메서드가 종료됨. 리턴 타입이 void가 아닌 경우는 반드시 return 값을 구현해야 한다. void인 경우 return 생략 가능함.

     

     

     

     

    public -> 접근 제어자

     

    void -> 리턴 타입

     

    main -> 메소드 명

     

    String[] args -> 매개변수 목록

     

     

     

     

    static -> 여기서 스태틱은 객체화 시키지 않고 바로 메모리로 저장시켜 바로 실행 시킬수 있도록 한다는 뜻

     

    (메인 메소드가 실행 되려면 해당 되는 파일과 이름이 같아야 하고 해당 되는 클래스가 public이여야 한다)

    (하나의 파일에는 public 클래스가 하나만 있어야 한다. (main 메소드))

     

     

    [메서드]
    - 메서드의 괄호()에 선언된 매개변수는 지역변수로 간주 되어 메서드 내에서만 사용될 수 있다

    - 매개변수는 메서드가 종료되는 순간 메모리에서 제거 되어 더 이상 사용할 수 없게 된다.

    - 리턴타입은 메서드의 수행결과를 어떤 타입(자료형)으로 반환할 것인지를 알려 주는 것이다.

    - 메서드가 결과값을 반환하지 않는 경우에는 리턴타입 대신 void를 사용한다.

    - 메서드가 결과값을 반환하는 경우에는 메서드 내에 반드시 return 문을 사용해서 리턴타입에 맞는 결과값을 호출한 메서드에게 반환하도록 해야 한다.

    - 메서드의 결과를 저장하기 위해서는 메서드에 선언된 리턴타입과 같은 타입의 변수를 준비해야한다.


     

     

    [JVM 의 메모리 구조]

     

     

    - 용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.



    메소드영역 (Method Area)
    - 프로그램 실행 중 어떤 클래스가, 사용되면  해당 클래스의 클래스파일(*.class) 를 읽어서 분석하여, 클래스에 대한 정보(클래스 데이터)를 Method Area에 저장한다. 이 때, 그 클래스의 클래스 변수(Class" variable)도 이 영역에 함께 생성된다.

     

     

    힙(Heap)

    - 인스턴스변수(instance variable)들이 생성되는 공간 이다.
    - 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에서 생성.

     

     

    호출스택

    - 호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다.
    - 메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당된다.
    - 이 메모리는 메서드가 작업을 수행하는 동안 지역변수(매개 변수 포함)들 과 연산의 중간결과 등을 저장하는데 사용.
    - 메서드가 작업을 마치게 되면, 할당되었던 메모리공간은 반환되어 비워진다.

    - 호출스택의 제일 상위에 위치하는 메서드가 현재 실행중인 메서트이며, 나머지는 대기상태에 있게 된다.
    - 호출스택을 조사해 보면 메서드 간의 호출 관계와 현재 수행중인 메서드가 어느 것인지 알 수 있다.

     

     

     

     

    [기본형 매게변수와 참조형 매개 변수]

    - 자바에서는 메서드를 호출할 때 매개변수로 지정한 값을 메서드의 매개 변수에 복사해서 넘겨준다.


    - 매개변수의 타입이 기본형 (Primitive type)일 때는 기본형 값이 복사되 겠지만, 참조형 (Reference type)이면 인스턴스의 주소가 복사된다.

    - 메서드의 매개변수를 기본형으로 선언하면 단순히 저장된 값만 얻지만, 참조형으로 선언하면 값이 저장된 곳의 주소를 알 수 있기 때문에 값을 읽어 오는 것은 물론 값을 변경하는 것 도 가능.

    기본형 매개변수 - 변수의 값을 읽기만 할 수 있다. (read only)

    참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. (read & write)

    300x250

    댓글

Designed by Tistory.