=연산
)을 그룹화해서 재사용하기 위한 단위public static void 메서드이름() { ... }
{...}
안에서 다음의 형식으로 사용될 수 있으며, 이를 메서드를 호출한다
라고 한다.
메서드이름();
()
안에서 변수 형태로 선언한다. 이를 메서드 파라미터라고 한다.,
로 구분하여 선언할 수 있다.public static void 메서드이름( 변수형 변수이름, ... ) { ... } // 매개변수는 콤마(,)로 구분해서 필요한 만큼 받을 수 있음
메서드이름( 값 1, 값 2 ... );
함수의 결과값
- 함수는 자신이 포함하고 있는 수식에 대한 결과를 반환한다.
f(x) = x + 1 f(3) = 3 + 1 = 4 y = f(3) // y에는 4라는 값이 대입된다.
메서드의 리턴값
- 메서드가 연산 결과를 자신이 호출된 위치에 반환하는 것을
리턴
이라고 하며, 반환되는 값을리턴값
이라고 한다.- 메서드 안에서 값을 리턴하기 위해서는
return
이라는 키워드를 사용한다.- 값을 리턴하는 메서드는 선언시에 리턴하는 값에 대한
변수형
이 명시된다.void
는 리턴값이 없다는 의미다.public static 리턴형 메서드이름 (변수형 파라미터 1, ... ) { ... return 리턴값; }
객체 안에 포함된 변수는
멤버 변수
,전역 변수
,프로퍼티
,필드
- 공장에서 하나의 설계도를 가지고 여러 개의 제품을 생산할 수 있는 것처럼 하나의 클래스를 통해 동일한 구조를 갖는 객체를 여러 개 생성할 수 있다.
- 클래스의 기본 작성 방법
class 클래스이름 { 멤버변수; void 메서드이름(){ ... } }
- class라는
예약어
와 클래스의이름
을 명시하고{...}
블록을 구성- 멤버변수는 여러 개 존재할 수 있다. 이 때, 값을 선언과 동시에 할당할 수도 있고, 객체를 통해 간접적으로 할당할 수도 있다.
- 메서드도 여러 개 존재할 수 있다.
- 클래스 안에 포함된 멤버변수와 메서드를 특성에 따라 그룹화하기 위한 기법이 클래스를 작성하는 것이라고 이해할 수 있다.
클래스이름 객체이름;
객체이름 = new 클래스이름();
클래스이름 객체이름 = new 클래스이름();
.
으로 연결하여 접근한다.객체이름.멤버변수;
객체이름.메서드();
std. name = "홍길동";
- 클래스란 객체를 위한 틀을 제공하는 것이기 때문에 클래스 작성과정에서 멤버변수에 대입된 값은 객체를 통하여 멤버변수의 값을 지정하기
전까지 사용될 기본값으로서의 의미이다.- 객체를 통하여 새로운 값이 대입되면 클래스 작성시에 멤버변수에 대입한 값은 의미를 잃어버리게 된다.
메서드란 프로그램에서 하나의 동작 단위를 의미한다.
- 두 개 이상의 메서드가 서로 동일한 대상을 위해서 존재할 경우, 이 메서드들을 클래스에 포함시켜 그룹화할 수 있다.
변수의 종류
- 클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는 전역 변수로 존재하게 된다.
- 멤버변수(
=전역변수
)
: 클래스 안에서 선언된 변수로써, 클래스 블록 범위 안에서 유효하다.- 지역변수
: 메소드 안에서 선언된 변수로써, 메서드의 블록을 빠져나가지 못한다. 그러므로 다른 메서드는 해당 변수를 인식하지 못한다.
이 규칙은 조건문, 반복문 같은 블록{}
을 형성하는 모든 경우에 해당된다.
=데이터
)가 포함되지 않는다.this
를 사용하여 "자기 자신"을 표현한다.
- 멤버변수와 지역변수가 동일한 이름으로 공존할 때 유효성의 범위가 작은 변수가 우선적으로 인식된다.
class User { String name; // 멤버변수 public void setName(){ String name; // 지역변수 name = "자바사용자"; this.name = "멤버자바"; } }
- 파라미터를 사용하여 멤버변수의 값을 간접적으로 설정하고자 할 경우 변수의 이름을 서로 다르게 사용하는 것보다는 이름은 동일하게 지정하고
this
키워드를 사용하여 멤버변수와 파라미터를 구별하는 것이 java언어의 일반적인 처리 방식이다.- 모든 멤버변수 앞에는
this
키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이 소스코드의 가독성을 위하여 바람직하다.class User { String name; public void setname(String name){ this.name = name; } }
this
를 통하여 접근this
키워드를 사용하는 것이 필수적인 것은 아니다. 영어 + 숫자 + 언더바(_)
의 조합이고, 첫글자는 반드시 영어로 표기
class Member
class MyClass
class NetworkHelper
int age
String userName
String member_count
final double PI;
final int COLOR;
new
키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드
- 리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일하다.
- 자동으로 실행된다는 특성 때문에, 객체가 생성되면서 해당 객체의 특성을 초기화하기 위하여 사용된다.
- 멤버변수의 초기값을 할당하는 용도
- 클래스에 특별히 생성자가 정의되지 않은 경우 Java 컴파일러는 다음과 같은 기본 생성자가 존재한다고 인식한다.
class User { User(){ ... }