study/Java

[sist] 2024.01.08_Java : while, variable(변수), method(일)

듀2 2024. 2. 3. 15:32

* 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);

 

 흐름) 호출 -> 일 -> 리턴되는 값으로 변환 -> 변환된 결과 값이 변수에 할당.

728x90