Java practice_240108

Choi Suyeon·2024년 1월 8일

do~while

  • 시작과 끝을 모를 때 사용하는 반복문.
    최소 1번 수행에 최대 조건까지 수행
  문법)
  do{
  	반복수행문장들
  }while(조건식);
package day0108;

public class TestDoWhile {

	public static void main(String[] args) {

		int i = 0;
		do {
			i++;
			System.out.println(i);
		} while (i < 10);

		// 1~100까지 합 출력
		int j = 0;
		int sum = 0;
		do {
			j++;
			sum += j;
			System.out.println("j는 " + j + "현재 합은 " + sum);
		} while (j < 101);
		System.out.println("1부터 100까지의 합은 " + sum);
	}// main

}// class

Variable(변수)

  • 프로그램에 필요한 값을 일시적으로 저장하고 사용하기 위해
  • 가독성향상
  • 선언하는 영역에 따라 3가지를 지원.
class 클래스명{
	
    instance variable //member variable
    
	public static void main(String[] args){
    	static variable //class variable
    }
    
    local variable
}

Static variable

static variable(class variable) : 공용변수(모든 instance(객체)가 하나의 변수를 사용.)

  • class field에 정의.
  • 객체화 없이 클래스 명으로 사용할 수 있다.(클래스명.변수명)
  • 자동초기화가 된다.
  • 클래스가 실행되면 메모리에 올라가고, 클래스의 실행이 끝나면 메모리에서 내려온다.
  • 참조하는 속도가 빠르다.

문법

  1. 선언
    접근지정자 static 데이터형 변수명;
  • 접근지정자
<하나만 사용가능>
public  : 클래스 외부에서 사용가능.
protected : 같은 패키지의 다른 클래스에서 사용가능.
            패키지가 다르면 상속관계의 자식 클래스에서만 사용가능.
default :  접근지정자를 기술하지 않는 것.
           같은 패키지의 다른 클래스에서 사용가능.
           패키지가 다르면 사용할 수 없다.
private : 클래스 내부에서만 사용가능.

<여러개 사용가능>
final : 값 변경 불가. ( 선언시에만 값 할당 가능)
static : 공용메모리 사용.
transient : 직렬화 방지
  1. 값 할당
    클래스명.변수명 = 값;

  2. 사용
    클래스명.변수명

Access modifier

  • 접근지정자의 접근

<아래로 내려갈 수록 안전>
public
protected
default
private

Instance variable

  • (member variable) 특정 객체마다 생성되고 사용되는 변수.
  • class field에 정의한다.
  • 자동초기화가 된다.
  • instance를 생성한 후 (객체화 후) "객체명.변수명"으로 사용한다.
  • 객체 생성될 때 메모리에 올라가고, 객체가 소멸될 때 메모리에서 내려온다.

문법

  1. 선언
    접근지정자 데이터형 변수명;
  • 여기서 데이터형은 기본형 데이터형, 참조형 데이터 형이다.
  • 접근지정자
<하나만 사용가능>
public  : 클래스 외부에서 사용가능.
protected : 같은 패키지의 다른 클래스에서 사용가능.
            패키지가 다르면 상속관계의 자식 클래스에서만 사용가능.
default :  접근지정자를 기술하지 않는 것.
           같은 패키지의 다른 클래스에서 사용가능.
           패키지가 다르면 사용할 수 없다.
private : 클래스 내부에서만 사용가능.

<여러개 사용가능>
final : 값 변경 불가. ( 선언시에만 값 할당 가능)
static : 공용메모리 사용.
transient : 직렬화 방지
  1. 객체화
    instance variable를 사용하기 위해 선언
    클래스명 객체명=new 클래스명();

  2. 값 할당
    객체명.변수명=값;

  3. 값 사용
    객체명.변수명

variable 정리

  • 10 이라는 값을 method 안에서 잠시 사용
    – local variable ( 값이 유지되지 않는다.)

  • 10 이라는 값을 모든 객체가 사용해야 한다.
    – static variable (값이 유지 된다. – 값이 변경되면 모두 변경된 값으로 사용된다.)

  • 10 이라는 값이 여러 개가 구분되어 사용되어야한다.
    – instance variable ( 값이 유지 된다. – 값이 변경되면 특정 객체에 있는 값만 변경된다.)


method

  • 일(업무)을 구분하여 정의하기 위해서.
  • 중복코드를 줄일 수 있다.
  • 호출하여 정해진 일을 수행한다.
  • instance method와 static method 두 가지로 정의한다.

문법

  1. method 정의
    접근지정자 반환형 method명(매개변수...){
    }
  • 접근지정자
<하나만 사용가능>
public  : 클래스 외부에서 사용가능.
protected : 같은 패키지의 다른 클래스에서 사용가능.
            패키지가 다르면 상속관계의 자식 클래스에서만 사용가능.
default :  접근지정자를 기술하지 않는 것.
           같은 패키지의 다른 클래스에서 사용가능.
           패키지가 다르면 사용할 수 없다.
private : 클래스 내부에서만 사용가능.

<여러개 사용가능>
final : Override 방지
static : 객체화 없이 method를 직접 호출하여 사용할 때
synchronized : 동기화 처리
  • 반환형

    return type
    method 호출시 값을 반환할 때 사용.
    void - 반환 값 없음. 기본형 데이터형, 참조형 데이터형 사용

  • 매개변수

    parameter
    method외부의 값을 method내부로 전달하기 위한 변수.
    기본형 데이터형, 참조형 데이터형 사용가능

  1. 호출
  • static method 클래스명.method명(값);
  • instance method 객체명.method명(값);

static method

  • 객체화 없이 호출하여 사용하는 method.
  • instance variable에 저장된 값을 사용하지 않고, 업무처리를 해야하는 경우.

문법

  1. method 작성
    public static void method(매개변수...){
    업무정의
    }

  2. 호출
    클래스명.method명(값, 값2, ,,,);

  • 예시
* 두 정수를 입력받아(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();
    }
}

method 형태

  1. 고정 일
  • 반환 값 없고, 매개 변수 없는 형 <정적>
public void typeA(){
	//일 : 입력된 값이 없으므로 항상 같은 일을 수행 => 정적 => 고정일
}//호출한 곳으로 돌아가

public static void main(String[] args) {

	//객체화 : 인스턴스 변수나 인스턴스 method를 사용하기 위해서
	클래스명 객체명=new 클래스명();
}

호출)
객체명.typeA();
  1. 가변 일
  • 반환 값 없고, 매개변수 있는 형 <가변적>
public void typeB(int i){
	//일 : 입력된 값(8과 9)를 가지고 일을 수행 => 가변적
}//

호출)
객체명.typeB(8);
객체명.typeB(9);
  • 값으로 사용되는 method
    - method의 가장 마지막 줄에 반드시 return (분기문)이 나와야 한다.
  • return 사용법
    return 값;//<<변수, 상수, 연산식 : 반환형과 동일한 형의 값이 정의되어야 한다.
  1. 고정 값
  • 반환 형 있고, 매개변수 없는
public int typeC(){
	//일 
    return 8;
}//

호출)
데이터형 변수명 = 객체명.typeC();//호출되면 리턴된 값으로 변환, 이후 변수에 할당.
System.out.println(변수명);//출력

또는

System.out.println(객체명.typeC());//합쳐도 됨
  1. 가변 값
  • 반환형 있고, 매개변수 있는
public int typeD(double d,,,){
	//일
    return (int)d;//casting double -> int로 변환
}

호출)
데이터형 변수명 = 객체명.typeD(1.8);//호출되면 리턴된 값으로 변환, 이후 변수에 할당.

method 정리
객체화 : 인스턴스 변수나 인스턴스 method를 사용하기 위해
클래스명 객체명=new 클래스명();

반환형 없음(void임)
매개변수 없음 void typeA() => 1. 고정 일
매개변수 있음 void typeB(int i) => 2. 가변 일


반환형 있음(int & return)
매개변수 없음 int typeC() => 3. 고정 값
매개변수 있음 int typeD(double d) => 4. 가변 값

0개의 댓글