-
[17회차-②] JAVA (메소드)JAVA 2021. 4. 14. 20:40
강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정
강의 날짜 : 21.04.14
<메소드>
1. 사용자지정 메소드
public class Ex05 { static void hello() { //사용자 지정 메소드 System.out.println("Hello JAVA~"); } public static void main(String[] args) { //메인 메소드 hello(); } }
(접근권한지정자) (반환형) (메소드명) ( ){
실행문;
}
메소드는 절대 중괄호를 생략할 수 없다.
* 위의 소스 흐름
① jdk가 main 메소드를 찾아 호출
② main 함수 실행 : hello() 메소드 호출
③ hello() 메소드 실행 : "Hello JAVA~" 출력
④ 종료 중괄호 뒤에서 자신을 호출한 main 메소드로 귀환
⑤ main 메소드는 세미콜론으로 실행을 종료
⑥ main 메소드의 종료 중괄호 뒤에서 자신을 호출한 jdk로 귀환
⑦ 프로그램 종료
2. 인수가 있는 메소드
public class Ex06 { static void sum (int a, int b) { int c; c=a + b; System.out.println("a + b = "+c); } public static void main(String[] args) { int a =10, b=20; sum(a,b); sum(4,5); } }
메소드의 소괄호 안에 선언된 변수는 매개변수, 파라미터, 인수라고 한다.
파라미터가 있는 함수를 호출할 때는 파라미터의 데이터 타입을 맞춰서 주어야한다.
3. 지역 변수
메소드 안에서 선언된 변수들을 지역 변수(local value)라고 한다.
지역 변수는 초기화를 해 주지 않으면 쓰레기 값이 들어오게 된다.
지역 변수의 수명은 해당 영역(scope) 안에서만 유효하므로,
다른 영역이라면 지역 변수의 이름을 같게 해도 된다.
종료 중괄호 뒤에서 자신을 호출한 곳으로 귀환하기 전에 scope안에 들어있는 메모리를 모두 소멸시키기 때문이다.
4. 반환이 있는 메소드
public class Ex07 { static int abs(int x) { int y; if(x<0) y=-x; else y=x; return y; } public static void main(String[] args) { int a = -5, result; result = abs(a); System.out.println(a+"의 절대값은 "+result); System.out.println(10+"의 절대값은 "+abs(10)); } }
메소드명 앞에는 반환형이 들어오므로 위의 abs메소드의 반환형은 int형이다.
이렇게 반환이 있는 메소드의 경우는 그 반환된 값을 어딘가에 대입하지 않으면 의미가 없다.
* call by value
abs(a)를 호출할 때 파라미터인 a는 변수 a가 아니라 변수 a가 가지고 있는 값을 가지고 와서 메소드를 호출하는 것이다.
이러한 메소드 호출 방식을 값에 의한 호출, call by value이다.
5. 객체의 자동 초기화
객체는 메모리를 할당받은 동시에 자동초기화를 진행한다.
double형인 경우에는 0.0으로, int인 경우에는 0으로 초기화를 한다.
6. for - each 반복문
public class Ex08 { public static void main(String[] args) { String[] array= {"Life","is","good"}; for(String str : array) { System.out.print(str+" "); } } }
for ( (자료형) (변수명) : 객체 ) {
반복 실행문;
}
낱개 요소의 자료형과 저장할 변수명을 준다.
콜론은 정의 연산자로 어디에 정의된 것인지 물어보는 연산자이다.
객체(배열)를 주어 객체 저장되어 있는 모든 원소를 뽑아내는 것이다.
배열이 끝나면 자동으로 반복문이 종료된다.
단, 중간에 값을 걸러내는 것은 하지 못한다.
'JAVA' 카테고리의 다른 글
[18회차] JAVA (String 클래스와 Wrapper 클래스) (0) 2021.04.15 [17회차-③] JAVA (클래스) (0) 2021.04.14 [17회차-①] JAVA (배열) (0) 2021.04.14 [16회차-②] JAVA (반복문) (0) 2021.04.13 [16회차-①] JAVA (연산자와 조건문) (0) 2021.04.13