메소드 공부 시작
package edu.java.method01;
/*
* 메소드 : 기능을 수행하기 위한 코드. 주로 반복적으로 기능을 수행할 때 생성
* - 메소드는 클래스 안에서, 그리고 다른 메소드 외부에서 만든다.
* - (주의) 메소드 안에 또다른 메소드를 만들 수 없음
* - 메소드 정의 :
* [수식어] 리턴타입 메소드이름([매개변수1, 매개변수2, ...]) {본문}
* 수식어 종류 : public, private, static, ... - public 생략 가능
* 리턴타입 : 자료타입(int, double, String, class, ...), void(없음)
* 매개변수 : 함수 호출시 전단되는 데이터를 저장하는 변수
* 전달받는 데이터가 없으면 매개변수 선언 생략 가능
* { 본문 } : 메소드 본체(body). 수행해야 할 기능을 작성
* */
public class MethodMain01 {
// 메소드 생성
public static void sayHello(String name) { // String name : 매개변수
System.out.println("안녕하세요~");
System.out.println("저는 " + name + "입니다.");
} // end sayHello()
public static void sayAge(int age) {
System.out.println("제 나이는 " + age + "입니다.");
} // end sayAge()
/*
* static 수식어 : 프로그램이 생성하고록 선언하는 키워드
* * static 메소드에서는 static으로 선언된 메소드만 호출 가능
*/
public static void main(String[] args) {
System.out.println("저는 컴퓨터입니다.");
System.out.println("저는 스마트폰입니다.");
sayHello("목진혁"); // sayHello() 호출 (인자값으로 "목진혁"을 넘겨줌)
sayHello("목진혁"); // 메소드 콜 (파라매터)
sayAge(30);
} // end main()
} // end MethodMain01
package edu.java.method02;
public class MethodMain02 {
// 기능 : 두 개의 정수를 매개변수로 전달받아서, 두 정수의 합을 리턴
// 메소드 이름 : add
// 리턴타입 : int
// 매개변수 : int x, int y
public static int add(int x, int y) {
int result = x + y;
return result;
} // end add()
// 기능 : 두 개의 정수를 매개변수로 전달받아서, 두 정수의 차을 리턴
// 메소드 이름 : sub
// 리턴타입 : int
// 매개변수 : int x, int y
public static int sub(int x, int y) {
int result = x - y;
return result;
} // end sub()
public static void main(String[] args) {
System.out.println("메소드 연습");
int result = add(10, 20);
System.out.println(result);
result = sub(10, 20);
System.out.println(result
);
} // end main()
} // end MethodMain02
package edu.java.method03;
import java.util.Scanner;
public class MethodMain03 {
// 1. 국어, 영어, 수학 점수를 입력받아서 3개의 변수에 저장
// 2. 메소드를 정의하여 입력받은 점수를 출력
// 3. 메소드를 정의하여 세 과목의 총점을 출력
// 4. 메소드를 정의하여 세 과목의 평균을 출력
// 5. 메소드를 정의하여 평균에 따른 등급을 출력
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("국어점수 입력>");
int kor = sc.nextInt();
System.out.println("영어점수 입력>");
int eng = sc.nextInt();
System.out.println("수학점수 입력>");
int met = sc.nextInt();
printScores(kor, eng, met);
int sum = calcTotal(kor, eng, met);
System.out.println("총점 : " + sum);
double aver = calcAverage(sum);
System.out.printf("평균 : %.2f %n", aver);
String grade = selectGrade(aver);
System.out.println("등급" + grade);
} // end main()
// 국/영/수 점수를 출력하는 메소드
// 메소드 이름 : printScores()
public static void printScores(int korean, int english, int math) {
System.out.print("국어점수 : " + korean + " ");
System.out.print("영어점수 : " + english + " ");
System.out.print("수학점수 : " + math + " ");
System.out.println();
} // end printScores()
// 국/영/수 총점를 출력하는 메소드
// 메소드 이름 : calcTotal()
public static int calcTotal(int korean, int english, int math) {
int tot = korean + english + math;
return tot;
} // end calcTotal()
// 국/영/수 평균를 출력하는 메소드
// 메소드 이름 : calcAverage()
public static double calcAverage(int x) {
double aver = x / 3.0;
return aver;
} // end calcAverage()
// 등급를 출력하는 메소드
// 메소드 이름 : selectGrade()
public static String selectGrade(double x) {
double aver = x;
String grade = "";
if(90 <= aver) {
grade = "A";
} else if(80 <= aver) {
grade = "B";
} else if(70 <= aver) {
grade = "C";
} else if(69 > aver) {
grade = "D";
}
return grade;
} // end selectGrade()
} // end MethodMain03
package edu.java.method04;
import java.util.Scanner;
public class MethodMian04 {
public static void main(String[] args) {
System.out.println("배열을 매개변수로 갖는 메소드");
// 변수 선언 -> 공간 생성 -> 주소값 존재
int[] scores = new int[5];
System.out.println("주소값 : " + scores);
inputSource(scores);
printScores(scores);
} // end main()
private static void printScores(int[] scores) {
System.out.println("주소값 : "+ scores);
for(int x : scores) {
System.out.println("입력한 점수 : " + x);
}
}
private static void inputSource(int[] scores) {
Scanner sc = new Scanner(System.in);
for(int i =0; i < scores.length; i++) {
System.out.println("점수 : " + i + "번째 입력");
scores[i] = sc.nextInt();
}
}
} // end MethodMain04
package edu.java.method05;
// 메소드 overloading
// 1. 매개변수의 개수가 다르거나
// 2. 매개변수의 타입이 다른 경우
// 같은 이름으로 정의할 수 있음
// (주의) 메소드의 리턴타입만 다른 경우는 같은 이름으로 메소드를 정의할 수 없음
public class MethodMian05 {
public static void main(String[] args) {
System.out.println();
System.out.println("문자열");
System.out.println(1);
System.out.println(1.0);
System.out.println(true);
sayHello();
sayHello(null);
} // end main()
public static void sayHello() {
System.out.println("안녕하세요.");
} // end sayHello()
public static void sayHello(String name) {
System.out.println("안녕하세요.");
System.out.println("제 이름은 " + name + "입니다.");
} // end sayHello()
} // end MethodMian05
BasicTv
package edu.java.class01;
// 클래스(Class)
// - 만들고자 하는 대상의 상태(속성) 정보들을 "맴버 변수(필드)"로 선언하고,
// 대상이 가져야 할 기능들을 "메소드"로 정의하는,
// 새로이 만드는 "데이터 타입" ---> 붕어빵 틀
public class BasicTv {
// TV가 가져야 할 상태(속성, 성질) => 맴버 변수(필드, 프로퍼티)
boolean powerOn; // TV의 전원 상태(true : on, false : off)
int channel = 1; // TV의 채널 정보. 1로 초기화
int volume; // TV의 소리 정보. 0으로 초기화
// TV가 가져야 할 기능 => 메소드
// 전원(powerOn) on/off 기능
public void turnOnOff() {
if (powerOn == false) {
powerOn = true;
System.out.println("TV가 겨졌습니다.");
} else {
powerOn = false;
System.out.println("TV가 꺼졌습니다.");
}
}
// 채널 증가 기능 메소드
public void channelUp() {
// 이 메소드를 호출하면 channel 변수가 1씩 증가
// 1, 2, 3, 4, 5, 1, 2, .. 순환 구조를 갖는다.
channel++;
if(channel == 6) {
channel = 1;
}
System.out.println("channel up : " + channel);
}
// 채널 감소 기능 메소드
public void channelDown() {
// 5, 4, 3, 2, 1, 0 => 5
channel--;
if(channel == 0) {
channel = 5;
}
System.out.println("channel down : " + channel);
}
// 소리 증가 기능 메소드(소리 최대 4)
public void volumeUp() {
volume++;
if(volume > 4) {
volume = 4;
}
System.out.println("volume up : " + volume);
}
// 소리 감소 기능 메소드(소리 최소 0)
public void volumeDown() {
volume--;
if(volume < 0) {
volume = 0;
}
System.out.println("volume down : " + volume);
}
public void displayInfo() {
System.out.println("--- TV 현재 상태 ---");
System.out.println("전원 : " + powerOn);
System.out.println("채널 : " + channel);
System.out.println("볼륨 : " + volume);
}
} // end BasicTv
Class
package edu.java.class01;
public class ClassMain01 {
public static void main(String[] args) {
// 클래스의 "인스턴스"를 "생성"한다
// 클래스이름 변수이름 = new 생성자();
// 변수 타입으로 선언할 수 있는 형태
// - 기본타입 변수 : byte, char, int등. 실제 값을 변수 안에 저장
// 예) int a=3, b = 10;
// - 참조타입 변수 : 배열, 클래스, 인터페이스 등. 주소를 통해 객체 참조
// 예) int[] a = new int[3];
// BasicTv tv = new BasicTv();
BasicTv tv = new BasicTv();
tv.displayInfo();
// * 기본 생성자를 호출하여 인스턴스를 생성하게 되면
// 클래스의 맴버 변수들은 기본값으로 초기화됨
// 숫자(int, double, ..)타입의 기본값 : 0, 0.0
// boolean 타입의 기본값 : false
// 그 외 타입(참조 타입) : null
tv.turnOnOff();
tv.displayInfo();
tv.channelUp();
tv.channelUp();
tv.channelUp();
tv.channelUp();
tv.channelUp();
tv.channelUp();
tv.displayInfo();
tv.channelDown();
tv.channelDown();
tv.channelDown();
tv.channelDown();
tv.channelDown();
tv.channelDown();
tv.channelDown();
tv.channelDown();
tv.displayInfo();
tv.volumeUp();
tv.volumeUp();
tv.volumeUp();
tv.volumeUp();
tv.volumeUp();
tv.displayInfo();
tv.volumeDown();
tv.volumeDown();
tv.volumeDown();
tv.volumeDown();
tv.volumeDown();
tv.volumeDown();
tv.displayInfo();
} // end main()
} // end ClassMain01