1. 일반메소드(=인스턴스 메소드) => 객체를 생성 -> 호출이 가능하고,,,, 객체명.메소드명(~) 게다가 4byte 기억공간이 들어감.
=> 보편적인 기능 (X) => 특수한 기능을 사용할때 사용하고, 업무에 따라서 처리해주는일(ex 회원가입
2. 정적메소드(=클래스 메소드) => 객체를 생성 X -> 메소드를 호출이 가능 게다가 기억공간이 필요없다. 이렇게 본다면 정적메소드가 메모리소요가 없기에 효율적이라 생각이 들수있는데 사실은 그렇지않음. -> 클래스명.정적메소드명(~) 으로 명 할수있음.
=> 가장 기본적인 계산, 단순한 직업을 할때(대중화)(=최대값,최소값,절대값, 수학함수 (sin,cos,tan) ~ 등등) 자주 사용이 되는경우
정적메소드는 static 이라는 단어가 데이터 타입 앞에 붙는다.
** 중요 **
정적 메소드를 호출하는 방법
지금까지 우리는 static main() 정적 메소드에서 일반 메소드를 호출하였었다. 객체명.일반메소드명(~)
그리고 우리는 static 정적메소드에서 정적 메소드를 호출할때엔 클래스명.정적메소드(~)의 형식으로 호출이 가능하다.
추가적으로 같은 식구(같은 클래스)일경우 클래스명을 생략 할 수가 있다.
자바의 메모리 구조 _
1.메소드 영역
프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽어서 분석하여 클래스에 대한 정보(클래스 데이터) 를 이곳에 저장한다. 이 때, 그 클래스의 클래스 변수(class variable =)도 이 영역에 함께 생성된다.
(=static 영역) =>정적메서드가 메모리에 올려
정적변수(멤버변수 앞에 static)
=>** 프로그램이 시작->제일 먼저 메모리에 올라와지는 부분**
=>제일 먼저 메모리에 올라오는 메서드? =>main
당장 사용X 메서드를 모두 static ->메모리 부족 현상
=>자동
2.heap(힙영역)
인스턴스가 생성도는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다.
즉, 인스턴스변수(instance variable)들이 생성되는 공간이다.
Car sonata=new Car(); =>객체를 생성할때
만들어지는 공간
TV t=new TV() ====>수동
=========
3.호출스택
호출 스택은 메소드의 작업에 필요한 메로리 공간을 제공한다. 메소드가 호출되면, 호출스택에 호출된 메소드를 위한 메모리가 할당되며, 이 메모리는 메소드가 작업을 수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간결과 등을 저장하는데 사용된다. 그리고 메소드가 작업을 마치면 할당되었던 메모리 공간은 반환되어 비워진다.
=>자료구조(데이터를 저장하는 구조모양)
p263
=>메서드가 호출이 되면 메모리에 잡히는 영역
static int calcSum(int kor,int eng,int mat) {
// int calcSum() { =======================매개변수
int t=kor+eng+mat;
====================>메서드 내부선언(지역변수)
return t;//return (kor+eng+mat);
}
예제 실행 시 프로그램이 수행되는 동안 호출스택의 변화를 표시한 그림
호출 스택은 한쪽이 막혀있고 한쪽이 뚫려있다.
** 중요 **
'JAVA-Spring > 각종 메소드' 카테고리의 다른 글
JAVA 자바 [ 객체 지향 프로그래밍 ] Final (0) | 2019.07.23 |
---|---|
JAVA 자바 [ 객체 지향 프로그래밍 ] Static, 정적 (0) | 2019.07.23 |
JAVA 자바 [ 객체 지향 프로그래밍 ] 객체 생성 3가지 방법 (0) | 2019.07.23 |
JAVA 자바 [ 객체 지향 프로그래밍 ] THIS_ 디스, this() (0) | 2019.07.16 |
JAVA 자바 [ 객체 지향 프로그래밍 ] 부록_ 메소드 (0) | 2019.07.15 |
댓글