변수와 메서드

Munang·2021년 11월 29일
0

자바의 정석

목록 보기
4/6

이 블로그의 내용을 참조했습니다.

변수와 메서드

  1. 선언위치에 따른 변수의 종류

변수 - 클래스변수(정적할당=stack), 인스턴스 변수(동적할당=heap), 지역 변수(정적할당=stack) 3종류 있다.

멤버변수 중 static이 붙은 것 - 클래스 변수, 나머지는 인스턴스 변수

지역변수는 멤버변수를 제외한 나머지 모든 것

class Variables
{
	int iv; //인스턴스 변수 -> 인스턴스 생성시 
	static in cv; //클래스 변수 -> 클래스가 메모리에 올라갈때 

	void method()
	{
		int Iv =0; //지역 변수
	}

}
  • 클래스가 메모리에 올라갈때는 언제이지?
    클래스 변수는 인스턴스마다 독립적인 저장공간을 갖는 인스턴스변수와는 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유하게 된다.
    클래스 변수는 인스턴스 변수와 달리 언제라도 바로 사용할 수 있고, 클래스이름.클래스변수 와 같은 형식으로 사용하게 된다.

  • 클래스가 메모리에 로딩되어 프로그램이 종료될때까지 유지되며, public을 앞에 붙이면 같은 프로그램 내의 어디서나 접근 가능하다.

  • 지역변수는 메소드가 종료되면 소멸된다. for문 혹은 while문 내에 선언된 지역변수는 지역 변수가 선언된 블럭 내에서만 사용가능하고, 블럭을 벗어나면 소멸되어 사용할 수 없게 된다.

    메서드

    • 메서드를 사용하는 이유
      • 높은 재사용성
      • 중복된 코드의 제거
      • 프로그램 구조화
    • 메서드의 실행흐름
      - 같은 클래스 내의 메서드끼리는 참조변수를 사용하지 않고도 서로 호출이 가능
      - static메서드는 같은 클래스 내의 인스턴스 메서드를 호출할 수 없다.
       → 클래스 메소드는 프로그램 실행전에 로드되는데(정적) 인스턴트 메소드는 객체 생성 이후에 생성되기때문
       → 참조변수에 생성한 인스턴스를 할당하고 나서 클래스 메소드 호출은 가능하다. 
       

      JVM의 메모리 구조

  • 메서드: 클래스 변수, 클래스 데이터 저장
  • 힙: 인스턴스가 생성되는 공간, 실행 중 생성되는 인스턴스는 모두 이곳에 있다
  • 스택: 메서드 작업에 필요한 메모리 공간 제공

    기본형 매개변수와 참조형 매개변수

  • 기본형 매개변수: 변수의 값을 읽어올 수 있다.
  • 참조형 매개변수: 변수의 주소 값을 메서드에 넘겨주어 값을 읽어오고 변경도 가능하다. 매개변수에서의 특성이란 것을 잊지 말아야한다.

    참조형 반환타입

    참조형으로 반환한다는 것은 메서드가 객체의 주소를 반환한다는 것을 의미한다.

    클래스 메서드와 인스턴스 메서드

  • 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 static을 붙인다.
  • 클래스 변수는 인스턴스를 생성하지 않아도 사용할 수 있다.
  • 클래스 메서드는 인스턴스 변수를 사용할 수 없다.
  • 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려한다.

    클래스 멤버와 인스턴스 멤버간의 참조와 호출

    같은 클래스에 속한 멤버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. 단, 클래스 멤버가 인스턴스 멤버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야 한다.

0개의 댓글