yeahzzz
archive
yeahzzz
전체 방문자
오늘
어제
  • 분류 전체보기 (164)
    • Language (41)
      • Python (12)
      • JAVA (21)
      • C&C++ (8)
    • Algorithms (25)
      • programmers (9)
      • study log (16)
    • Problems & Solutions (14)
    • Major (29)
      • Data Structure & Algorithm (14)
      • Linux(Ubuntu) (9)
      • Security (2)
      • Linear Algebra (4)
    • FE (44)
      • Web(HTML5, CSS, JS) (5)
      • React & TS (26)
      • 코딩일기 (10)
    • BE (1)
      • Node.js (1)
    • Pytorch (8)
    • Server (2)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
yeahzzz

archive

Language/JAVA

Method

2021. 7. 27. 22:28

package day6;

//자바에서는 클래스를 떠나 존재할 수 있는게 없다. 
// 클래스 내의 함수 : 메소드 
//메소드가 하는 일 : 입력을 가지고 어떤 일을 수행한 다음에 결과물을 내어놓는 것. 
// 입력값 ---> 메소드 ----> 리턴값

public class Method1 {

// public int sum(int a, int b) {
// return a+b;
// } //평범한 메소드의 전형적인 예시. 

// public String say() {
// return "Hi";
// } 입력 인수 부분을 나타내는 괄호 안이 비어있는 경우... 리턴으로 Hi라는 문자열을 돌려줌 

// public void sum(int a , int b) {
// System.out.println(a+b);
// } 리턴값이 없는 경우. 

// public void say() {
// System.out.println("Hi");
// } 당연히 둘다 없는 경우도 있음. 

public static void main(String[] args) {
int a = 3;
int b = 4;

Method1 myTest = new Method1();
// int c = myTest.sum(a, b);
// String a = myTest.say(); //a에는 Hi라는 문자열이 대입. 
// myTest.sum(3,4); 리턴값이 없는 메소드 : 객체.메소드명(입력인수1,입력인수2.....)
// myTest.say(); 둘다 없는 경우 : 객체.메소드명();

// System.out.println(c);

     }
}
//결과값 : 7

 


return 의 또 다른 쓰임새...

 

public void say_nick(String nick) {

    if ("fool".equals(nick)) {

             return;

 }

System.out.println("나의 별명은 "+nick+" 입니다.");

}

 

이 메소드에서 리턴값 없음.

* 문자열을 출력한다는 것과 리턴값이 있다는 것은 전혀 다른 말. 

메소드의 리턴값은 오로지 return문에 의해서 생성. 

위 메소드에서 입력값으로 fool 들어오면 문자열 출력 ㄴㄴ 하고 바로 메소드 빠져나감

**특정 조건에 따라 메소드 즉시 빠져나가고 싶으면 이렇게 return문 사용하면 됨..

자주 쓰이니까 기억해두자.

 


package day6;
//메소드에 값을 전달하는 것과 객체를 전달하는 것에는 차이 ㅇㅇ
// 한마디로, 메소드로 객체를 전달할 경우 메소드에서 객체의 객체변수(=멤버변수) 값 변경 가능. 

class Updater{
public void update(int count) {
count ++;
}
} //전달받은 숫자를 하나씩 증가시키는 메소드.


public class Counter {

int count = 0; //Counter 라는 클래스는 count라는 객체변수 가지고 있음 

public static void main(String[] args) {
Counter myCounter = new Counter(); //객체의 선언과 할당의 통합
System.out.println("Before update : " + myCounter.count);
//여기서 myCounter.count :  객체 안에 포함된 메서드 호출 .

Updater myUpdater = new Updater(); 
myUpdater.update(myCounter.count);
//myUpdater.update(myCounter);
//update 메소드 선언하는 부분도 바뀜. 
//이렇게 수정하면 myCounter 객체의 count값이 1만큼 증가. 

System.out.println("After Update : " + myCounter.count);

// Counter 클래스의 main메소드는 Counter 클래스에 의해 생성된 객체의 객체변수
// count값을 Updater 클래스를 이용하여 증가시킴.


   }
}

//Counter라는 파일 내에 두개의 클래스(=Updater , Counter) 등장.
//하나의 파일 내에는 여러개의 클래스 선언 가능. 
//하지만 만약 파일명이 Counter.java라면 Counter라는 클래스는 public으로 선언하라는 관례 존재

//결과값이 둘다 0이 나오는 이유?
// update 메소드는 값을 전달받았기 때문. 

//여기서 
//class Updater {
// public void update(Counter counter) {
// counter.count++;
// }

//}

//이전에는 int count와 같이 값을 전달받았다면 
//이렇게 수정한 부분에서는 Counter counter과 같이 객체를 전달받도록 한것. 
//콤마없이 나란히 쓴 것은 객체를 선언했다는 뜻.. 

정리..
메소드의 입력으로 객체를 전달받은 경우에는 메소드가 입력받은 객체를 그대로 사용
메소드가 객체의 속성값을 변경하면 메소드 수행 후 객체의 변경된 속성값이 유지. 

'Language > JAVA' 카테고리의 다른 글

Constructor  (0) 2021.07.29
JAVA Inheritance  (0) 2021.07.28
클래스와 메소드  (0) 2021.07.27
method parameter, class, object  (0) 2021.07.27
basic quiz #1  (0) 2021.03.25
    'Language/JAVA' 카테고리의 다른 글
    • Constructor
    • JAVA Inheritance
    • 클래스와 메소드
    • method parameter, class, object
    yeahzzz
    yeahzzz

    티스토리툴바