🏁 Programming/Java

[Java] λ°°μ—΄ 볡사 copyOf , copyOfRange

Dhey 2023. 3. 31. 16:54
λ°˜μ‘ν˜•

 

μžλ°”μ—μ„œ 배열을 λ³΅μ‚¬ν•˜λŠ” 방법은 μ—¬λŸ¬κ°€μ§€κ°€ μžˆλ‹€.

for λ‚˜  while 같은 λ°˜λ³΅λ¬Έμ„ ν™œμš©ν•˜μ—¬ 직접 값을 ν•˜λ‚˜μ”© λ„£μ–΄μ£ΌλŠ” 방법도 있고, Arrays의 λ©”μ†Œλ“œλ₯Ό ν™œμš©ν•˜λŠ” 방법도 μžˆλ‹€.

 

 

 

μ‚¬μš©λ°©λ²•μ€ 맀우 κ°„λ‹¨ν•˜λ‹€.

 

 

 

copyOf()

 

 

copyOf λ©”μ†Œλ“œλŠ”

Arrays.copyOf( 볡사할 λ°°μ—΄, 볡사할 λ°°μ—΄μ˜ 크기 ); 둜 μ‚¬μš©ν•˜λ©΄ λœλ‹€.

 

 

μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ λ°”λ‘œ μ½”λ“œλ₯Ό 보자.

import java.util.Arrays;

public class copyOfTest {
    public static void main(String[] args) {
        
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr2 = Arrays.copyOf(arr1, arr1.length);

        for(int i=0; i<arr2.length; i++){
            System.out.print(arr2[i] + " ");
        }
    }
}

arr2λ₯Ό μ„ μ–Έν•  λ•Œ,

 

- 볡사할 λ°°μ—΄: arr1

- 볡사할 λ°°μ—΄μ˜ 크기: arr1.length    -> λ„£κ³ μžν•˜λŠ” 총 λ²”μœ„

 

λ₯Ό λ„£μ–΄μ£Όμ—ˆλ‹€.

 

 

이후 좜λ ₯해보면 arr1κ³Ό λ˜‘κ°™μ€ 데이터가 λ“€μ–΄κ°„ 것을 확인할 수 μžˆλ‹€.

 

 


 

copyOfRange( )

 

 

copyOfRange λ©”μ†Œλ“œλŠ” "μžμ‹ μ΄ λ³΅μ‚¬ν•˜κ³ μž ν•˜λŠ” λ°°μ—΄μ˜ λ²”μœ„λ₯Ό μ§€μ •"ν•΄μ„œ 볡사할 수 μžˆλ‹€.

 

 

이 λ˜ν•œ μ‚¬μš©λ²•μ΄ κ°„λ‹¨ν•˜λ‹€.

import java.util.Arrays;

public class copyOfRangeTest {
    public static void main(String[] args) {
        
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr3 = Arrays.copyOfRange(arr1, 1, 3);

        for(int i=0; i<arr3.length; i++){
            System.out.print( arr3[i] + " ");
        }
    }
}

Arrays.copyOfRange(볡사할 λ°°μ—΄, μ‹œμž‘ 인덱슀, 끝 인덱슀); 의 ν˜•νƒœλ‘œ μ‚¬μš©ν•˜λ©΄ λœλ‹€.

 

β€Ό μ£Όμ˜ν•  점은 λ³΅μ‚¬λ˜λŠ” 배열은 "μ‹œμž‘ 인덱슀 ~ 끝 인덱슀-1" κΉŒμ§€ λ³΅μ‚¬λœλ‹€λŠ” 점이닀.

 

- 볡사할 λ°°μ—΄: arr1

- μ‹œμž‘ 인덱슀: 1

- 끝 인덱슀: 3

 

 

 

λ”°λΌμ„œ μœ„ μ½”λ“œλ₯Ό 좜λ ₯해보면, index 1~2(3-1)κΉŒμ§€ 2개의 값이 λ“€μ–΄κ°„ 것을 확인할 수 μžˆλ‹€.

 

 

 

 

πŸ’₯ λ³΅μ‚¬λ°›λŠ” 배열이 λ³΅μ‚¬ν•˜λŠ” 배열보닀 λ²”μœ„κ°€ 크닀면?

import java.util.Arrays;

public class defaultTest {
    public static void main(String[] args) {
        
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr3 = Arrays.copyOfRange(arr1, 1, 6);

        for(int i=0; i<arr3.length; i++){
            System.out.print( arr3[i] + " ");
        }
    }
}

arr1의 λ§ˆμ§€λ§‰ μΈλ±μŠ€λŠ” 4인데 arr3이 5(6-1)번째의 μΈλ±μŠ€κΉŒμ§€ μ§€μ •ν•œλ‹€λ©΄ μ΄ˆκ³Όν•˜λŠ” λ²”μœ„μ˜ λ°°μ—΄ 값은 default값인 0으둜 μ±„μ›Œμ§€κ²Œ λœλ‹€.

 

 

λ”°λΌμ„œ μœ„ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³ΌλŠ” μ•„λž˜μ™€ 같이 좜λ ₯된 것을 λ³Ό 수 μžˆλ‹€.

 

 

λ°˜μ‘ν˜•