JAVA는 Class로 이루어져있다.
지금까지 내가 배운 거? Class 이름 생성 규칙: 첫글자는 대문자
배열은 동일한 Type만 저장이 가능함
서로 다른 Type을 저장하고 싶으면? '구조체'
변수: 데이터를 저장하는 저장소
*데이터는 처리가 되어야 한다.
함수: 데이터를 처리하는 명세서 → "메소드": 소문자로 쓴다.
(입력) 5
(처리) +3
(출력) 8
메소드의Type:반환자료형 메소드의이름(입력받을 값:매개변수) {
함수 내에서 처리되어야 할 명령문들;
return 반환할 값; (void 함수에는 없음)
}
*return의 또 다른 의미: 여기가 끝입니다.
void add3(int a){
int result;
result = a+3;
}
메소드의 Type이 void면 비어있다, 반환되는 것이 없다.
반환할 것이 있다면, return되는 자료의 자료형으로 선언한다.
우선 public static을 붙여주고 사용하자.
public class Test0317 {
public static void main(String[] args) {
int i=1;
int ad;
System.out.println("i "+i);
ad = add3(i);
System.out.println("ad "+ad);
}
public static int add3(int n){
System.out.println("n "+n);
int result;
result = n+3;
System.out.println("result "+result);
return result;
}
}
실행결과

*MAIN 함수는 최초에 시작되는 함수
[예제]
이름: f1
반환자료: x(void)
입력자료: x
실행: f1함수 실행.
public static void main(String[] args) {
f1();
}
public static void f1() {
System.out.println("hello");
}
[예제]
이름: f2
반환자료: x(void)
입력자료: 정수
실행: 입력받은 자료를 그대로 출력
public class Test0317 {
public static void main(String[] args) {
int i=3;
f2(i);
}
public static void f2(int a) {
System.out.println(a);
}
}
[예제]
2개의 숫자를 받아서 사칙연산하는 함수를 만들기
연산 결과 출력은 프린터를 해주는 함수를 활용하기
public class Test0317 {
public static void main(String[] args) {
int n1=3;
int n2=5;
printResult(add(n1, n2));
printResult(minus(n1, n2));
printResult(div(n1,n2));
printResult(multi(n1, n2));
}
public static void printResult(int n) {
System.out.println("결과값: "+ n);
}
public static int add(int a, int b) {
return a+b;
}
public static int minus(int a, int b) {
return a-b;
}
public static int div(int a, int b) {
return a/b;
}
public static int multi(int a, int b) {
return a*b;
}
}
[예제]
메인함수는 사칙연산을 수행하고 싶어함
calculater라는 함수에게 두 개의 정수를 넣어준다.
calculater는 덧,뺄,나,곱에게 주고 그 결과를 출력해준다.
출력해주고 난 뒤에는 메인에서는 '프로그램을 종료합니다.' 메시지를 출력하고 종료
public class Test0317 {
public static void main(String[] args) {
int n1=3;
int n2=5;
calculater(n1, n2);
System.out.println("프로그램을 종료합니다.");
}
public static void calculater(int a, int b) {
System.out.println("입력받은 수: " + a + ", " + b);
System.out.println("덧셈: "+ add(a,b));
System.out.println("뺄셈: "+ minus(a,b));
System.out.println("곱셈: "+ multi(a,b));
System.out.println("나눗셈: "+ div(a,b));
}
public static int add(int a, int b) {
return a+b;
}
public static int minus(int a, int b) {
return a-b;
}
public static int multi(int a, int b) {
return a*b;
}
public static int div(int a, int b) {
return a/b;
}
}

차곡차곡 쌓여서 함수의 연산이 이루어짐
add
calculater
main
[예제]
main함수가 f1함수를 호출할 때도 있고 f2함수를 호출할 때도 있다.
main → f1() 호출하고 print f1함수 실행
main → f2() 호출하고 print f2함수 실행
숫자를 입력하세요.
음수를 입력하면 프로그램 종료
0을 포함한 양수를 입력했을 때,
짝수일 경우 f1()를 실행
홀수일 경우 f2()를 실행
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력하세요");
int input = sc.nextInt();
while(input>=0) {
if(input%2==0) f1();
else f2();
System.out.println("계속 하시려면 숫자를 입력하세요.(종료: 음수 입력)");
input = sc.nextInt();
}
System.out.println("프로그램을 종료합니다.");
}
public static void f1() {
System.out.println("짝수입니다.");
}
public static void f2() {
System.out.println("홀수입니다.");
}
[예제]
하이픈(-) n개를 출력하는 함수 linePirnt()
main()에서 몇 번 찍을지 정할 거임
public static void main(String[] args) {
linePrint(10);
}
static void linePrint(int n) {
for(int i=0;i<n;i++) {
System.out.print("-");
}
System.out.println("");
}
원하는 문자와 n개를 출력하는 함수도 만들자
static void linePrint(char c, int n) {
for(int i=0;i<n;i++) {
System.out.print(c);
}
System.out.println("");
}
원하는 문자와 n개의 라인을 l개 출력하는 함수도 만들자.
static void linePrint(char c, int n, int l) {
for(int j=0;j<l;j++) {
for(int i=0;i<n;i++) {
System.out.print(c);
}
System.out.println("");
}
}
! 참고 !
linePrint()의 이름이 모두 똑같은데 코드에 문제가 없는 이유는
오버로딩(overloading)을 사용했기 때문인데,
오버로딩은 메소드의 이름이 같고, 매개변수의 개수나 타입이 다른 것을 의미한다.
같은 기능을 하는 메소드를 하나의 이름으로 사용할 수 있고, 메소드의 이름을 절약할 수 있다.
필요한 기능을 매개변수에 따라 설정할 때 사용하면 좋다. 위의 예제 참고!
class test(){
}
class test(int n){
}
class test(int n, String s){
}
참고로 오버라이딩(overriding)은 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것이다.
오버라이딩은 메소드의 이름, 매개변수, 리턴값이 모두 같아야한다.
class Parent(){
}
class baby extends Parent(){
}
[예제]
정수가 주어지면 짝수와 홀수를 판별하는 프로그램
main이 짝홀판단함수에게 숫자를 주면
짝수면 0, 홀수면 1을 반환해서 알려준다.
main은 받은 숫자를 가지고 짝수입니다. 홀수입니다. 라는 내용을 출력한다.
public static void main(String[] args) {
int n = evenOdd(3);
if(n==0) System.out.println("짝수입니다.");
else System.out.println("홀수입니다.");
}
static int evenOdd(int n) {
if(n%2==0) return 0;
else return 1;
}
해보니까 출력할 때도 삼항연산자를 사용할 수 있다.
System.out.println(n==0?"짝수입니다.":"홀수입니다.");