๐Ÿ—ฃ๏ธ/Java

[Java] ๋ฐฐ์—ด / ์˜ˆ์™ธ์ฒ˜๋ฆฌ

sssbin 2022. 2. 10. 17:48

 

๋ฐฐ์—ด

- ์ธ๋ฑ์Šค์™€ ์ธ๋ฑ์Šค์— ๋Œ€์‘ํ•˜๋Š” ์ผ๋ จ์˜ ๋ฐ์ดํ„ฐ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฐ์†์ ์ธ ์ž๋ฃŒ ๊ตฌ์กฐ

- ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

 

๋ฐฐ์—ด ์„ ์–ธ ๋ฐ ์ƒ์„ฑ

1) ๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜ ์„ ์–ธ

์„ ์–ธ ์‹œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์„œ ์•ˆ ๋œ๋‹ค.

2) ๋ฐฐ์—ด ์ƒ์„ฑ - ๋ฐฐ์—ด ๊ณต๊ฐ„ ํ• ๋‹น

 

๋ ˆํผ๋Ÿฐ์Šค ์น˜ํ™˜๊ณผ ๋ฐฐ์—ด ๊ณต์œ 

- ์ž๋ฐ”์—์„œ๋Š” ๋ฐฐ์—ด ๊ณต๊ฐ„๊ณผ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ๊ณต์œ ๊ฐ€ ์‰ฝ๊ฒŒ ์ด๋ฃจ์–ด์ง„๋‹ค.

- ๋ ˆํผ๋Ÿฐ์Šค์˜ ์น˜ํ™˜์€ ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ ˆํผ๋Ÿฐ์Šค๋งŒ ๋ณต์‚ฌ๋œ๋‹ค.

- myArray๋Š” intArray ๋ ˆํผ๋Ÿฐ์Šค ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋จ์œผ๋กœ์จ intArray ๋ฐฐ์—ด์„ ๊ณต์œ ํ•˜๊ฒŒ ๋œ๋‹ค.

int intArray[] = new int[5];
int myArray[] = intArray; // ๋ ˆํผ๋Ÿฐ์Šค ์น˜ํ™˜. myArray๋Š” intArray์™€ ๋™์ผํ•œ ๋ฐฐ์—ด ์ฐธ์กฐ

 

for-each ๋ฌธ

- ๋ฐฐ์—ด์ด๋‚˜ ๋‚˜์—ด์˜ ํฌ๊ธฐ๋งŒํผ ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๊ฐ ์›์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š”๋ฐ ์œ ์šฉ

for-each ๋ฌธ์˜ ๊ตฌ์กฐ

// for-each ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ˆ˜ ๋ฐฐ์—ด์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ

int [] n = {1, 2, 3, 4, 5};
int sum = 0;
for (int k : n) {	// n.length ๋งŒํผ ๋ฐ˜๋ณต
	// ๋ฐ˜๋ณต๋  ๋•Œ๋งˆ๋‹ค k๋Š” n[0], ..., n[4]๋กœ ๋ฒˆ๊ฐˆ์•„ ์„ค์ •
	sum += k;
}

 


๋ฉ”์†Œ๋“œ์˜ ๋ฐฐ์—ด ๋ฆฌํ„ด

- ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐฐ์—ด ๋ฉ”๋ชจ๋ฆฌ ์ „์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋งŒ ๋ฆฌํ„ด๋œ๋‹ค.

int[] (๋ฐฐ์—ด ๋ ˆํผ๋Ÿฐ์Šค)์„ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์†Œ๋“œ์˜ ์›ํ˜• ๋ฐ ์ฝ”๋“œ

// ์ผ์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๋ฆฌํ„ดํ•˜๋Š” makeArray(), ์ด ๋ฉ”์†Œ๋“œ๋กœ๋ถ€ํ„ฐ ๋ฐฐ์—ด์„ ์ „๋‹ฌ๋ฐ›๋Š” ํ”„๋กœ๊ทธ๋žจ

public class ReturnArray {
	static int[] makeArray() { // ์ผ์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด ๋ฆฌํ„ด
		int temp[] = new int[4]; // ๋ฐฐ์—ด ์ƒ์„ฑ
		for (int i=0; i<temp.length; i++)
			temp[i] = i;
		return temp; // ๋ฐฐ์—ด ๋ฆฌํ„ด. makeArray()๊ฐ€ ์ข…๋ฃŒํ•ด๋„ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์€ ์†Œ๋ฉธ๋˜์ง€ ์•Š์Œ.
	}
	
	public static void main(String[] args) {
		int intArray[]; // ๋ฐฐ์—ด ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜ ์„ ์–ธ
		intArray = makeArray(); // ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฆฌํ„ดํ•œ ๋ฐฐ์—ด ์ฐธ์กฐ
		
		for (int i=0; i<intArray.length; i++)
			System.out.print(intArray[i] + " ");
	}
}

makeArray()๋กœ๋ถ€ํ„ฐ ๋ฐฐ์—ด์„ ๋ฆฌํ„ด ๋ฐ›๋Š” ๊ณผ์ •

 


์ž๋ฐ”์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์˜ˆ์™ธ ๋ฐœ์ƒ ์‚ฌ๋ก€

- ์ •์ˆ˜๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ

- ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฐ ์ธ๋ฑ์Šค๋กœ ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ

- ์ •์ˆ˜๋ฅผ ์ฝ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ

 

try-catch-finally ๋ฌธ

try {
	์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์‹คํ–‰๋ฌธ
}

catch (์ฒ˜๋ฆฌํ•  ์˜ˆ์™ธ ํƒ€์ž… ์„ ์–ธ) {
	์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฌธ    
}

finally {	// ์ƒ๋žต ๊ฐ€๋Šฅ
	์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋˜๋Š” ๋ฌธ์žฅ    
}

์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์™€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์˜ ์‹คํ–‰ ๊ณผ์ •

 

์˜ˆ์™ธ ํด๋ž˜์Šค

 

์˜ˆ์™ธ ํƒ€์ž… (์˜ˆ์™ธ ํด๋ž˜์Šค) ์˜ˆ์™ธ ๋ฐœ์ƒ ๊ฒฝ์šฐ ํŒจํ‚ค์ง€
ArithmeticException ์ •์ˆ˜๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆŒ ๋•Œ ๋ฐœ์ƒ java.lang
NullPointerException null ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ๋ฐœ์ƒ java.lang
ClassCastException ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ํƒ€์ž…์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ ๋ฐœ์ƒ java.lang
OutOfMemoryError ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ๋ฐœ์ƒ java.lang
ArrayIndexOutOfBoundsException ๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ์ ‘๊ทผ ์‹œ ๋ฐœ์ƒ java.lang
IllegalArgumentException ์ž˜๋ชป๋œ ์ธ์ž ์ „๋‹ฌ ์‹œ ๋ฐœ์ƒ java.lang
IOException ์ž…์ถœ๋ ฅ ๋™์ž‘ ์‹คํŒจ ๋˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์‹œ ๋ฐœ์ƒ java.io
NumberFormatException ๋ฌธ์ž์—ด์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ํƒ€์ž…์˜ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ ์‹œ ๋ฐœ์ƒ java.lang
InputMismatchException Scanner ํด๋ž˜์Šค์˜ nextInt()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ •์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›๊ณ ์ž ํ•˜์˜€์ง€๋งŒ, ์‚ฌ์šฉ์ž๊ฐ€ 'a' ๋“ฑ๊ณผ ๊ฐ™์ด ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•œ ๊ฒฝ์šฐ java.util
// 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ์˜ˆ์™ธ์— ๋Œ€์ฒ˜ํ•˜๋Š” try-catch ๋ธ”๋ก

import java.util.Scanner;

public class DevideByZeroHandling {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
				
		int dividend;
		int divisor;

		System.out.print("๋‚˜๋‰จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค:");
		dividend = sc.nextInt();
		System.out.print("๋‚˜๋ˆ—์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค:");
		divisor = sc.nextInt();
		
		try {
			System.out.println(dividend + "๋ฅผ " + divisor + "๋กœ ๋‚˜๋ˆ„๋ฉด ๋ชซ์€ " + dividend/divisor + "์ž…๋‹ˆ๋‹ค.");
			// divisor๊ฐ€ 0์ธ ๊ฒฝ์šฐ ArithmeticExceptio ์˜ˆ์™ธ ๋ฐœ์ƒ 
		}
		catch(ArithmeticException e) {
			System.out.println("0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
		}
		finally {
			sc.close();
		}
	}
}