๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programming/Java

[Java] ๋ฐฐ์—ด

by AI_Wooah 2022. 3. 7.

๐Ÿ’ก๋ฐฐ์—ด์ด๋ž€?

๋ณ€์ˆ˜๋Š” ํ•˜๋‚˜์˜ ํƒ€์ž…์„ ํ•œ ๊ฐœ๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•(type)์ด๋‹ค.

๋ฐฐ์—ด์€ ๋™์ผํ•œ ์ž๋ฃŒํ˜•์„ ์—ฌ๋Ÿฌ๊ฐœ ๋ฌถ์–ด๋†“์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋ฐฐ์—ด์€ ํ•œ๊บผ๋ฒˆ์— ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐฐ์—ด์€ ์ €์žฅ๋œ ๊ฐ’๋งˆ๋‹ค ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ ์„ค์ •๋œ๋‹ค. ์ž๋ฆฌ๊ฐ’์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค.

๋ฐฐ์—ด์˜ ์‚ฌ์šฉ

  • ๋ฐฐ์—ด์˜ ์„ ์–ธ๋ฐฐ์—ด์„ ์„ ์–ธํ•  ๋•Œ ์ž๋ฃŒํ˜•์„ ์ •ํ•˜๊ณ  ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค.์ž๋ฃŒํ˜•๋ณ„ ๊ธฐ๋ณธ๊ฐ’
  • int -> 0 char -> โ‚ฉu0000 double -> 0.0 boolean -> false reference ->
  • ์ž๋ฃŒํ˜•[] ๋ณ€์ˆ˜๋ช…; <-- ๋” ๊ถŒ์žฅ๋˜๋Š” ์„ ์–ธ ๋ฐฉ์‹์ด๋‹ค. ex) int[] arr; // ๊ธฐ๋ณธ๊ฐ’์€ 0์œผ๋กœ ์ฑ„์›Œ์ ธ ์žˆ๋‹ค. ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜๋ช…[]; ex) int arr[];
  • Stack ์˜์—ญ์— ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ
  • ๋ฐฐ์—ด์˜ ํ• ๋‹น
    ์ž๋ฃŒํ˜•[] ๋ณ€์ˆ˜์ด๋ฆ„ = new ์ž๋ฃŒํ˜•[๋ฐฐ์—ดํฌ๊ธฐ];
    ex) int[] arr = new int[์ €์žฅ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜];
    
    ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜์ด๋ฆ„[] = new ์ž๋ฃŒํ˜•[๋ฐฐ์—ดํฌ๊ธฐ];
    ex) int arr[] = new int[์ €์žฅ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜];
    
    • new → heap์— ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ  ๋ฐœ์ƒํ•œ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋กœ ํ• ๋‹น์—ฐ์‚ฐ์ž, ์ฐธ์กฐ์ž๋ฃŒํ˜• ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.
    ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋ฉด Stack ์˜์—ญ์— ์ž๋ฃŒํ˜• ์ง€์ •๊ณผ ๋ณ€์ˆ˜๋ช… ์„ค์ •์„ ํ†ตํ•ด ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด ๊ทธ ์•ˆ์— ์ฃผ์†Ÿ๊ฐ’(๋ฒˆ์ง€์ˆ˜)์„ ์ €์žฅํ•œ๋‹ค. ๊ทธ ์ฃผ์†Ÿ๊ฐ’์€ heap ์˜์—ญ์—์„œ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.
  • heap ์˜์—ญ์— ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜๋ฉด ํ•œ ์นธ๋‹น 4byte์˜ ๊ณต๊ฐ„์ด ์ค„์ง€์–ด ์ƒ๊ธฐ๊ฒŒ ๋˜๋Š”๋ฐ, ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ฝ์–ด ์˜ฌ ๋•Œ ํŒŒ๋ž€ ์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ ์ž๋ฆฌ๊ฐ’์„ ํ†ตํ•ด ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค. ๊ฐ ์นธ์˜ ๋‚ด์šฉ์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์ž๋ฆฌ๊ฐ’์— ๋”ฐ๋ผ 4*n(์ž๋ฆฌ๊ฐ’) ๋งŒํผ์˜ byte๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋’ค์— ์˜ค๋Š” ๋‚ด์šฉ๋ถ€ํ„ฐ ์‹คํ–‰ํ•œ๋‹ค.
  • heap ์˜์—ญ์— ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ.
  • for๋ฌธ์„ ํ†ตํ•ด ๋ฐฐ์—ด์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•
  • for(int i = 0; i < 4; i++) { System.out.println(arr[i]); } // for(int i = 0; i < arr.length(); i++) { System.out.println(arr[i]); }
  • ๋ฐฐ์—ด์„ ์ด์šฉํ•ด ๋ฐฐ์—ด ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ๋”ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • int[] arr = new int[5]; arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; arr[4] = 50; for(int i = 0; i < 5; i++) { sum += arr[i]; }
  • ๋ฐฐ์—ด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
    • ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋Š” ํ• ๋‹น๋œ ์ฃผ์†Ÿ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜.
    ๋ฐœ์ƒํ•œ ์ฃผ์†Œ๋ฅผ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  ์ด๊ฒƒ์„ ์ฐธ์กฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐ์ž๋ฃŒํ˜•์ด๋ผ๊ณ  ํ•œ๋‹ค.
    //iarr = new int[];	//ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š์•„์„œ ์—๋Ÿฌ ๋ฐœ์ƒ
    
    iarr = new int[5];
    
    carr = new char[10];
    
    heap ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณ€์ˆ˜๋ฅผ์ƒ์„ฑํ•˜์—ฌ ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ์˜์—ญ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—
    System.out.println("iarr : " + iarr); //๊ฐ’์€ 16์ง„์ˆ˜๋กœ ๋‚˜์˜จ๋‹ค.
    System.out.println("carr : " + carr);
    
    ํ•ด์‰ฌ์ฝ”๋“œ๋Š” ์‹ค์ œ ์ฃผ์†Œ๊ฐ’์ด ์•„๋‹ˆ๊ณ , ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ key ์—ญํ• ์„ ํ•œ๋‹ค.
    System.**out**.println("iarr์˜ hashcode : " + iarr.hashCode());
    System.**out**.println("carr์˜ hashcode : " + carr.hashCode());
    
    ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํ•„๋“œ(๋ฉ”์†Œ๋“œ ๋ฐ”๊นฅ์— ์„ ์–ธํ•˜๋Š” ์ผ์ข…์˜ ๋ณ€์ˆ˜ = ์ „์—ญ๋ณ€์ˆ˜)๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.
    System.out.println("iarr์˜ ๊ธธ์ด : " + iarr.length);
    System.out.println("carr์˜ ๊ธธ์ด : " + carr.length);
    Scanner sc = new Scanner(System.in);
    System.out.println("์ƒˆ๋กœ ํ• ๋‹นํ•  ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” : ");
    int size = sc.nextInt();
    double[] darr = *ew double[size];
    System.out.println("darr์˜ hashcodea : " + darr.hashCode());
    System.out.println("darr์˜ ๊ธธ์ด : " + darr.length);
    
    ๋ฐฐ์—ด์€ ํ•œ๋ฒˆ ์„ ์–ธํ•˜๋ฉด ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.๋ฐฐ์—ด์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด ์•„๋‹Œ, ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๊ทธ ์ฃผ์†Œ๊ฐ’์„ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜์— ๋ฎ์–ด ์“ด ๊ฒƒ์ด๋‹ค.new๋ฅผ ํ†ตํ•ด heap ์˜์—ญ์— ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•ด์ฃผ๋ฉด ๊ทธ ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
    System.out.println("์ˆ˜์ • ํ›„ darr์˜ hashcodr : " + darr.hashCode());
    System.out.println("์ˆ˜์ • ํ›„ darr์˜ ๊ธธ์ด : " + darr.length);
    
    ํ•œ ๋ฒˆ ํ• ๋‹น๋œ ๋ฐฐ์—ด์€ ์ง€์šธ ์ˆ˜ ์—†๋‹ค.์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ๋‚œ ํ›„ heap์˜ old ์˜์—ญ์œผ๋กœ ์ด๋™ํ•˜์—ฌ GC(๊ฐ€๋น„์ง€์ฝœ๋ ‰ํ„ฐ)๊ฐ€ ์‚ญ์ œ์‹œํ‚จ๋‹ค.
    darr = null;
    
    System.out.println("์ˆ˜์ • ํ›„ darr์˜ ๊ธธ์ด : " + darr.length);
    
    ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ฐ’์„ ์ง€์ •ํ•˜๊ณ  ๋‚˜๋ฉด ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.๋ฐฐ์—ด์„ ํ• ๋‹น ํ•จ๊ณผ ๋™์‹œ์— ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.//heap์˜์—ญ์€ ๊ฐ’์ด ์—†๋Š” ๊ณต๊ฐ„์ด ์กด์žฌํ•  ์ˆ˜ ์—†๋‹ค.// System.out.println(iarr[0]);// System.out.println(iarr[2]);// System.out.println(iarr[4]);System.out.println("iarr[" + i + "]์˜ ๊ฐ’ : " + iarr[i]);//jvm์ด ์ •ํ•œ ๊ธฐ๋ณธ๊ฐ’ ์™ธ์˜ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ๋ธ”๋Ÿญ์„ ์ด์šฉํ•œ๋‹ค.//int[] iarr2 = {11, 22, 33, 44, 55};System.out.println("iarr์˜ ๊ธธ์ด : " + iarr.length);
  • String[] sarr = {"apple", "banana", "grape", "orange"};
  • int[] iarr2 = new int[] {11, 22, 33, 44, 55};
  • //๋ธ”๋Ÿญ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” new๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ๊ฐ’์˜ ๊ฐฏ์ˆ˜๋งŒํผ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์„ค์ •๋œ๋‹ค.
  • }
  • for(int i = 0; i < iarr.length; i++) {
  • // System.out.println(iarr[3]);
  • // System.out.println(iarr[1]);
  • int[] iarr = new int[5];
  • //๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ  ํ• ๋‹น์„ ํ•˜๋ฉด jvm์ด ์ง€์ •ํ•œ ๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์ด ์ดˆ๊ธฐํ™”๋œ๋‹ค.
  • ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™”
  • ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ๋Š” ์ด์ „์— ์ฐธ์กฐํ•˜๋˜ ๋ฐฐ์—ด์„ ๋‹ค์‹œ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋‹ค๋งŒ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋ฅผ null๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋” ์ด์ƒ ์ฐธ์กฐํ•  ์ฃผ์†Œ๊ฐ€ ์—†๊ฒŒ ๋œ ๋ฐฐ์—ด์€
  • ์•ž์— ์„ ์–ธํ•œ ๋ฐฐ์—ด ์œ„์— ๋ฎ์–ด์“ฐ๊ฒŒ ๋˜๋ฉฐ ์•ž์— ์„ ์–ธํ•œ ๋ฐฐ์—ด์€ old์˜์—ญ์œผ๋กœ ์ด๊ด€๋˜์–ด ๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์ง€์›Œ์ง„๋‹ค.
  • darr = **new** **double**[30];
  • ํ•œ๋ฒˆ ์ง€์ •ํ•œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•œ๋‹ค.
  • ์ฐธ๊ณ ๋กœ String์˜ ๋ฌธ์ž์—ด ๊ธธ์ด๋Š” ๋ฉ”์†Œ๋“œ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— length()๋กœ ์‚ฌ์šฉํ•œ๋‹ค. array๋Š” ()๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ž๋ฐ”์—์„œ๋Š” ์ง์ ‘์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์ •ํ™•ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ฃผ์†Œ๊ฐ’์ด๋ผ๊ณ  ์ดํ•ดํ•ด๋„ ์ข‹๋‹ค.
  • ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ณต๊ฐ„์˜ ์ฃผ์†Œ๋งŒ ๊ฐ€์ง€๊ณ  ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฐ์—ด์„ ํ• ๋‹นํ•  ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ์„ ์–ธํ•œ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜์— ๋ฐฐ์—ด์„ ํ• ๋‹นํ•˜์—ฌ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

๋ฐฐ์—ด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๋ณต์‚ฌ

๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’๋งŒ ๊ฐ€์ ธ์™€ ์ฐธ์กฐํ˜•๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ณ  ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๋‘ ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ

public void MethodA() {
	int[] arr = {1, 2, 3}; //1, 2, 3์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์–ด์žˆ๋Š” ๋ฐฐ์—ด
	methodB(arr); //๋ฉ”์†Œ๋“œ B๋ฅผ ํ˜ธ์ถœํ•จ
	System.out.println(arr[1]);
}

public void methodB(int[] arr) { //์œ„์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐฐ์—ด์ด๋ž‘ ๊ฐ™์€ ๋ฐฐ์—ด
	arr[1] = 9; //9๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ๋ฐฐ์—ด ์•ˆ์— 9๊ฐ€ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ methodA๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด 9๊ฐ€ ๋‚˜์˜ด
}

๊ฐ™์€ ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–•์€๋ณต์‚ฌ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•œ ๋ฐฐ์—ด์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์›๋ณธ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ณ€ํ•ด์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€๊ฒฝ ํ›„ ์›๋ž˜ ๋ณ€์ˆ˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๋ณ€๊ฒฝ๋œ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

public void MethodA() {
	int age = 20;
	methodB(age); //methodB์— ๊ฐ’์„ ๋„ฃ์–ด์คŒ
}

public void MethodB(int age) { //๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ’์„ ๋ฐ›์•„์˜ด
	System.out.println(age);
}

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

๋ฐฐ์—ด์ด ๊ฐ€์ง„ ๊ฐ’์„ ๋ณต์‚ฌ

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

์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„ ๋ณต์‚ฌ๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

๋ฐฐ์—ด์˜ ์ •๋ ฌ

๋ณด๊ธฐ ํŽธํ•˜๋ ค๊ณ 

๊ฐ’์— ๊ธฐ์ค€์„ ์„ธ์›Œ ์ฐพ์œผ๋ ค๋Š” ๊ฐ’์ด ์–ด๋””์ฏค ์œ„์น˜ ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•˜์—ฌ ์•ž์—์„œ ๋ถ€ํ„ฐ ์Šค์บ” ํ•˜๋Š”๊ฒŒ ๋น ๋ฅธ์ง€ ๋’ค์—์„œ๋ถ€ํ„ฐ ์Šค์บ”ํ•˜๋Š”๊ฒŒ ๋น ๋ฅธ์ง€ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด.

ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ ์ • ์‹œ์ผœ ๋†“๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์•ž์— ์žˆ๋Š” ๊ฐ’์ด๋ž‘ ํฐ์ง€ ์ž‘์€์ง€ ๋น„๊ตํ•˜์—ฌ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ˆœ์„œ๋ฅผ ๋งค๊ธด๋‹ค.

  • ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋‘ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” ๋‚˜ ์ž์‹  ์ „๊นŒ์ง€์˜ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค
    for(int i = 1; i < arr.length; i++) { //๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ’
    	for(int j = 0; j < i; i++) { //๊ธฐ์ค€ ์•ž์—์„œ ๊ธฐ์ค€๊ณผ ๋น„๊ต๋˜๋Š” ๊ฐ’
    		if(arr[i] < arr[j]) {
    			๋ฐ”๊พผ๋‹ค
    		}
    	}
    }
    
  • ์ธ๋ฑ์Šค๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋™์•ˆ ๋‚˜ ์ž์‹  ์ „๊นŒ์ง€์˜ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • ๋งจ ์ฒ˜์Œ ์ธ๋ฑ์Šค๋Š” ๋น„๊ตํ•  ๋Œ€์ƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฑด๋„ˆ๋›ฐ๊ณ  1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.
  • ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
  • for(int i = 1; i < arr.length; i++) { //๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ’ for(int j = 0; j < i; i++) { if(arr[i] > arr[j]) { ๋ฐ”๊พผ๋‹ค } } }
  • temp ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด a์™€ b์˜ ๊ฐ’์„ ์„œ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ฐฉ๋ฒ•.
  • int a = 20; int b = 30; int temp = a; a = b; b = temp;
  • swap
  • int temp; temp = arr[0]; arr[0] = arr[1]; arr[1] = temp
  • ์„ ํƒ์ •๋ ฌ์†Œ๊ทœ๋ชจ๋กœ ์ •๋ ฌํ•  ๋•Œ ์•ž์—์„œ๋ถ€ํ„ฐ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„ ์ฑ„์›Œ๋„ฃ๋Š” ๋ฐฉ์‹
  • ๋‹จ, 100๊ฐœ ๋„˜์–ด๊ฐ€๋ฉด ํ›จ์”ฌ ๋Š๋ ค์ง
  • ๋ฒ„๋ธ”์ •๋ ฌ์ด๋ฏธ ์ •๋ ฌ ๋ผ์žˆ๋Š” ๊ฒƒ์„ ๋‘๊ฐœ์”ฉ ๋น„๊ตํ•ด์„œ ๋น ๋ฅด๊ฒŒ ๋‹ค์‹œ ์ •๋ ฌํ• ๊ฒŒ ์žˆ๋‚˜ ํ™•์ธ๋งŒ ํ•˜๊ณ  ์ •๋ ฌ์€ ๊ฑฐ์˜ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๋•Œ
  • ๋‹จ, ์—ญ์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ ์ œ์ผ ๋Š๋ฆผ
  • ์‚ฝ์ž…์ •๋ ฌ
  • ์ˆœ์ฐจ์ •๋ ฌ(Sequence sort)
    public void testArraySort2() {
    
    		//์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    		int[] iarr = {2, 5, 4, 6, 1, 3};
    		
    		//์ธ๋ฑ์Šค๊ฐ€ ํ•œ ๊ฐœ์”ฉ ์ฆ๊ฐ€๋˜๋Š” ๋ฐ˜๋ณต๋ฌธ
    		for(int i = 1; i < iarr.length; i++) {
    			
    			//์ฒ˜์Œ๋ถ€ํ„ฐ ํ•ด๋‹น ์ธ๋ฑ์Šค ์ „๊นŒ์ง€ ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ
    			for(int j = 0; j < i; j++) {
    				
    				//๊ณ ์ •๋œ ์ธ๋ฑ์Šค์™€ ๋น„๊ตํ•˜๋ ค๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์–ด๋Š ๊ฐ’์ด ํฐ์ง€๋ฅผ ๋น„๊ต
    				if(iarr[i] < iarr[j]) {
    					//๋น„๊ตํ•˜๋Š” ๊ฐ’์ด ํฐ ๊ฒฝ์šฐ ๋ฐ”๊พผ๋‹ค.
    					int temp;
    					temp = iarr[i];
    					iarr[i] = iarr[j];
    					iarr[j] = temp;
    				}
    			}
    		}
    		
    		for(int i = 0; i < iarr.length; i++) {
    			if(i < iarr.length - 1) {
    				System.out.print(iarr[i] + ", ");
    			} else {
    				System.out.print(iarr[i]);
    			}
    		}
    	}
    
    ์ˆœ์ฐจ ์ •๋ ฌ์ด๋ž€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ๊ธฐ๋ณธ์ด ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐฐ์—ด์˜ ์ฒ˜์Œ๊ณผ ๋์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์ฐจ์ˆœ๋Œ€๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋น„๊ตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์ข‹์ง€ ๋ชปํ•ด ์‹ค์ œ๋กœ๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ณ€์ˆ˜์˜ ๋‘ ๊ฐ’ ๋ณ€๊ฒฝํ•˜๊ธฐ
    ๊ทธ ๋นˆ ์ปต์˜ ์—ญํ• ์„ ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ณดํ†ต temp๋ผ๋Š” ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์„ ์–ธํ•ด์ค€๋‹ค.
    ๋‘ ์ปต์— ๋‹ด๊ธด ์Œ๋ฃŒ๋ฅผ ์„œ๋กœ์˜ ์ปต์— ๋ฐ”๊ฟ” ๋‹ด์œผ๋ ค๋ฉด ์Œ๋ฃŒ๋ฅผ ์ž ์‹œ ์˜ฎ๊ฒจ ๋‹ด์„ ๋นˆ ์ปต์ด ํ•˜๋‚˜ ํ•„์š”ํ•˜๋‹ค.

    public void testArraySort() {
    		
    		int num1 = 10;
    		int num2 = 20;
    		
    		System.out.println("num1 : " + num1);
    		System.out.println("num2 : " + num2);
    		
    		int temp;
    		
    		temp = num1;
    		num1 = num2;
    		num2 = temp;
    		
    		System.out.println("num1 : " + num1);
    		System.out.println("num2 : " + num2);
    		
    		
    		int[] arr = {2, 1, 3};
    		
    		int temp2;
    		
    		temp2 = arr[0];
    		arr[0] = arr[1];
    		arr[1] = temp2;
    				
    		for(int i = 0; i < arr.length; i++) {
    			System.out.println("arr[" + i + "] : " + arr[i]);
    		}
    		
    	}
๋ฐ˜์‘ํ˜•

'Programming > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ๋‹คํ˜•์„ฑ  (0) 2022.03.07
[Java] ์ƒ์†(Ingerit)  (0) 2022.03.07
[Java] ๋ฐ˜๋ณต๋ฌธ  (0) 2022.03.07
[Java] ์กฐ๊ฑด๋ฌธ  (0) 2022.03.07
[Java] java.lang.Math  (0) 2022.03.07

๋Œ“๊ธ€