언어/JAVA

[JAVA] ch03. 반복문과 배열 그리고 예외 처리

rngPwns 2025. 1. 3. 13:07

3.1 반복문

 

  • while문의 '조건식'은 for문처럼 true인경우 반복이 계속되고 false일 경우 while문을 벗어난다. 단! for문과 달리 '조건식'이 없으면 컴파일 오류가 발생.

  • '조건식'은 while문과 동일하며 '조건식'이 없으면 컴파일 오류 발생. do-while문은 '작업문'실행 후 반복조건 따짐-> '작업문'이 최초 한 번은 반드시 실행.

중첩반복

  • 반복문 안에 다른 반복문 만들 수 있음. (for문 안에 for문 or while문 안에 for,while,do-while문)

3.2 continue문과 break문

  • continue문 : 반복문을 빠져나가지 않으면서 즉시 다음 반복으로 넘어가고자 할 때 사용(continue; 자체가 하나의 문장)

  • break문 : 하나의 반복문을 즉시 벗어날 때 사용, break; 자체가 하나의 문장
    • break문 실행되면 현재의 반복문을 벗어나 다음 코드로 실행이 계속됨.

 

3.3 자바의 배열

  • 배열: 인덱스와 인덱스에 대응하는 일련의 데이터들로 이루어진 연속적인 자료구조. 같은 종류의 데이터들이 순차적으로 저장.

대신

 

로 간단하게 합을 구할 수 있다.

 

배열선언 및 생성

  1. 배열에 대한 레퍼런스 변수 선언
  2. 배열 생성 - 배열공간 할당

  • int intArray []; 를 선언했을 때 배열공간은 아직 생성되지 않는다. intArray변수는 레퍼런스(참조)라 불리는 배열의 주소값을 가지며 그 자체가 배열은 아니다. 그러므로 intArray변수값은 null.
  • 배열 생성할 때 int intArray[]=new int [5]; 처럼 선언과 생성을 동시에 할 수도 있다.
  • 배열 선언문에서 '{}' 사이에 원소를 나열하여 초기화된 배열을 만들 수 있다. 
    • int intArray[]={4,3,2,1,0}; --> intArray의 크기는 자동으로 5가 됨. 
  • 배열의 인덱스는 정수만 가능. 

 

레퍼런스 치환과 배열 공유

레퍼런스 치환은 배열을 복사하는 게 아니라 레퍼런스만 복사하는 것이므로 myArray는 intArray레퍼런스값(주소값)을 가지게 됨으로써 배열을 공유하게 됨. 따라서 intArray의 배열원소 마음대로 접근 가능.

 

배열의 크기, length 필드

  • 자바는 배열을 객체로 다룸.
  • 배열이 생성되면 배열공간과 함께 배열의 크기 값을 가진 length 필드가 배열 객체 내에 생성
    • int intArray[]=new int[5]; (인덱스는 0~4까지 가능)
    • int size=intArray.length; //size는 5
  • length필드를 이용하면 프로그램에서 배열의 크기를 따로 관리할 필요 x.
  • C/C++은 배열과 배열의 크기를 따로 관리해야함. 자바는 배열이 그 크기 제공 -> 배열 다루기가 훨 쉬움.

 

배열과 for-each문

  • for문을 변형한 for-each문은 배열이나 나열의 크기만큼 루프를 돌면서 각 원소를 순차적으로 접근하는데 매우 유용

 

3.4 다차원 배열_2차원 배열

  • 2차원 배열의 레퍼런스변수 선언: int intArray[][]; 또는 int [][] intArray;
    • 2행 5열의 2차원배열 선언 : intArray=new int[2][5];

  • 2차원 배열의 초기화

 

3.5 메소드의 배열 리턴

  • 메소드가 배열 리턴할 때는 배열 메모리 전체가 아닌 배열에 대한 레퍼런스만 리턴
  • 메소드의 리턴타입에는 배열의 크기를 지정하지 않는다.

//makeArray()로부터 배열 리턴받기
int [] intArray;//makeArray()의 리턴타입과 동일한 타입 선언
intArray=makeArray(); //메소드가 리턴하는 배열 받음

 

3.6 자바의 예외처리

  • 실행 중 오동작이나 결과에 악영향을 미치는 예상치 못한 상황 발생 : exception(에외)
  • 문법에 맞지 않게 작성된 코드는 컴파일러에 의해 컴파일 오류로 걸러짐
  • 예외는 사용자의 잘못된 입력이나 배열의 인덱스가 배열의 크기를 넘어가는 등의 사건에 의해 프로그램 실행 중 발생'실행 중 예외 발생 -> 자바 플랫폼이 가장 먼저 알게됨 -> 현재 실행중인 자바 프로그램에게 예외 전달 ->응용프로그램이 예외에 대응. 
    • 응용프로그램에 예외 대처 코드가 없다면 자바플랫폼이 응용프로그램을 강제종료
  • 예외발생경우
    • 정수를 0으로 나누기
    • 배열의 크기보다 큰 인덱스로 배열의 원소 접근
    • 정수 읽는 코드가 실행되고 있을 때 사용자가 문자입력

예외처리, try-catch-finally 문

  • 예외가 발생할 가능성이 있는 실행문들을 try { } 블록으로 묶고 예외처리코드는 catch { } 블록에 작성

예외가 발생한 경우 응용프로그램은 남은 실행문을 실행하지 않고 바로 catch 블록의 예외처리문으로 점프하여 실행해야 한다.

  • finally { }는 선택적 구문으로서 생략해도 상관x. 많은 경우 생략. 
  • 발생한 예외타입과 일치하는 catch 블록이 없으면 프로그램 강제 종료.
  • catch블록 내에서 System.exit(0)을 호출하면 언제든지 프로그램 종료 가능

 

'언어 > JAVA' 카테고리의 다른 글

ch05. 상속  (0) 2025.03.26
[JAVA] ch04. 클래스와 객체  (1) 2025.01.06
[JAVA] ch02. 자바 기본 프로그래밍  (0) 2025.01.01
[JAVA] ch01. 자바 시작  (1) 2024.12.28