TIL(Today I Learned)_230720

Aspyn Choiยท2023๋…„ 7์›” 20์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
7/37

โ˜๐Ÿป์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ

1. ๋ฐฐ์—ด

- JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

- ๋ฐฐ์—ด

  1. ๋ฐฐ์—ด์ด๋ž€?
    : ๐Ÿ“Œ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜๋“ค๋ผ๋ฆฌ๐Ÿ“Œ์˜ ๋‚˜์—ด = ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ
    : ๋ฐฐ์—ด์€ ์ €์žฅ๋œ ๊ฐ’๋งˆ๋‹ค ์ธ๋ฑ์Šค๋ฒˆํ˜ธ(arr์˜ ์นธ)๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์„ค์ •๋จ

  2. ๋ฐฐ์—ด์˜ ํŠน์ง•
    : ๐Ÿ“Œํ•œ ๊ฐ€์ง€ ์ž๋ฃŒํ˜•๋งŒ ์ €์žฅ ๊ฐ€๋Šฅํ•˜๋‹ค.
    : ์—ฌ๋Ÿฌ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    : ๐Ÿ“Œํ•œ ๋ฒˆ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.

- ๋ฐฐ์—ด์˜ ์„ ์–ธ๊ณผ ํ• ๋‹น

  1. ๋ณ€์ˆ˜ / ๋ฐฐ์—ด ์ฐจ์ด์ 
    -๋ณ€์ˆ˜ : ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„
    -๋ณ€์ˆ˜ ์„ ์–ธ : ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ํ• ๋‹น
    (------------------------------------------------------------------------)
    -๋ฐฐ์—ด ์„ ์–ธ : ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐฐ์—ด์„ ์ฐธ๊ณ ํ•˜๋Š” ๋ณ€์ˆ˜ ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ
    -->๊ฐ’์„ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ
    -๋ฐฐ์—ด ํ• ๋‹น : ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ

  2. ๋ฐฐ์—ด์˜ ์ €์žฅ ๊ตฌ์กฐ

  3. ๋ฐฐ์—ด ์„ ์–ธ
    ์ž๋ฃŒํ˜•[ ] ๋ฐฐ์—ด๋ช… ;
    ์ž๋ฃŒํ˜• ๋ฐฐ์—ด๋ช…[ ] ;

  4. ๋ฐฐ์—ด ํ• ๋‹น
    ์ž๋ฃŒํ˜•[ ] ๋ฐฐ์—ด๋ช… = new ์ž๋ฃŒํ˜•[๋ฐฐ์—ดํฌ๊ธฐ];
    ์ž๋ฃŒํ˜• ๋ฐฐ์—ด๋ช…[ ] = new ์ž๋ฃŒํ˜•[๋ฐฐ์—ดํฌ๊ธฐ] ;

  5. ๋ฐฐ์—ด ์„ ์–ธ/์ดˆ๊ธฐํ™” ๋™์‹œ
    ์ž๋ฃŒํ˜•[] ๋ฐฐ์—ด๋ช… = {์ €์žฅํ•  ๋ฐฐ์—ด ๋‚ด์šฉ};

- ๋ฐฐ์—ด์‚ฌ์šฉํ•ด๋ณด๊ธฐ

	public void ex1() {
		
		// ๋ณ€์ˆ˜์„ ์–ธ
		int num;
		// Stack ์˜์—ญ์— int์ž๋ฃŒํ˜•์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„ 4byte๋ฅผ ํ• ๋‹นํ•˜๊ณ 
		// ๊ทธ ๊ณต๊ฐ„์— num์ด๋ผ๋Š” ์ด๋ฆ„์„ ๋ถ€์—ฌํ•œ๋‹ค.
		
		// ๋ณ€์ˆ˜๋Œ€์ž…
		num = 10;
		// ์ƒ์„ ๋œ num์ด๋ผ๋Š” ๊ณต๊ฐ„์— 10์„ ๋Œ€์ž…ํ•œ๋‹ค.
		
		// ๋ณ€์ˆ˜ ์‚ฌ์šฉ
		System.out.println("num์— ์ €์žฅ๋œ ๊ฐ’ : " + num);
		// num์ด ๋งŒ๋“ค์–ด์ง„ ์ž๋ฆฌ์— num์— ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ์–ด์™€์„œ ์ถœ๋ ฅํ•œ๋‹ค.
		// ์ถœ๋ ฅ -> num์— ์ €์žฅ๋œ ๊ฐ’ : 10
		
		// ๋ฐฐ์—ด ์„ ์–ธ
		int arr[];
		// stack์˜์—ญ์— int[] (int๋ฐฐ์—ด)์ž๋ฃŒํ˜• ๊ณต๊ฐ„์„ 4byte ํ• ๋‹นํ•˜๊ณ 
		// ๊ทธ ๊ณต๊ฐ„์— arr์ด๋ผ๋Š” ์ด๋ฆ„์„ ๋ถ€์—ฌํ•œ๋‹ค.
		// ** ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ์ฐธ์กฐํ˜•์œผ๋กœ ์ฃผ์†Œ๊ฐ’๋งŒ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
		
		// ๋ฐฐ์—ด ํ• ๋‹น
		arr = new int[3];

		// new : "new ์—ฐ์‚ฐ์ž"๋ผ๊ณ ํ•˜๋ฉฐ Heap ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ƒˆ๋กœ์šด ๊ณต๊ฐ„(๋ฐฐ์—ด,๊ฐ์ฒด)์„ ํ• ๋‹น
		// int[3] : int ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜ 3๊ฐœ๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฐ์—ด

		// new int[3] : heap ์˜์—ญ์— int 3์นธ์งœ๋ฆฌ int[]์„ ํ• ๋‹น(์ƒ์„ฑ)ํ•˜๋Š” ๊ฒƒ
		// ** ์ƒ์„ฑ๋œ int[]์—๋Š” ์‹œ์ž‘ ์ฃผ์†Œ๊ฐ€ ์ง€์ •๋œ๋‹ค.
		
		// arr = new int[3];
		// (int[])  (int[])  -> ๊ฐ™์€ ์ž๋ฃŒํ˜• == ์—ฐ์‚ฐ๊ฐ€๋Šฅํ•จ
		
		// heap์˜์—ญ์— ์ƒ์„ ๋œ int[]์˜ ์‹œ์ž‘์ฃผ์†Œ๋ฅผ
		// stack ์˜์—ญ์— ์ƒ์„ฑ๋œ arr ๋ณ€์ˆ˜์— ๋Œ€์ž…
		
		// -> arr๋ณ€์ˆ˜๊ฐ€ int[]์„ ์ฐธ์กฐํ•˜๊ฒŒ๋จ
		// ๊ทธ๋ž˜์„œ arr์„ ์ฐธ์กฐํ˜•์ด๋ผ๊ณ ํ•จ.
		
		// ๋ฐฐ์—ด ์š”์†Œ์— ๊ฐ’ ๋Œ€์ž…
		// arr์€ int[] ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜ ์ด์ง€๋งŒ
		// arr[0]์€ int์ž๋ฃŒํ˜• ๋ณ€์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ •์ˆ˜๊ฐ’์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
		
		
		arr[0] = 10;
		arr[1] = 50;
		arr[2] = 1000;
		
		System.out.println("arr์˜ ์ฃผ์†Œ๊ฐ’ ? : " + arr); 
		
		// ๋ฐฐ์—ด ์š”์†Œ๊ฐ’ ์ฝ์–ด์˜ค๊ธฐ
		// arr์ด ์ฐธ์กฐํ•˜๊ณ ์žˆ๋Š” ๋ฐฐ์—ด์˜ n๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐ›์•„์˜ด
		System.out.println(arr[0]); 
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		
	}

	public void ex2() {
		
		// ๋ฐฐ์—ด ์„ ์–ธ ๋ฐ ํ• ๋‹น
		int[] arr = new int[4];
		
		arr[0] = 100;
		arr[1] = 200;
		arr[2] = 500;
		arr[3] = 1000;

		// ๋ฐฐ์—ด์˜ ๊ธธ์ด (๋ช‡ ์นธ์ธ๊ฐ€) : ๋ฐฐ์—ด๋ช….length
		System.out.println("๋ฐฐ์—ด์˜ ๊ธธ์ด : " + arr.length);
		
		// ๋ฐฐ์—ด ์•ˆ์— ์žˆ๋Š” ์š”์†Œ๋“ค์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ
		// ๋ฐฐ์—ด๊ณผ for๋ฌธ ์‚ฌ์šฉ
		for(int i = 0; i < arr.length; i++) {
			System.out.printf("arr[%d]์— ์ €์žฅ๋œ ๊ฐ’ : %d\n", i, arr[i]);
		}
		
	}
	public void ex5() {
		
		char[] arr = new char[5];
		
		// char[] arr์ด ์ฐธ์กฐํ•˜๋Š” ๋ฐฐ์—ด ์š”์†Œ์— A, B, C, D, E ๋Œ€์ž…ํ•˜๊ธฐ
		
		for(int i = 0; i < arr.length; i++) {
			arr[i] = (char)('A' + i);
			// A == 65
			// B == 66
			// C == 67
		}
		
		// ** Arrays ํด๋ž˜์Šค
		// -> ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐฐ์—ด๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ๋ชจ์•„๋‘” ํด๋ž˜์Šค
		
		// Arrays.toString(๋ฐฐ์—ด๋ช…) : ํ•ด๋‹น ๋ฐฐ์—ด์— ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ ๊ฐ’์„ ์ถœ๋ ฅ
		int[] arr2 = new int[5];
		
		System.out.println( Arrays.toString(arr));
		System.out.println(Arrays.toString(arr2));
		
		// ๋ฐฐ์—ด ์„ ์–ธ๊ณผ ๋™์‹œ์— ํ• ๋‹น/์ดˆ๊ธฐํ™”
		// {} ์ค‘๊ด„ํ˜ธ๋Š” ๋ฐฐ์—ด์˜ ๋ฆฌํ„ฐ๋Ÿด ํ‘œ๊ธฐ๋ฒ•
		char[] arr3 = {'A', 'B', 'C', 'D', 'E'};
		System.out.println(Arrays.toString(arr3));
		
	}

- ๋ฐฐ์—ด ์˜ˆ์ œ

	public void ex3() {
		// 5๋ช…์˜ ํ‚คcm๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ํ‰๊ท  ๊ตฌํ•˜๊ธฐ
		
		// 1๋ฒˆ ํ‚ค ์ž…๋ ฅ : 170.5
		// 2๋ฒˆ ํ‚ค ์ž…๋ ฅ : 165.7
		// 3๋ฒˆ ํ‚ค ์ž…๋ ฅ : 184.3
		// 4๋ฒˆ ํ‚ค ์ž…๋ ฅ : 190.2
		// 5๋ฒˆ ํ‚ค ์ž…๋ ฅ : 174.4
		// ํ‰๊ท  : ~cm
		
		double[] height = new double[5];
		// double[] ์ž๋ฃŒํ˜• ์ฐธ์กฐ๋ณ€์ˆ˜ height๋ฅผ stack์˜์—ญ์— ์ƒ์„ฑํ•˜๊ณ 
		// stack์˜์–ต์˜ height์— 
		// heap์˜์—ญ์— ์ƒˆ๋กœ ์ƒ์„ฑ๋œ double 5์นธ์งœ๋ฆฌ double[]์˜ ์‹œ์ž‘์ฃผ์†Œ๋ฅผ ๋Œ€์ž…ํ•ด๋ผ
		
		for(int i = 0; i < height.length; i++) {
			System.out.print((i+1) + "๋ฒˆ ํ‚ค ์ž…๋ ฅ : ");
			height[i] = sc.nextDouble();
			// ๊ฐ ์ธ๋ฑ์Šค์— ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์„ ๋Œ€์ž…(์ดˆ๊ธฐํ™”)ํ•˜๋Š” ๊ฒƒ
		}
	
		System.out.println();
		
		double sum = 0;
		
		for(int i = 0; i < height.length; i++) {
			
			sum += height[i]; // ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ’์„ sum์— ๋ˆ„์ 
		}
		
		System.out.printf("ํ‰๊ท  : %.2f", sum / height.length);
		
	}

	//์˜ˆ์ œ
	public void ex4() {
		// ์ž…๋ ฅ๋ฐ›์€ ์ธ์› ์ˆ˜ ๋งŒํผ ์ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ฐฐ์—ด์— ์ €์žฅ
		// ์ž…๋ ฅ์ด ์™„๋ฃŒ๋˜๋ฉด ์ ์ˆ˜ ํ•ฉ๊ณ„, ํ‰๊ท , ์ตœ๊ณ ์ , ์ตœ์ €์  ์ถœ๋ ฅ
		
		// ์ž…๋ ฅ ๋ฐ›์„ ์ธ์› ์ˆ˜ : 
		// n๋ฒˆ ์ ์ˆ˜ ์ž…๋ ฅ :
		// n๋ฒˆ ์ ์ˆ˜ ์ž…๋ ฅ :
		// n๋ฒˆ ์ ์ˆ˜ ์ž…๋ ฅ :
		
		// ํ•ฉ๊ณ„ :
		// ํ‰๊ท  : 
		// ์ตœ๊ณ ์  :
		// ์ตœ์ €์  :
		
		System.out.print("์ž…๋ ฅ ๋ฐ›์„ ์ธ์› ์ˆ˜ : ");
		int input = sc.nextInt();
		
		// ๋ฐฐ์—ด ์„ ์–ธ ๋ฐ ํ• ๋‹น
		// ํ• ๋‹นํ•  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์ž…๋ ฅ๋ฐ›์€ ํฌ๊ธฐ๋งŒํผ(input)
		int[] score = new int[input];
		
		//System.out.println();
		
		int sum = 0;
		for(int i = 0; i < score.length; i++) {

			System.out.print( (i+1) + "๋ฒˆ ์ ์ˆ˜ ์ž…๋ ฅ : ");
			score[i] = sc.nextInt();

			sum += score[i];
		}
		
		// ์ตœ๊ณ /์ตœ์ €์  ๊ตฌํ•˜๊ธฐ
		int max = score[0];
		int min = score[0]; 
		
		// ์•„๋ž˜ for๋ฌธ์„ ์ด์šฉํ•ด์„œ score๋ฐฐ์—ด์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’๊ณผ max, min์„ ๋น„๊ต
		// score[i]๊ฐ’์ด max๋ณด๋‹ค ํฌ๋ฉด max์— ๋Œ€์ž…
		// score[i]๊ฐ’์ด min๋ณด๋‹ค ์ž‘์œผ๋ฉด min์— ๋Œ€์ž…
		for(int i =0; i < score.length; i++) {
			
			if(score[i] > max) {
				max = score[i];
			}
			
			if(score[i] < min) {
				min = score[i];
			}
			
		}
		
		System.out.printf("ํ•ฉ๊ณ„ : %d\n", sum);
		System.out.printf("ํ‰๊ท  : %.2f\n", (double) sum/score.length);
		System.out.printf("์ตœ๊ณ ์  : %d\n", max);
		System.out.printf("์ตœ์ €์  : %d\n", min);
		
	}
    
    public void ex6() {
		// ์ ์‹ฌ๋ฉ”๋‰ด ๋ฝ‘๊ธฐ ํ”„๋กœ๊ทธ๋žจ
		
		String[] arr = {"๊น€๋ฐฅ", "์„œ๋ธŒ์›จ์ด", "ํ–„๋ฒ„๊ฑฐ", "ํŒŒ์Šคํƒ€"};
		
		System.out.println("์˜ค๋Š˜ ์ ์‹ฌ ๋ฉ”๋‰ด : " + arr[(int)Math.random() * 5]);
		
		
	}
	
	// ์˜ˆ์ œ
	public void ex7() {
		// ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ๊ฒ€์ƒ‰
		
		// ์ž…๋ ฅ๋ฐ›์€ ์ •์ˆ˜๊ฐ€ ๋ฐฐ์—ด์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธ
		// ๋งŒ์•ฝ ์žˆ๋‹ค๋ฉด ๋ช‡๋ฒˆ ์ธ๋ฑ์Šค์— ์กด์žฌํ•˜๋Š”์ง€ ์ถœ๋ ฅ
		
		int[] arr = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
		
		System.out.print("์ •์ˆ˜ ์ž…๋ ฅ : ");
		int input = sc.nextInt();
		
		// ์‹ ํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ์œ„ํ•œ ๋ณ€์ˆ˜ > flag(false / true ๋ณ€์ˆ˜)
		
		boolean flag = false; // ๊ฒ€์‚ฌ ์ „์—๋Š” ์—†๋‹ค๊ณ  ๊ฐ€์ •
		
		for(int i = 0; i < arr.length; i++) {
			
			if(arr[i] == input) {
				System.out.println(i + "๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์กด์žฌ");
				flag = true; // ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์žˆ์œผ๋ฏ€๋กœ true๋กœ ๋ณ€๊ฒฝ
			}
		}

		// flag ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌ
		if(!flag){ // flag == false
			System.out.println("์กด์žฌํ•˜์ง€ ์•Š์Œ");
		}
		
	}
	
	// ์˜ˆ์ œ
	public void ex8() {
		// ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’๊ณผ ์ผ์น˜ ๊ฐ’์ด ์žˆ์œผ๋ฉด ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ ์ถœ๋ ฅ
		// ์กด์žฌํ•˜์ง€์•Š์œผ๋ฉด "์กด์žฌํ•˜์ง€ ์•Š์Œ" ์ถœ๋ ฅ
		
		String[] arr = {"์‚ฌ๊ณผ", "๋”ธ๊ธฐ", "๋ฐ”๋‚˜๋‚˜", "ํ‚ค์œ„", "๋ฉœ๋ก ", "์•„๋ณด์นด๋„"};
		
		System.out.print("๊ณผ์ผ ์ž…๋ ฅ : ");
		String input = sc.next();
		
		boolean flag = false;
		
		for(int i = 0; i < arr.length; i++) {
			
			if(arr[i].equals(input)) { //String ๋น„๊ต์‹œ equals ์‚ฌ์šฉํ•ด์•ผํ•จ
				System.out.println(i + "๋ฒˆ์งธ ์ธ๋ฑ์Šค์— ์กด์žฌ");
				flag = true;
			}
		}
		
		if(!flag) {
			System.out.println("์กด์žฌํ•˜์ง€ ์•Š์Œ");
		}
	}
	
	// ์˜ˆ์ œ
	public void ex9() {
		// ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ํ•œ ๊ธ€์ž์”ฉ ์ž˜๋ผ๋‚ด์–ด char๋ฐฐ์—ด์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ
		// ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ char๋ฐฐ์—ด์— ๋ช‡๊ฐœ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
		// ๋‹จ, ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ์—†์„ ๊ฒฝ์šฐ "์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." ์ถœ๋ ฅ
		
		// [์•„๋ž˜ ์‚ฌ์šฉํ•˜๊ธฐ]
		// 1) ๋ฐฐ์—ด ๊ฒ€์ƒ‰
		// 2) String.length() : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด
		// 		์˜ˆ : "Hello".length() -> 5
		
		// 3) String.charAt(index) : ๋ฌธ์ž์—ด์—์„œ ํŠน์ • index์— ์œ„์น˜ํ•œ ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ์–ป์–ด์˜ด
		//		์˜ˆ : "Hello".charAt(1); -> e
		
		// 4) count ์ˆซ์ž์„ธ๊ธฐ
		
		// ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„ ํ•œ ๊ธ€์ž์”ฉ ์ž˜๋ผ๋‚ด์–ด char๋ฐฐ์—ด์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ
		System.out.print("๋ฌธ์ž์—ด ์ž…๋ ฅ : ");
		String input = sc.nextLine(); // ํ•œ์ค„(๋„์–ด์“ฐ๊ธฐ ํฌํ•จ) ์ž…๋ ฅ๋ฐ›๊ธฐ
		
		char[] arr = new char[input.length()];
		
		for(int i =0; i < arr.length; i++) {
			arr[i] = input.charAt(i);
			// arr[i]์— ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด ์ค‘ i๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๋Œ€์ž…
		}
		
		// ์ค‘๊ฐ„ํ™•์ธ
		//System.out.println(Arrays.toString(arr));
		
		// ๋ฌธ์ž ํ•˜๋‚˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ char๋ฐฐ์—ด์— ๋ช‡๊ฐœ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
		// ๋‹จ, ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ์—†์„ ๊ฒฝ์šฐ "์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." ์ถœ๋ ฅ
		
		System.out.print("๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž ์ž…๋ ฅ: ");
		char ch = sc.next().charAt(0);
		
		int count = 0; //๊ฐ™์€๊ธ€์ž ๊ฐฏ์ˆ˜๋ฅผ ์„ธ๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜
		
		for (int i =0; i < arr.length; i++) {
			
			if(arr[i] == ch) {
				count ++;
			}
		}
				
		if(count == 0) {
			System.out.println("์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
		}else {
			System.out.println( count + "๊ฐœ ์žˆ์Œ");
		}
	}

2. ๋ฐฐ์—ด ๋ณต์‚ฌ

- ์–•์€๋ณต์‚ฌ

: ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์˜ ๋ฐฐ์—ด(๋˜๋Š” ๊ฐ์ฒด)์„ ์ฐธ์กฐํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋งŒ๋“œ๋Š” ๋ณต์‚ฌ ๋ฐฉ๋ฒ•

: ๋ณต์‚ฌ ๋ฐฉ๋ฒ•
int[] arr1 = new int[4]; // arr1 ์„ ์–ธ/ํ• ๋‹น
int[] arr2 = arr1; // ๋ณต์‚ฌ

public void shallowCopy() {
		
		int[] arr = {1, 2, 3, 4, 5};
		
		int[] copyArr = arr; // ์ฃผ์†Œ๋งŒ ๋ณต์‚ฌ
		
		System.out.println("๋ณ€๊ฒฝ ์ „");
		System.out.println("arr : " + Arrays.toString(arr));
		System.out.println("copyArr : " + Arrays.toString(copyArr));
		
		// ๋ฐฐ์—ด ๊ฐ’ ๋ณ€๊ฒฝ
		copyArr[2] = 999;
		System.out.println("๋ณ€๊ฒฝ ํ›„");
		System.out.println("copyArr : " + Arrays.toString(copyArr));		
	}

- ๊นŠ์€๋ณต์‚ฌ

: ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ์กด ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ

: ๋ณต์‚ฌ ๋ฐฉ๋ฒ• 3๊ฐ€์ง€
1. for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜์”ฉ ์ง์ ‘ ๋ณต์‚ฌํ•˜๊ธฐ
2. System. ํด๋ž˜์Šค์— arraycopy() ๋ฉ”์†Œ๋“œ ์ด์šฉํ•˜๊ธฐ
3. Arrayํด๋ž˜์Šค์— copyOf() ๋ฉ”์†Œ๋“œ ์ด์šฉํ•˜๊ธฐ

public void deepCopy() {
		
		int[] arr = {1, 2, 3, 4, 5};
		
		// 1. for๋ฌธ์„์ด์šฉํ•œ ๊นŠ์€ ๋ณต์‚ฌ
		
		int[] copyArr1 = new int[arr.length]; // 5์นธ์งœ๋ฆฌ ๋ฐฐ์—ด ์ƒ์„ฑ
		for(int i = 0; i < arr.length; i++) {
			copyArr1[i] = arr[i];
		}

		// 2. System.arraycopy(์›๋ณธ๋ฐฐ์—ด, ๋ณต์‚ฌ ์‹œ์ž‘ํ•  ์›๋ณธ์˜ ์ธ๋ฑ์Šค๋ฒˆํ˜ธ, 
		//						๋ณต์‚ฌ๋ฐฐ์—ด, ๋ณต์‚ฌํ•  ๋ฐฐ์—ด์˜ ์‚ฝ์ž… ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ฒˆํ˜ธ,
		//						๋ณต์‚ฌํ•  ๊ธธ์ด);
		
		int[] copyArr2 = new int[arr.length];
		System.arraycopy(arr, 0, copyArr2, 0, arr.length);
				
		// 3. ๋ณต์‚ฌํ•  ๋ฐฐ์—ด ์ฐธ์กฐ๋ณ€์ˆ˜ = Arrays.copyOf(์›๋ณธ๋ฐฐ์—ด, ๋ณต์‚ฌํ• ๊ธธ์ด);
		
		int[] copyArr3 = Arrays.copyOf(arr, arr.length);
		
		
		// ๊ฐ’ ๋ณ€๊ฒฝ		
		copyArr1[4] = 0;
		copyArr2[4] = 999;
		copyArr3[4] = 4000;

		
		System.out.println("arr : " + Arrays.toString(arr));
		System.out.println("copyArr1 : " + Arrays.toString(copyArr1));
		System.out.println("copyArr2 : " + Arrays.toString(copyArr2));
		System.out.println("copyArr3 : " + Arrays.toString(copyArr3));
		
	}

- ๋ฐฐ์—ด ๋ณต์‚ฌ ์˜ˆ์ œ

// ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ + ์ •๋ ฌ
	public void createLottoNumber() {
		
		// 1. 1~45 ์‚ฌ์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๋‚œ์ˆ˜ 6๊ฐœ ์ƒ์„ฑ
		// 2. ์ƒ์„ฑ๋œ ๋‚œ์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

		// ์ •์ˆ˜ 6๊ฐœ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด ์„ ์–ธ/ํ• ๋‹น
		int[] lotto = new int[6];
		
		// ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ˆœ์ฐจ ์ ‘๊ทผํ•˜๋Š” for๋ฌธ ์ž‘์„ฑ
		
		for(int i = 0; i < lotto.length; i++) {
			// ์ €์žฅํ•  1~45์‚ฌ์ด ๋‚œ์ˆ˜ ๋งŒ๋“ค๊ธฐ
			int random = (int)(Math.random() * 45 + 1);
			// ์ƒ์„ฑ๋œ ๋‚œ์ˆ˜๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด ์š”์†Œ์— ๋Œ€์ž…
			lotto[i] = random;
			
			// ์ค‘๋ณต ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ for๋ฌธ ์ž‘์„ฑ
			for(int x = 0; x < i; x++) {
				
				// ํ˜„์žฌ ์ƒ์„ฑ๋œ ๋‚œ์ˆ˜์™€ ๊ฐ™์€ ์ˆ˜๊ฐ€ ์•ž์ชฝ ์š”์†Œ์— ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
				if(random == lotto[x]) {
					i--;
					// ์ค‘๋ณต๋œ ์ˆ˜๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉด i๋ฅผ 1 ์ค„์—ฌ์„œ ๋‚œ์ˆ˜๋ฅผ 1๊ฐœ ๋” ๋งŒ๋“ค๋„๋ก ๋ช…๋ น
					break;
					// ์•ž์ชฝ์—์„œ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด
					// ๋‚จ์€ ๊ฐ’์„ ๋น„๊ตํ•  ํ•„์š” ์—†๋‹ค.
					// ->ํšจ์œจ ํ–ฅ์ƒ์„ ์œ„ํ•ด์„œ ๊ฒ€์‚ฌํ•˜๋Š” for๋ฌธ์„ ์ข…๋ฃŒ
				}
			}
		}
		
		// ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
		// -> ์„ ํƒ, ์‚ฝ์ž…, ๋ฒ„๋ธ”, ํ€ต ๋“ฑ๋“ฑ
		// -> ์ž๋ฐ”๊ฐ€ ์ •๋ ฌ ๋ฐฉ๋ฒ•์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Œ
		//		Arrays.sort(๋ฐฐ์—ด๋ช…); -> ๋ฐฐ์—ด ๋‚ด ๊ฐ’๋“ค์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋จ

		Arrays.sort(lotto);
		
		System.out.println(Arrays.toString(lotto));			
	}

โœŒ๐Ÿป๋Š๋‚€์ 

  • ๋ฐฐ์—ด... ๋Œ€ํ™˜์žฅ
  • ์˜ˆ์ œ๋“ค ๊ผญ ๋‹ค์‹œ ํ’€์–ด๋ณด๊ธฐ!

0๊ฐœ์˜ ๋Œ“๊ธ€