April 04, 2022
/**
* Method
*/
public class Method {
// 일반적인 메소드
int sum (int a, int b) {
return a+b;
}
// 입력값이 없는 메소드
String say() {
return "Hi";
}
// 리턴값이 없는 메소드
void noReturnSum(int a, int b) {
System.out.println(a+"과 "+b+"의 합은 "+(a+b)+"입니다.");
}
// 입력값과 리턴값 둘다 없는 메소드
void noParamsNoReturnSay() {
System.out.println("Hi");
}
// return은 메소드 탈출용으로 사용 가능
void sayNick(String nick) {
if ("fool".equals(nick)) {
return;
}
System.out.println(nick);
}
public static void main(String[] args) {
int a = 3;
int b = 4;
Method method = new Method();
int c = method.sum(a, b);
System.out.println(c);
System.out.println(method.say());
method.noReturnSum(a, b);
method.noParamsNoReturnSay();
method.sayNick("Aiden");
method.sayNick("fool"); // 출력되지 않는다.
}
}
/* Output
7
Hi
3과 4의 합은 7입니다.
Hi
Aiden
*/
public class Sample {
int sum(int a, int b) { // a, b 는 매개변수
return a+b;
}
public static void main(String[] args) {
Sample sample = new Sample();
int c = sample.sum(3, 4); // 3, 4는 인수
System.out.println(c); // 7 출력
}
}
리턴자료형 메소드명(입력자료형1 매개변수1, 입력자료형2 매개변수2, ...) {
...
return 리턴값; // 리턴자료형이 void 인 경우에는 return 문이 필요없다.
}
return
명령을 사용한다.int sum(int a, int b) {
return a+b;
}
int a, int b
int
사용법
Sample sample = new Sample();
int result = sample.sum(3, 4);
String say() {
return "Hi";
}
String
사용법
public class Sample {
String say() {
return "Hi";
}
public static void main(String[] args) {
Sample sample = new Sample();
String a = sample.say();
System.out.println(a); // "Hi" 출력
}
}
void sum(int a, int b) {
System.out.println(a+"과 "+b+"의 합은 "+(a+b)+"입니다.");
}
int a, int b
void
(없음)void
로 선언해준다.사용법
public class Sample {
void sum(int a, int b) {
System.out.println(a+"과 "+b+"의 합은 "+(a+b)+"입니다.");
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.sum(3, 4);
}
}
void say() {
System.out.println("Hi");
}
void
(없음)사용법
public class Sample {
void say() {
System.out.println("Hi");
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.say();
}
}
public class Sample {
void sayNick(String nick) {
if ("fool".equals(nick)) {
return;
}
System.out.println("나의 별명은 "+nick+" 입니다.");
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.sayNick("angel");
sample.sayNick("fool"); // 출력되지 않는다.
}
}
return
은 메서드를 즉시 탈출 시킨다.return
을 통한 탍출은 리턴 자료형이 void
인 메소드만 가능하다.public class Sample {
void varTest(int a) {
a++;
}
public static void main(String[] args) {
int a = 1;
Sample sample = new Sample();
sample.varTest(a); // 2
System.out.println(a); // 1
}
}
local variable
)이라고 한다.다만, 메소드에서 넘어온 값 재할당 한다면 증가 시킬 수 있다.
public class Sample {
int varTest(int a) {
a++;
return a;
}
public static void main(String[] args) {
int a = 1;
Sample sample = new Sample();
a = sample.varTest(a);
System.out.println(a);
}
}
또한, 객체를 넘긴다면 메소드에서 처리한 결과를 그대로 이어 받을 수 있다.
public class Sample {
int a; // 객체변수 a
void varTest(Sample sample) {
sample.a++;
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.a = 1;
sample.varTest(sample);
System.out.println(sample.a);
}
}
primitive
자료형인지 아닌지에 따라 나뉜다. int 자료형과 같은 primitive
자료형인 경우 값이 전달되고 그 이외의 경우 (reference
자료형)는 객체가 전달된다.따라서 this
를 활용할 수도 있다.
public class Sample {
int a; // 객체변수 a
void varTest() {
this.a++;
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.a = 1;
sample.varTest();
System.out.println(sample.a); // 2 출력
}
}