본문 바로가기
Language/Java

[Java] java 입문 03 - Static Method / 일반 Method

by 별토끼. 2017. 5. 11.
반응형


[Java] java 입문 03 -  Static Method / 일반 Method


  • void 의 뜻
- 메소드를 호출한 그 자리에 어떤 값도 돌려주지 않겠다는 뜻

- 메소드의 data type을 int, long 등으로 설정할 경우 반드시 return을 해줘야 한다. 하지만 void의 경우 생략해도 무방.


  • return값이 있는 Method
- Method는 더 이상 수행할게 없거나 return 예약어를 만났을 때 method를 종료한다.

- Method의 dataType이 void가 아닌 다른 타입일 경우 return값을 줘야한다.

- byte, short, int, long, float, double, char, boolean, string .. 등이 올 수 있다.


- debug를 하면 getNum()을 수행한 후 메인함수 getNum();으로 돌아온다.

=> 그 자리가 999로 대체된다.


 #메소드 호출 후 변수에 담기




  • static 
- 특정 클래스의 static메소드를 호출할 수 있다.

- 동일한 클래스의 static 메소드는 클래스명을 생략해도 된다.


- static이 없을 경우에는 호출이 불가능하다.


 # 특정 클래스에 있는 메소드 호출하기

- 다른 패키지에 있는 특정 클래스를 import한다.

- 같은 패키지의 다른 클래스는 import는 필요없다.

- static 멤버 메소드 호출을 하기 위해서는 .으로 호출 가능하다.


# 참조 데이터 타입 vs 기본 데이터 타입

- 참조 데이터 타입(string)의 메소드를 호출한 후 다른 변수에 담을 때

: id값을 복사한다.

- 기본 데이터 타입(int)의 메소드를 호출한 후 다른 변수에 담을 때

: value값을 복사한다.

- 디버깅 시


  • 일반Method 호출하기

- 일반 메소드를 호출할 때는 앞서 이용했던 static을 빼면 된다.

- 일반 메소드(객체)에는 method와 field가 있다.


 #main메소드에서 method를 호출하려면?

- static이 포함된 메소드는 클래스 명+ . + 메소드명 이 가능했지만 일반 메소드는 불가능하다.

- new 클래스명( ) 으로 선언 가능

- 데이터 타입은 클래스 명과 동일하다. EX > Marine m1 = new Marine( );

- 객체 생성 후 ( . + 메소드명 )이 가능하다.


#main메소드에서 field를 호출하려면?

 - Car클래스에서 field 정의하기


 - main에서 필드 호출하기

 - 디버깅 결과 (9번째 줄까지 실행)

 - 디버깅 결과 (끝까지 실행)

 : c2의 id값이 변했다. 자세한건 아래에서!


  • 데이터가 저장되는 메모리 영역 static / stack / heap
 # 객체=method+field 중 method 저장 방식

- method의 경우 위와 같이 저장된다.

- class는 static영역에 한 번씩만 저장된다.

- 객체를 생성하면 heap영역에 생성되며 이들은 참조값으로 구분된다.

- 이 참조값은 stack영역에 생성되는 지역변수에 담기고 stack영역에서는 각각을 변수명으로 구분한다.


 # 객체=method+field 중 field 저장 방식



# static이 포함된 method일 때 호출방법과 비교해보자!


  • value가 포함된 메소드 호출하기
- 호출할 때 value타입에 맞는 value가 함께 있어야 한다.





반응형

댓글