String [] args

main 메소드에 있는 매개변수 중 문자열 배열을 의미
main 메소드에도 매개변수가 있다면 호출할 때 인자값을 넘겨줄 수 있다는 의미


인자값의 데이터 형태
String 배열로 넘어오기 때문에 모든 데이터는 문자열 형태로 넘어온다
문자열로 넘어온 데이터를 정수로 변경하여 사용하려면 Integer.parseInt 메소드를 사용

- 실수 변환은 Double.parsedouble

데이터는 띄어쓰기를 구분자로 확인하여 각각 args 인덱스에 들어간다


main 메소드 호출
일반 메소드는 개발자에 의해서 호출된다면, main 메소드는 프로그램을 시작하게 되면 JVM이 main 메소드를 찾게 되고 호출
프로그램 시작 전 main에 보내줄 인자 값을 작성하게 되면 main을 호출할 때 main에서 해당 인자값을 가져다 사용


public static void main(String[] args

{

String cal = args[1];

switch(cal)

{

case "+":

System.out.println(Integer.parseInt(args[0]) + Integer.parseInt(args[2]));

break;

case "-":

System.out.println(Integer.parseInt(args[0]) - Integer.parseInt(args[2]));

break;

case "x":

System.out.println(Integer.parseInt(args[0]) * Integer.parseInt(args[2]));

break;

case "/":

System.out.printf("%.2f",Double.parseDouble(args[0]) / Double.parseDouble(args[2]));

break;

}

}



이클립스 이용방법



Run - Run Configrations - Arguments - Program arguments에 인자값을 넣어주고 Apply - Run



exe 파일 만들어서 cmd 창 이용 방법



Export - Runnable JAR file을 선택하고 Next 후 해당 자바 파일을 선택하고 jar 파일명을 지정했다면 Finish



launch4j.sourceforge.net
Download를 클릭하여 해당 파일을 찾아서 설치한다



Basic 설정 : Output file은 파일명.exe 경로 지정, Jar는 아까 만든 jar 파일의 경로를 찾아서 지정한다



Classpath 설정 : Custom classpath를 체크하고, Main class는 jar 파일을 선택하여 정한다



Header 설정 : Header type은 Console을 선택한다



JRE 설정 : Min JRE version을 1.6.0으로 한다



톱니바퀴로 .xml 파일을 만든 후 cmd창에 exe 파일을 끌어다놓아서 경로를 자동 지정하고 인자값들을 넣어주면



다음과 같은 결과가 나온다


minimelody.tistory.com/130


메소드 (Method)

타 언어에서는 함수(function), 기존에 작성하던 공간(main 및 기타 메소드)도 하나의 메소드
기능별 구분이 가능해지고 재사용하는 코드들을 메소드로 정의하여 중복 코드 제거
메소드명은 해당 기능명을 작성하는게 원칙, 낙타표기법


- 형태

[접근제어지시자] [예약어] 반환형 메소드명 (매개변수)    // 예약어 : static, final, abstract, syncronized, static final(final static)

{

메소드 실행 코드

return 값;

}


작성 Tip : 기본틀 작성 → 메소드명 수정 → 매개변수 수정 → 실행 코드 수정 → 리턴 데이터 타입 수정
Caller(호출 한 메소드), Callee(호출 당한 메소드)


public int sum (int a, int b)

{

int c;

c = a + b;

return c;

}


public : 접근 제어 지시자
int : 리턴 데이터 타입 (반환 형태 - 반환하는 값의 데이터 타입)

- 리턴값이 있을 경우 리턴 데이터 타입이 명확
- 리턴값이 없을 경우 void 형을 사용

sum : 메소드 명 (호출시 필요한 메소드 이름)
(int a, int b) : 매개변수 (Parameter) → 호출시 보낸값 (인자 혹은 인수(argument))을 저장하는 변수

- 매개변수가 없을 경우 매개변수 부분을 비워놓는다 → public int sum ( )

{ 코드; } : 해당 메소드 호출시 실행하는 코드
return c; : 호출이 끝나면 돌아갈때 가져가는 값 → 리턴값이 있을 경우 리턴 데이터 타입이 명확해야 한다


- 구분
전달인자(argument)와 반환값(return value)의 유무에 따라 4가지로 구분


1. 전달인자(O), 반환값(O)

public int sum(int su1, int su2)

{

return su1+su2;

}


2. 전달인자(O), 반환값(X)

public void printValue(int a)

{

System.out.println(a);

}


3. 전달인자(X), 반환값(O)

public int inputValue()

{

Scanner sc = new Scanner(System.in);

int a = sc.nextInt();

return a;

}


4. 전달인자(X), 반환값(X)

public void onlyPrint()

{

System.out.println("수고하셨습니다.");

}


- 메모리 처리
메소드 안에서 생성되는 변수들은 해당 메소드에서만 사용이 가능 → 해당 메소드에서만 사용하기 때문에 이름 중복 문제가 발생하지 않는다


- 호출 방식
호출할 때 인수(혹은 인자)를 전달하는 방식
값에 의한 호출 (Call By Value) : 인수의 값을 호출한 메소드에 전달, 원본 값 수정 불가
참조에 의한 호출 (Call By Reference) : 인수의 주소를 호출한 메소드에 전달, 원본 값 수정 가능


public static void main(String[] args) {

Scanner sc = new Scanner(System.in);


System.out.println("입력(1~100)");

int num = sc.nextInt();

if(1<=num && num<=100)

{

System.out.println("출력");

printData(num);

}

}


public static void printData(int num) {

int [][] arr = new int [num][num];

for(int j=0;j<num;j++)

{

for(int i=0;i<num;i++)

{

arr[j][i] = (j+1)*(i+1);

System.out.printf("%-5d", arr[j][i]);

}

System.out.println();

}

}



+ Recent posts