본문 바로가기
Backend/JAVA_Basic

10. JAVA, 메소드⑵ (Method, 호출 방식, main, Access Modifier) & 연습문제

by 개발개발빈이 2022. 5. 31.

○ Method 호출방식

    ① call by value : 값에 의한 호출 방식
    ② call by reference : 주소에 의한 호출 방식

public class Test03_method {
	    
	public static void test1(int a, int b) {
		System.out.println(a);
		System.out.println(b);
	}//test1() end
	
	public static void test2(int[] a) {
		for(int i=0; i<a.length; i++) {
			System.out.println(a[i]);
		}//for end
	}//test2() end


	public static void main(String[] args) {

        int[] num= {10, 20, 30};

        //call by value 값에 의한 호출 방식
        test1(num[0], num[2]);	//10, 30

        // call by reference 주소에 의한 호출 방식
        test2(num);	//배열 요소가 저장되어 있는 주소(배열 전체)
        
 	}//main() end

}//class end

 

○ main 메소드

    - JAVA 소스가 구현될 때 가장 먼저 호출/실행 되는 메소드(함수)

    - 자바 가상 머신이 클래스를 실행할 때 main() 함수를 먼저 호출하고 그 이후가 실행된다

    - main() 함수는 사용자가 임의로 호출할 수 없다

    - .class파일 실행시 전달값은 main()함수의 매개변수가 받는다

package oop0404;

public class Test04_main {

    public static void test() {
    	// main() 함수가 호출되는 시점과 값을 전달하는 예제
		// 명령 프롬프트에서 실습
    	
        // ※ .class파일 실행시 전달값은 main()함수의 매개변수가 받는다
    
    }//test() end
		
    public static void main(String[] args) {

    }//main() end

}//class end


/////////////////////////////////////////////////////////////////////////////////////////////

public class MainTest {

	public static void main(String[] args) { //argument string
		// oop0404.Test04_main.java 참조
		
		for(int i=0; i<args.length; i++) {
			System.out.println(args[i]);
		}//for end

	}//main end

}//class end

 

Access Modifier (접근 제어자, 접근 수정자)

    ① private : 비공개, 클래스 내부에서만 접근가능, 은폐 가능
    ② default(package) : 생략, 현재 package내에서만 접근가능

    ③ protected : 상속관계에 있는 클래스가 다른 패키지에 있는 경우

    ④ public : 공개, 프로젝트내에서 모두 접근 가능

package oop0404;  // ← 현재 클래스(Test06_class)의 저장 위치
                  //   패키지(package) 선언은 한번만 한다

//클래스를 사용하려면 저장위치(package)를 선언하고 사용한다
import java.io.*;
import java.sql.*;
import java.util.Arrays;
import oop0401.*;	


class Sungjuk{ //package 생략(default)
               //클래스명의 첫 글자는 대문자로 한다

	//멤버변수 field

	public String name;	//클래스 외부에서 접근가능하다(프로젝트 내에서 모두 사용가능)
	int kor, eng, mat;	//package 생략(oop0404에서 사용가능)
	private int aver;	//Sungjuk클래스 내부에서만 접근 가능하다


	//멤버함수 method

	private void view() {}//view() end
	
	void calc() {//package 생략
	//클래스 내부의 멤버들 간에는 Access Modifier와 상관없이 접근 가능하다
	view();
	aver=(kor+eng+mat)/3;
	}//calc() end
	
	public void disp() {
	System.out.println(name);
	System.out.println(kor);
	System.out.println(eng);
	System.out.println(mat);
	System.out.println(aver);
	}//disp() end


}//class end

    

 

● Practice 연습문제

    Q) 표준편차(Standard deviation) 구하기

        - 주어진 배열 aver의 표준편차를 구하는 sd() 메소드 작성

int[] aver= {85, 90, 93, 86, 82};
double result=sd(aver);

 

      - 단, 표준편차는 다음 과정에 따라 구한다

            ① aver의 평균(87.2)를 구하고, aver의 각 요소에서 87.2를 뺀다
            ② ①의 값을 전부 양수로 바꾼다 → 편차
            ③ ②의 편차들의 평균값 = 표준편차

public static double sd(int[] aver){

    int size=aver.length; //배열요소의 개수
    double sum=0.0;       //배열요소의 합
    
    for(int i=0; i<size; i++) {
        sum = sum + aver[i];			
    }//for end

    double avg=sum/size;  //배열요소의 평균
    double dsum=0;        //편차의 합

    for(int i=0; i<size; i++) {
        dsum=dsum+Math.abs(aver[i]-avg);
    }//for end

    double sd=dsum/size;
    return sd;
    
}//sd() end

 

댓글