◎ Java/Java☕
[JAVA] 클래스 메서드와 인스턴스 메서드 [클래스 메서드 및 클래스 변수의 특징]
[JAVA] 선언위치에 따른 변수의 종류 [인스턴스변수, 클래스변수, 지역변수] - 선언위치에 따른 변수의 종류 변수의 종류를 결정짓는 요소는 '변수의 선언된 위치'이다. 멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 붙은 것은 클래스변수, yermi.tistory.com 1. 클래스 메서드와 인스턴스 메서드 변수에서 그랬던 것과 같이, 메서드 앞에 static이 붙어 있으면 클래스 메서드이고, 붙어있지 않으면 인스턴스 메서드이다. → 클래스 메서드는 객체를 생성하지 않고도 '클래스이름.메서드이름(매개변수)'로 호출이 가능하다. → 인스턴스 메서드는 반드시 객체를 생성해야만 호출이 가능하다. 2. 클래스 메서드 및 클래스 변수의 특징 1) 클래스를 설계할 때, 멤버변수 ..
[JAVA] 재귀호출(recursive call)이란? [메서드 내부에서 메서드 자신을 다시 호출]
1. 재귀호출(recursive call)이란? 메서드의 내부에서 메서드 자신을 다시 호출하는 것을 '재귀호출(recursive call)'이라 한다. → 재귀호출을 하는 메서드를 '재귀 메서드'라 한다. void method() { method(); // 재귀호출. 메서드 자신을 호출한다. } 메서드 입장에서는 자기 자신을 호출하는 것과 다른 메서드를 호출하는 것은 차이가 없다. why? 메서드는 복사된 값으로 작업을 하기 때문! [값에 의한 호출(call by value)] 그러나, 위의 코드처럼 재귀호출 뿐이면 무한반복에 빠지게 된다. 따라서 재귀호출에는 조건문이 필수적으로 붙게 된다. void method(int n) { if(n == 0) { return; // n의 값이 0일 때, 메서드를 종..
[JAVA] 참조형 반환타입이란? [메서드가 객체의 주소를 반환]
- 참조형 반환타입이란? 메서드의 매개변수 뿐만 아니라 반환타입도 참조형이 될 수 있다. 반환타입이 참조형이라는 것은 반환하는 값이 '객체의 주소'라는 것! static Data copy(Data d) { Data tmp = new Data(); // 새로운 객체 tmp를 생성한다. tmp.x = d.x; // d.x의 값을 tmp.x에 복사한다. return tmp; // 복사한 객체의 주소를 반환한다. } 이 메서드의 반환타입이 'Data'이므로, return 값의 타입은 'Data' 타입의 참조변수여야 한다. 예시로, Data d2 = copy(d)의 실행과정은 아래와 같다. copy 메서드를 호출하면 참조변수 d의 값이 매개변수 d에 복사 새로운 객체를 생성한 다음 d.x에 저장된 값을 tmp.x..
[JAVA] 기본형 매개변수와 참조형 매개변수 [메서드 파라미터에 복사되는 값의 차이]
- 기본형 매개변수와 참조형 매개변수 자바에서 메서드를 호출할 때 매개변수로 지정한 값을 메서드의 매개변수에 복사하여 넘겨준다. → 매개변수 타입이 기본형일 때는 기본형 값이 복사, 참조형이면 인스턴스의 주소가 복사된다. - ParamEx.java : 매개변수가 기본형일 경우 public class ParamEx { public static void main(String[] args) { Data d = new Data(); d.x = 10; System.out.println("main() : x = " + d.x); change(d.x); // d.x는 기본형인 int 타입이다. System.out.println("After change(d.x)"); System.out.println("main() :..
[JAVA] 메서드(method)를 사용하는 이유 [높은 재사용성, 중복된 코드의 제거, 프로그램의 구조화]
1. 메서드(method)란? 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것 메서드는 어렵게 생각할 것 없이, 넣을 값(입력)과 반환하는 결과(출력)만 알면 된다. 2. 메서드를 사용하는 이유 1) 높은 재사용성(reusability) 한번 만들어 놓은 메서드는 몇 번이고 호출할 수 있으며, 다른 프로그램에서도 사용이 가능하다. 2) 중복된 코드의 제거 반복되는 문장들을 묶어서 하나의 메서드로 작성해 놓으면, 메서드를 호출하는 한 문장으로 대체할 수 있다. 3) 프로그램의 구조화 큰 규모의 작업을 여러 개의 메서드에 담아 프로그램의 구조를 단순화 시킬 수 있다. 참고문헌 : 남궁성(2016), Java의 정석, 도우출판