230316 - java(4)

팝콘·2023년 3월 20일

Java

목록 보기
3/17

1. for문

  • 반복의 횟수를 개발자가 지정해서 반복작업을 수행할 때 사용한다.
  • 반복작업의 횟수를 알고 있을 때 사용한다.
  • 블록내의 수행문을 여러번 반복 실행시킨다.
- 지정된 횟수만큼 수행문을 반복 실행할 때 사용한다.

	for (초기식; 조건식; 증감식) {
		수행문1;
		수행문2;
		수행문3;
	}

1) 초기식

  • 한번만 실행된다. 반복 작업의 횟수를 제어하기 위한 시작값을 설정한다.
  • 둘 이상의 변수가 필요할 때는 콤마(,)를 구분자로 쓴다. 단, 두 변수의 타입은 같아야 한다.
  • 초기식에서 선언한 변수는 for문의 블록안에서 선언한 변수와 같은 변수 범위를 가진다.
  • 초기식에서 선언한 변수는 조건식, 증감식, for 블록의 수행문에서만 사용가능하다.

2) 조건식

  • 조건식이 true로 판정될 때 블록내의 수행문을 실행하고 조건식이 false로 판정되면 for문을 빠져나간다.
  • 조건식은 반복을 언제까지 지속해야 되는지를 결정한다.
  • 조건식은 초기식에서 지정한 시작값이 조건식을 만족할 경우 계속해서 반복작업을 수행하게 한다.

3) 수행문

  • 조건식이 true로 판정될 때마다 실행된다.
  • 수행문의 실행이 완료되면 다음 반복을 위해서 증감식으로 이동한다.

4) 증감식

  • 초기식에서 지정한 시작값에 변화(증가 또는 감소)를 준다.
  • 증감식을 수행하면 조건식으로 이동해서 다시 조건식을 실행한다.

실행순서

초기식 -> 조건식 -> 수행문 -> 증감식 -> 조건식 -> 수행문 -> 증감식
-> 조건식 -> 수행문 ...


2. 향상된 for문(enhanced-for문)

  • 배열과 콜렉션은 값(or 객체)을 여러개 저장하는 객체다. 배열과 콜렉터에서만 사용할 수 있다.
  • 지정된 배열이나 콜렉션의 모든 요소의 값을 순서대로 꺼내서 변수에 대입하고, 수행문을 실행하는 반복문이다.
1) 우항에는 반복처리의 대상이 되는 배열객체가 위치한다.
2) 좌항에는 배열객체의 각 요소에 저장된 값을 전달받는 적절한 타입의 변수가 선언되어야 한다.
3) 수행문에서는 반복이 수행될 때마다 변수에 저장된 값(배열객체의 각 요소에 저장된 값을 순서대로 전달받은 것)을 이용한다.

	for (타입 변수명 : 배열) {
		수행문;
		System.out.println(변수명);
	}
    
	for (타입 변수명 : 콜렉션) {
		수행문;
	}
    
배열 - 값을 여러개 저장하고 있는 배열객체를 참조하는 참조변수명
타입 - 배열의 각 요소에 저장되는 값의 타입과 일치하는 자료형
변수 - 배열의 각 요소에 저장된 값을 반복이 실행될 때 마다 순서대로 하나씩 전달받는다.

3. while문

  • 조건식이 참(true)인 동안만 블럭{}내의 문장을 반복한다.
int i = 0;			// 초기화

while (i <= 10) {	// 조건식
	System.out.print(i);
    i++;			// 증감식
}

1) 조건식이 참(true)면 블럭{} 안으로 들어가고, 거짓(false)면 while문을 벗어난다.
2) 블럭{}의 문장을 수행하고 다시 조건식으로 돌아간다.
  • 아래의 두가지 기능을 제공하는 객체를 대상으로 반복작업을 수행할 때
    사용한다.
    - 객체에 저장된 값을 하나씩 꺼내는 기능이 제공된다.
    - 객체에서 다음에 꺼낼 값이 있는지 알려주는 기능이 제공된다.

4. do while문

  • while문의 변형으로 구조는 while문과 같으나 블럭{}을 먼저 수행한 후에 조건식을 평가하는 점은 다르다.
  • 최소 한번은 수행될 것을 보장한다.
do {
	수행문;
} while (조건식);

5. break와 continue

break

  • break는 switch와 반복문에서 사용가능한
    키워드다.
  • break는 if문과 함께 사용해야한다.
  • break가 반복문에서 사용되면 반복을 중단시키고 반복문을 빠져나간다.
  • break는 특정 조건을 만족했을 때 사용한다.
for (int i=1; i<=10; i++) {
	if (i == 6) {
		break;
	}
	System.out.println(i);
}
// 1,2,3,4,5까지 출력하고 반복문 종료

continue

  • continue는 반복문에서 사용가능한 키워드다.
  • continue는 if문과 함께 사용해야한다.
  • continue가 반복문에서 사용되면 반복문 블록에 남아 있는 수행문을 실행하지 않고 다음 반복으로 넘어간다.
  • for문의 경우 증감식으로 이동하며, while문과 do-while문의 경우 조건식으로 이동한다.
for (int i=1; i<=10; i++) {
	if (i == 6) {
		continue;
	}
	System.out.println(i);
}
// 1, 2, 3, 4, 5, 7, 8, 9, 10을 출력한다. 6만 건너뛰고 반복문 수행한다.

6. 중첩 for문

  • for문 내부에 for문이 존재하는 구문
  • 중첩 횟수는 거의 제한이 없다.
for (초기식; 조건식; 증감식) {
	수행문1;
	for(초기식; 조건식; 증감식) {
		수행문2;
	}
}

1) 수행문1은 바깥쪽 for문의 반복 횟수만큼 실행된다.
2) 수행문2는 (바깥쪽 for문의 반복 횟수*안쪽 for문의 반복 횟수)만큼 실행된다.

  • 변수
    - 정보가 하나의 값으로 구성된 경우
    - 기본 자료형 혹은 문자열 타입의 변수를 생성해서 값을 저장한다.
예)
    국어점수 = 100
	형식)	String x = “홍길동”;
	int x = 1000;
  • 배열, 콜렉션
    - 정보가 같은 타입의 값 여러개로 구성된 경우
    - 배열 혹은 콜렉션은 같은 타입의 값을 여러개 저장할 때 생성한다.
    - 배열 혹은 콜렉션은 값을 여러개 저장하고 있기 때문에, 반복처리가 필수다.
    - 배열 혹은 콜렉션보다는 배열 혹은 콜렉션에 저장된 값이 처리 대상이다.
    - 배열에는 보통 단일값이 아니라 객체 단위로 저장된다. 객체 단위가 배열에 저장되는 것을 배열객체라고 부른다.
예)
    우리반 학생들의 이름 = [홍길동, 김유신, 강감찬, 이순신]

형식)	
    String[] names = [“김유신”, “홍길동’, “강감찬”, “이순신”];
	String[] names = new String[10];
	int[] scores = {100, 30, 60, 70, 80};
	int[] scores = new int[10];
  • 객체, 맵
    - 정보가 서로 다른 타입의 값으로 구성된 경우
    - 프로그램 처리 대상이 되는 정보의 값을 전부 표현하는 설계도를 작성한다.
    - 설계도로 객체를 생성하면, 그 설계도에 정의된 변수들에 값을 저장할 수 있다.
    - 특히, 정보를 표현하는 객체를 ValueObject(VO)라고 부른다.
예) 
	상품정보
		번호 =100
		이름 = mac book pro
		제조사 = 애플
		가격 = 1500000
		할인율 = 0.001
		적립율 = 0.005
		판매여부 = true

형식)	
	public class Product {
		int no;
		String names;
		int price;
		double discountRate;
		double depositRate;
		boolean onSell;
 	}

7. 배열

  • 같은 타입의 여러 변수를 하나의 묶음으로 다르는 것을 말한다.

  • 크기를 지정해야 생성이 가능하고 크기 변경은 불가능하다.

  • 같은 타입의 데이터만 저장이 가능하다.

  • 고유한 주소값을 가지고 있다.

형식)	
	타입[] 변수명 = new 타입[크기];
	타입[] 변수명 = {값, 값, 값, 값};
	타입[] 변수명 = new 타입[]{값, 값, 값, 값};

- new는 객체를 생성시키는 키워드다.
- int x;는 정수값을 저장하는 변수x다.
- int[] x;는 배열객체의 주소값을 저장하는 변수 x다.
  • 주소값을 잃어버린 변수는 두번 다시 같은 객체를 참조할 수 없다. (자바한정)

  • 연결이 끊어진 객체를 Garbage객체라고 부른다.

  • 모든 배열객체는 배열의 크기 정보를 표현하는 length 프로퍼티가 있다.
    배열객체의 각 요소에 접근할 때는 배열의 인덱스를 사용한다.

  • 배열의 인텍스 범위는 0부터 '배열길이 - 1'까지다.

  • 배열은 생성과 동시에 자동적으로 기본값(0)으로 초기화된다.

  • 출력할 땐 반복문 또는 Arrays.toStirng(배열이름) 메소드를 사용해야 한다.


8. 2차원 배열

선언방법)
	타입[][] 변수이름;
    타입 변수이름[][];
    타입[] 변수이름[];

예)
	int[][] score = new int[4][3];
    // int값을 저장할 수 있는 4행 3열의 다차원 배열 생성
    
초기화)
	int[][] arr = new int[][]{{1,2,3}, {4,5,6}};
    int[][] arr = {{1,2,3}, {4,5,6}};
    int[][] arr = {
    				{1,2,3},
                    {4,5,6}
                  };
   	int[][] arr = {
    				{100,100,100},
                    {20,20,20},
                    {30,30,30}
                    {40,40}
                  };
profile
터짐

0개의 댓글