* while
- 시작과 끝을 모를 때 사용하는 반복문.
- 최소 0번 수행에 최대 조건까지 수행.
문법)
초기값; // for처럼 사용
while(조건식){ // 조건식은 관계연산자, 논리연산자, method
반복수행 문장;
증.감소식; // for처럼 사용
}

* do ~ while
- 시작과 끝을 모를 때 사용하는 반복문.
- 최소 1번 수행에 최대 조건까지 수행.
문법)
초기값; // for처럼 사용
do{
반복수행문장;
증.감소식; // for처럼 사용
} while (조건식);

* variable(변수)
- 프로그램에 필요한 값을 일시적으로 저장하고 사용하기 위해.
- 가독성 향상.
- 선언하는 영역({})에 따라 instance variable(member variable), static variable(class variable), local variable 3가지를 지원.
class 클래스명 {
// class field -> instance varible, static variable
public void main(String[] args){
// local -> local variable
}
// class field -> instance varible, static variable
}
* static variable (class variable) - 공용 변수 (하나의 변수가 만들어진다.)
- 모든 instance(객체)가 하나의 변수를 사용.
- class field에 정의.
- 객체화 없이 클래스명으로 사용할 수 있다. (클래스명.변수명)
- 자동초기화가 된다.
- 클래스가 실행되면(프로그램이 실행되면) 메모리에 올라가고, 클래스의 실행이 끝나면(프로그램이 종료되면) 메모리에서 내려온다.
- 참조하는 속도가 빠르다.
문법)
1. 선언)
접근지정자 static 데이터형 변수명;
* 접근지정자
(하나만 사용 가능)
- public : 클래스 외부에서 사용 가능.
- protected : 같은 패키지의 다른 클래스에서 사용 가능. 패키지가 다르면 상속관계의 자식 클래스에서만 사용 가능.
- default : 접근지정자를 기술하지 않는 것. 같은 패키지의 다른 클래스에서 사용 가능. 패키지가 다르면 사용할 수 없다.
- private : 클래스 내부에서만 사용 가능.
(여러 개 사용 가능)
- final : 값 변경 불가. (선언 시에만 값 할당 가능)
- static : 공용 메모리 사용.
- transient : 직렬화 방지.
* 데이터형
- 기본형 데이터형, 참조형 데이터형
* default value
: 선언 시 값을 할당하지 않아도, 정해진 값(default value)이 들어가는 자동초기화가 된다.
| 데이터형 종류 | 데이터형 명 | 기본 값(default value) |
| 정수 | byte, short, int, long | 0 |
| 문자 | char | \u0000 |
| 실수 | float, double | 0.0 |
| 불린 | boolean | false |
| 참조형 | class, String, array | null |
2. 값 할당)
클래스명.변수명 = 값;
3. 사용)
클래스명.변수명
* access modifier(접근 지정자)의 접근

* instance variable (member variable)
- 특정 객체마다 생성되고 사용되는 변수.
- class field에 정의한다.
- 자동초기화가 된다.
- instance를 생성한 후(객체화 후) "객체명.변수명"으로 사용한다.
-> 참조형 데이터형을 사용하는 방법.
클래스형 객체명 = new 클래스명();
- 객체가 생성될 때 메모리에 올라가고, 객체가 소멸될 때 메모리에서 내려온다.
작성법)
1. 선언)
접근지정자 데이터형 변수명;
2. 객체화) - instance variable를 사용하기 위해
클래스명 객체명 = new 클래스명();
3. 값 할당)
객체명.변수명 = 값;
4. 값 사용)
객체명.변수명
* 10 이라는 값을 mehod 안에서 잠시 사용
- local variable (값이 유지되지 않는다.)
* 10 이라는 값을 모든 객체가 사용해야 한다.
- static variable (값이 유지된다. - 값이 변경되면 모두 변경된 값으로 사용된다.)
* 10 이라는 값이 여러 개가 구분되어 사용되어야 한다.
- instance variable (값이 유지된다. - 값이 변경되면 특정 객체에 있는 값만 변경된다.)
* method
- 일(업무)을 구분하여 정의하기 위해서.
- 중복코드를 줄일 수 있다.
- 호출하여 정해진 일을 수행한다.
- instance method와 static method 두 가지로 정의한다.
작성법)
1. method 정의)
접근지정자 반환형 method명(매개변수,,,,){
일
}
* 반환형
- return type
- method 호출 시 값을 반환할 때 사용
- void : 반환 값 없음. 기본형 데이터형 사용, 참조형 데이터 형
* method명
- 하는 일을 알아볼 수 있도록 이름을 설정
* 매개변수(parameter)
- method 외부의 값을 method 내부로 전달하기 위한 변수.
- 기본형 데이터 형, 참조형 데이터 형 사용 가능
2. 호출)
- static method
클래스명.method명(값);
- instance method
객체명.method명(값);
* static method
- 객체화 없이 호출하여 사용하는 method.
- instance variable에 저장된 값을 사용하지 않고, 업무처리를 해야 하는 경우.
작성법)
1. method 작성)
public static void method명(매개변수,,,,){
업무정의
}
2. 호출)
클래스명.method명(값,,,);
예시)
두 정수를 입력받아(parameter는 정수로 2개 필요) 더한 값을 출력하는 일.(구현되는 업무)
class Test{
public static void plus(int num, int num2){
// parameter : arguments를 받아서 저장하기 위한 변수
int result = 0;
result = num + num2;
System.out.println(result);
}
public static void main(String[] args){
Test.plus(1, 8); // 호출
// arguments : 매개변수로 입력되는 값들...
}
}
* instance method
- instance variable를 사용하여 업무를 처리할 때.
- 객체화 후 사용.
작성법)
1. method 정의
public void method명(매개변수,,,){
업무
}
2. 객체 생성)
클래스명 객체명 = new 클래스명();
3. 호출)
객체명.method명(값,,,);
class Test{
int day;
public void printDay(){
System.out.println(day + "일");
}
public static void main(String[] args){
Test t = new Test();
t.printDay();
t = 9;
t.day++;
t.printDay(); // 10
// instance variable는 객체가 살아있는 동안에는 값이 계속 유지된다.
Test t2 = new Test(); // 새로운 객체
t2.printDay(); // 0
}
}
* method의 형태
1. 고정 일 - 반환 값 없고, 매개변수 없는 형
public void typeA(){
// 일 : 입력된 값이 없으므로 항상 같은 일을 수행 => 정적 => 고정 일
} // 호출한 곳으로 돌아가!!
호출)
객체명.typeA();
2. 가변 일 - 반환 값 없고, 매개변수 있는 형
public void typeB(int i){
// 일 : 8을 가지고 일을 하거나, 9를 가지고 일을 수행 => 가변적 => 가변 일
}
호출)
객체명.typeB(8);
객체명.tyepB(9);
* 값으로 사용되는 method.
- method의 가장 마지막 줄에 반드시 return(분기문)이 나와야 한다.
- return 사용법) return 값(변수, 상수, 연산식: 반환형과 동일한 형의 값이 정의되어야 한다.);
3. 고정 값 - 반환형 있고, 매개변수 없는 형
public int typeC(){
// 일
return 8;
}
호출)
데이터형 변수명 = 객체명.typeC();
흐름) 호출 -> 일 -> 리턴되는 값으로 변환 -> 변환된 결과 값이 변수에 할당.
4. 가변 값 - 반환형 있고, 매개변수 있는 형
public int typeD(double d){
// 일
return (int) d;
}
호출)
데이터형 변수명 = 객체명.typeD(1.8);
흐름) 호출 -> 일 -> 리턴되는 값으로 변환 -> 변환된 결과 값이 변수에 할당.