TIL 2022-09-06

JYR00·2022년 9월 6일
0

TIL

목록 보기
4/60

명품자바에센셜 p.101

배열(Array)

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

int intArray[];
intArray = new int[5];

위에 것은 배열 선언, 아래 것은 배열생성이다.

주의해야 할 점은 배열선언을 할 때 배열의 크기를 지정하면 안 된다.


배열 초기화

int intArray[] = {4,3,2,1,0};
double intArray[] = {0.01, 0.02, 0.03, 0.04}

배열의 크기는 { } 사이에 나열된 값의 개수로 정해진다.


배열 인덱스

배열의 인덱스는 정수만 가능하다. 인덱스는 0부터 시작하며 마지막 원소의 인덱스는 (배열크기-1)이다. (음수 사용 불가, 인덱스 범위는 0-5이다.)


레퍼런스 치환과 배열 공유

자바에서는 배열 공간과 레퍼런스의 변수가 분리되어 있기 때문에 생성된 배열에 대한 공유가 쉽게 이루어진다.

int intArray = new int[5];
int myArray = intArray;

이렇게 하면 myArray와 intArray가 같은 배열을 공유하게 된다.
만약 myArray에서 값을 수정하게 되면 intArray도 수정된 값을 사용하게 된다.

예제(p.106)

package test;
import java.util.Scanner;
public class array {
	public static void main(String[] args) {
	Scanner scanner=new Scanner(System.in);
	
	int intArray[]; //레퍼런스 선언
	intArray = new int[5]; //배열 생성
	int max=0; //max 초기화
	System.out.println("양수 5개를 입력하세요");
	for (int i =0; i<5; i++) {
		intArray[i]=scanner.nextInt();
		if(intArray[i]>max)
			max = intArray[i];
	}
	System.out.println("가장 큰 수는 "+max+"입니다.");
	scanner.close();
	}

}

length

자바는 배열을 객체로 다룬다. length필드를 이용하면 프로그램에서 배열의 크기를 따로 관리할 필요가 없다. length필드를 이용하여 배열의 모든 값을 출력하는 코드는 다음과 같다.

for (int i =0; i<intArray.length; i++) //intArray배열크기만큼 루프돈다
System.out.println(intArray[i]);

package test;
import java.util.Scanner;
public class ArrayLength {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.println("5개의 정수를 입력하세요");
		int intArray[] = new int[5]; //배열 선언&생성
		double sum = 0.0;
		for (int i=0; i<intArray.length; i++)
			intArray[i] = scanner.nextInt(); //키보드에 입력받은 정수입력
		
		for(int i=0; i<intArray.length; i++)
			sum+=intArray[i]; //배열에 저장된 정수 값 더하기
		
		System.out.println("평균은 "+ sum/intArray.length); 
		scanner.close();
	}

}



for-each

for (변수 : 배열레퍼런스){
.. 반복작업문..
}

int[ ]배열의 합, String[ ] 문자열 출력

		int [] n = {1,2,3,4,5};
		int sum = 0;
		for(int k :n) {
			System.out.print(k+"");
			sum += k;
		}
		System.out.println("합은 "+sum);
	
	
	String f[] = {"사과","배","바나나","체리","딸기","포도"};
	for(String s:f)
		System.out.print(s+"");
	}
}



자바의 예외처리(p.114)

예외(expection)란 실행 중 오동작이나 결과에 악영향을 미치는 예상치 못한 상황 발생을 말한다. 예외는 주로 사용자의 잘못된 입력이나 배열의 인덱스가 배열의 크기를 넘어가는 등의 사건에 의해 프로그램 시행 중 발생한다.
실행중 예외가 생겼다면 자바 플랫폼이 가장 먼저 알아채 자바 응용프로그램에 전달해 대응하게 한다. 만약 응용프로그램에 예외를 처리하는 코드가 작성되어있지 않다면 자바 플랫폼이 응용 프로그램을 강제로 종료 시킨다.

package test;
import java.util.Scanner;
public class DivideByZero {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int dividend; // 나뉨수
		int divisor;  // 나눗수
		
		System.out.print("나뉨수를 입력하세요:");
		dividend = scanner.nextInt();
		System.out.print("나눗수를 입력하세요:");
		divisor = scanner.nextInt();
		System.out.println(dividend+"를 "+divisor+"로 나누면 몫은 "
				+dividend/divisor + "입니다" ); //만약 0으로 나뉜다면 예외 발생한다.
	}

}

이렇게 빨간 글씨가 나타나는 것이 싫다면 방법이 있다.

package test;
import java.util.Scanner;
public class DivideByZero {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int dividend;
		int divisor;
		
		System.out.print("나뉨수를 입력하세요:");
		dividend = scanner.nextInt();
		System.out.print("나눗수를 입력하세요:");
		divisor = scanner.nextInt();
		try {
		System.out.println(dividend+"를 "+divisor+"로 나누면 몫은 "
				+dividend/divisor + "입니다" );
		}
		catch(ArithmeticException e) { //ArithmeticException예외 처리 코드
			System.out.println("0으로 나눌 수 없습니다.");
		}
		finally {
			scanner.close();
		}
	}

}




ArithmeticException 예외가 발생하더라도 프로그램이 강제 종료되지 않고 정상 실행된다.

0개의 댓글