1. 클래스
package org.opentutorials.javatutorials.object; class Calculator{ int left, right; public void setOprands(int left, int right){ this.left = left; this.right = right; } public void sum(){ System.out.println(this.left+this.right); } public void avg(){ System.out.println((this.left+this.right)/2); } } public class CalculatorDemo4 { public static void main(String[] args) { Calculator c1 = new Calculator(); c1.setOprands(10, 20); c1.sum(); c1.avg(); Calculator c2 = new Calculator(); c2.setOprands(20, 40); c2.sum(); c2.avg(); } }
- 위의 코드에서 변수 left와 right, 메소드 sum과 avg는 연관되어 있는 로직이다. 이 로직들의 연관성은 계산을 하기 위한 것이다. 그래서 이 로직들을 대표하는 이름을 계산기라는 의미의 Calculator라고 정하고 이것들을 Calculator라는 이름으로 그룹핑하려고 한다. 이럴 때 사용하는 키워드가 class이다. class 키워드 뒤에는 클래스 이름이 오고 그 뒤의 중괄호는 클래스의 시작과 끝 경계를 의미한다. 이렇게 해서 더하기(sum)과 평균(avg)를 계산할 수 있는 클래스가 만들어졌다. 클래스는 아래와 같이 정의할 수 있다.
" 클래스는 연관되어 있는 변수와 메소드의 집합이다."
2. 인스턴스
- 특정 타입의 객체가 생성되면 그 객체를 그 타입의 인스턴스라고 부른다.
Scanner x = new Scanner(); - x라는 이름을 가진 무언가는 Scanner라는 타입의 객체이다. - x는 Scanner라는 타입의 인스턴스
1. 매개 변수 (parameters)
- 선언 위치 : 메서드 영역
- 메서드 호출 시 '전달하는 값'을 가지고 있는 변수이다. 지역 변수처럼 선언된 곳부터 수행이 끝날 때까지 유효하다.
-> 메서드에 넘겨주는 변수- 생명주기 : 메서드가 호출될 때 생명이 시작되고, 메서드가 끝나면 소멸된다.
2. 지역 변수
- 선언 위치 : 메서드 영역
- 메서드 내에서 선언되고 메서드 수행이 끝나면 소멸되는 변수이다. 초깃값을 지정한 후 사용할 수 있다.
- 조건문, 반복문 블록 내에 선언한 지역 변수가 있는 경우 수행이 끝나면 소멸되므로 계속 사용할 경우 블록 밖에서 선언이 필요하다.
- 지역 변수 초기화 : 사용하기 전에 반드시 초기화해야 한다.
3. 멤버 변수
- 메서드 밖에서 선언된 변수를 말한다. 메서드 안에 선언된 변수는 지역(local) 변수라고 한다.
- 클래스에 존재하는 변수로서 함수(메서드)에 존재하는 지역 변수와는 생명주기나 참조 범위에서 차이가 있다.
- 멤버 변수명은 일반 변수명과 동일하게 소문자로 시작하는 것이 관례이다.
단, static final로 선언된 변수인 경우 모두 대문자를 하는 경우도 많다.- 생명주기 : 해당 클래스 인스턴스가 메모리 상에서 삭제되기 전까지이다.
- 멤버 변수 초기화 : 초기화를 하지 않아도 자동적으로 변수의 자료형의 기본값으로 초기화가 이루어짐.
+) 변수의 초기화란?
- 변수를 선언하고 처음으로 값을 저장하는 것을 변수 초기화라고 한다.
- 변수 초기화는 경우에 따라 필수적일 수도, 선택적일 수도 있지만 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 바람직하다.
- 멤버 변수는 초기화를 하지 않아도 변수의 타입에 맞는 기본값으로 초기화가 이루어지지만 지역 변수는 사용하기 전에 반드시 초기화가 이루어져야 한다.