class Calculator {
void powerOn() {
System.out.println("전원을 켭니다");
}
int plus(int x, int y) {
int result = x + y;
return result;
}
double divide(int x, int y) {
double result = (double) x / (double) y;
return result;
}
void powerOff() {
System.out.println("전원을 끕니다");
}
}
public class CalculatorExample {
public static void main(String[] args) {
Calculator mycal = new Calculator();
mycal.powerOn();
int result1 = mycal.plus(5,6);
System.out.println("result1: " + result1);
byte x = 10;
byte y = 4;
double result2 = mycal.divide(x,y);
System.out.println("result2: " + result2);
mycal.powerOff();
}
}
class Calculator {
long add(long a, long b) {
return a+b;
}
long subtract(long a, long b) {
return a-b;
}
long multiply(long a, long b) {
return a*b;
}
double divide(double a, double b) {
return a/b;
}
}
public class CalculatorExample {
public static void main(String[] args) {
Calculator mycal = new Calculator();
long result1 = mycal.add(5L, 3L);
long result2 = mycal.subtract(5L, 3L);
long result3 = mycal.multiply(5L, 3L);
double result4 = mycal.divide(5L, 3L);
System.out.println("add: " + result1);
System.out.println("subtract: " + result2);
System.out.println("multiply: " + result3);
System.out.println("divide: " + result4);
}
}
매개변수(parameter)는 메서드에 입력으로 전달된 값을 받는 변수
인수(argument)는 메서드를 호출할 때 전달하는 입력값!
매개변수를 배열 타입으로 선언하거나 값의 목록만 넘겨준다
class Computer {
int sum1(int[] values) { //배열타입으로 선언하거나
int sum = 0;
for (int i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
}
int sum2(int... values) { //배열을 생성하지 않고 값의 목록만 넘겨줌
int sum = 0;
for (int i = 0; i < values.length; i++) {
sum += values[i];
}
return sum;
}
}
public class ComputerExample {
public static void main(String[] args) {
Computer mycom = new Computer();
int[] values1 = {1, 2, 3};
int result1 = mycom.sum1(values1); //배열을 넘겨줌으로써 전달가능
System.out.println("result1: " + result1);
int result2 = mycom.sum1(new int[]{1, 2, 3, 4, 5}); //배열을 넘겨줌으로써 전달가능
System.out.println("result2: " + result2);
int result3 = mycom.sum2(1, 2, 3); //메서드 호출 시 넘겨준 값의 수에 따라 자동 배열 생성
System.out.println("result3: " + result3);
int result4 = mycom.sum2(1, 2, 3, 4, 5); //메서드 호출 시 넘겨준 값의 수에 따라 자동 배열 생성
System.out.println("result4: " + result4);
}
}
실행중인 메서드를 종료하고 호출한 곳으로 되돌아감.
리턴 타입이 있는 메서드는 반드시 리턴을 사용해야 함.
int max(int a, int b) {
if(a > b)
return a;
}
이 아닌
int max(int a, int b) {
if(a > b)
return a;
else
return b;
}
리턴 타입이 void면 생략 가능.
또 반환값으로 변수가 아닌 수식을 적을 수 있다.
int add(int x, int y){
int reulst = x + y;
return result;
}
int add(int x, int y){
return x+y;
}
위 코드는 같은 결과값이다.
또 조건 연산자를 사용해서 반환할 수도 있다.
int abs(int x){
if(x>=0) {
return x;
}
else{
return -x;
}
}
int abs(int x){
return x>= ? x : -x;
}
위 코드는 같은 결과값이다.
예컨대
long max(long a, long b){
long result = 0;
if(a>b) {
result = a;
}
else {
result = b;
}
return result;
}
}
이 코드는
long max(long a, long b) {
long result = 0;
result = a > b ? a : b;
return result;
}
또는
long max(long a, long b) {
return a > b ? a : b;
}
으로 줄일 수 있다.
int sum(int a, int b){
return a+b;
}
void say(){
System.out.println("Hi");
}
String say(){
return "Hi";
}
void sum(int a, int b){
System.out.println(a+"과 "+b+"의 합은 " + (a+b));
}
class Calculator {
long a, b;
//인스턴스변수 a,b만 이용해서 작업하므로 매개변수 필요 없음
long add() {
return a + b;
}
long subtract() {
return a - b;
}
long multiply() {
return a * b;
}
double divide() {
return a / b;
}
//매개변수만으로 작업 가능
static long add(long a, long b) {
return a + b;
}
static long subtract(long a, long b) {
return a - b;
}
static long multiply(long a, long b) {
return a * b;
}
static double divide(long a, long b) {
return a / (double) b;
}
}
public class CalculatorExample {
public static void main(String[] args) {
//클래스 메서드 호출
System.out.println(Calculator.add(200L, 100L));
System.out.println(Calculator.subtract(200L, 100L));
System.out.println(Calculator.multiply(200L, 100L));
System.out.println(Calculator.divide(200L, 100L));
Calculator mycal = new Calculator();
mycal.a = 300L;
mycal.b = 200L;
//인스턴스 메서드는 객체 생성 후에 호출 가능
System.out.println(mycal.add());
System.out.println(mycal.subtract());
System.out.println(mycal.multiply());
System.out.println(mycal.divide());
}
}
그렇다면 static을 언제 붙여야할까?
class Calculator {
double areaRectangle(double width) {
return width * width;
}
double areaRectangle(double width, double height) {
return width * height;
}
}
public class CalculatorExample {
public static void main(String[] args) {
Calculator mycal = new Calculator();
double result1 = mycal.areaRectangle(10);
double result2 = mycal.areaRectangle(10, 20);
System.out.println("result1: " + result1);
System.out.println("result2: " + result2);
}
}