티스토리 뷰

개발

[Java] 변수와 메서드

호호홍얍얍 2022. 5. 15. 12:50

변수의 종류

  • 지역변수: 멤버변수를 제외한 나머지 변수 - 메서드, 생성자, 초기화 블럭 내의 변수
  • 클래스변수: 멤버변수 중 static이 붙은 것 - 클래스 영역의 변수
    • 인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와 달리, 클래스변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다. 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성의 경우 클래스변수로 선언한다.
    • 인스턴스를 생성하지 않고도 바로 사용할 수 있으며, 클래스가 메모리에 로딩될 때 생성되어 프로그램이 종료될 때까지 유지된다.
    • public을 앞에 붙이면 같은 프로그램 어디서나 접근할 수 있는 전역변수의 성격을 갖는다.
    • '클래스이름.클래스변수'와 같이 사용한다.
  • 인스턴스변수: 멤버변수 중 static이 붙지 않은 것 - 클래스 영역의 변수
    • 클래스의 인스턴스를 만들 때 생성된다. 인스턴스마다 고유한 상태를 유지해야 하는 속성의 경우 인스턴스 변수로 선언한다.

 

 

메서드

  • 메서드의 선언부: 이름, 매개변수 선언, 반환타입으로 구성되어 있다. int add (int x, int y){}
    • 반환값이 없는 경우 반환타입으로 void를 적어야 한다
  • 인자(argument)와 매개변수(parameter)의 개수와 순서, 타입(적어도 자동형변환이 될 수 있어야)은 일치해야 한다.
  • 같은 클래스 내의 메서드끼리는 참조변수를 사용하지 않고도 서로 호출이 가능하다
    • static 메서드는 같은 클래스 내의 인스턴스 메서드를 호출할 수 없다.
    • static 메서드는 인스턴스 변수를 사용할 수 없다.
      • 클래스 메서드가 호출되었을 때, 인스턴스가 존재하지 않을 수도 있기 때문에 금지되었다.
  • 메서드는 호출될 때 매개변수로 지정한 값을 메서드의 매개변수에 복사해서 넘겨준다. 기본형은 값이 복사되지만, 참조형은 주소가 복사된다. 때문에 참조형으로 보내면 값을 변경도 가능하지만, 기본형으로 보내면 읽는 것만 가능하다.
    • 배열도 객체와 같이 주소를 저장하므로, 매개변수로 보냈을 때 값을 변경할 수 있다.
  • 반환 타입도 참조형이 될 수 있다. 이때도 값 대신 주소를 보낸다.
  • 재귀호출: 자기자신을 호출하는 것이 재귀호출이다.
    • 재귀호출은 매개변수 복사와 종료 후 복귀할 주소저장 등이 추가로 필요하기 때문에 for문보다 시간이 더 오래 걸린다.
    • 하지만 논리적 간결성 때문에 반복문 대신 재귀호출을 사용할 수 있다.
    • 대표적으로 팩토리얼이 있다. f(n) = n * f(n-1), 단 f(1)=1

 

클래스 메서드

  • static 메서드는 클래스 메서드이고, static이 없으면 인스턴스 메서드이다.
  • 객체를 생성하지 않고 '클래스이름.메서드이름(매개변수)' 와 같이 호출이 가능하다.
  • 인스턴스 변수를 필요하지 않다면 static 메서드를 선언하자. 메서드를 찾는 과정이 추가적으로 필요 없기 때문에 시간이 덜 걸린다.
    • 인스턴스 변수를 사용할 수 없으므로, 매개변수를 활용할 수 있다.

'개발' 카테고리의 다른 글

[Java] 패키지와 임포트  (0) 2022.05.17
[Java] 상속  (0) 2022.05.17
[Java] 객체지향  (0) 2022.05.15
[Java] 다차원 배열  (0) 2022.05.15
[Java] String 배열 / Char 배열  (0) 2022.05.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함