[Java] OCAJP-4

12761 단어 JavaocajpJava

1.

2.

  • 배열의 복사
  1. 얕은 복사(Shallow Copy) :
    복사된 배열이나 원본배열이 변경될 때 서로 간의 값이 같이 변경
    위의 예제와 같은경우
배열1[] = 배열2[];

이런 경우에는 배열2의 주소를 배열1에 넣어서 같은 주소를 공유하게 되므로

이렇게 num2배열의 idx2값을 5로 변경하였음에도 num1배열의 값이 함께 바뀌어 idx2가 5로 출력되는것을 볼 수 있다.
때문에 얕은 복사는 두 배열을 똑같은 배열로 만들어버리는 복사인척하는 복사이다.

  1. 깊은 복사(Deep Copy) :
    복사된 배열이나 원본배열이 변경될 때 서로 간의 값은 바뀌지 않는다.

    이렇게 for문을 이용해서 배열 a의 값을 하나하나 b에 옮겨서 넣어주면
    배열 b에 a의 값을 받아넣을 수 있다.

    배열의 복사 이후에도 a배열과 b배열은 위와같이 따로 움직이는 것을 볼 수 있다.
    b배열의 idx2값을 7로 변경해도 a배열의 idx2값은 변함이 없다.
  • 하지만, 하나하나 for문을 이용해서 복사를 하기에는
    코드가 너무 길어진다는 생각을 지울 수 없어서
    배열에 관한 메서드도 확인해봤다.
  • Array.clone()
public class Array_Copy{
    public static void main(String[] args)  {
        int[] a = { 1, 2, 3, 4 };
        int[] b = a.clone();
    }
}
  • Arrays.copyOf()
import java.util.Arrays;

public class Array_Copy{
    public static void main(String[] args)  {
        int[] a = { 1, 2, 3, 4 };
        int[] b = Arrays.copyOf(a, a.length); // 배열 a를 처음부터 끝나는점까지 copyOf!
    }
}
  • Arrays.copyOfRange()
import java.util.Arrays;

public class Array_Copy{
    public static void main(String[] args)  {
        int[] a = { 1, 2, 3, 4 };
        int[] b = Arrays.copyOfRange(a, 1, 3);  
        // 배열 a를 idx1부터 idx3까지 copyOf! 
    }
}

  • System.arraycopy()
public class Array_Copy{
    public static void main(String[] args)  {
        int[] a = { 1, 2, 3, 4 };
        int[] b = new int[a.length];
        System.arraycopy(a, 0, b, 0, a.length);
        // 지정된 배열을 대상 배열의 지정된 위치에 복사
    }
}

3.

  • ArrayList<>
    사용은 java.util.ArrayList; 또는 java.util.*; 의 import가 필요하다.
  • ArrayList는 자바에서 제공되는 객체 배열이 구현된 클래스
  • 크기가 자유롭다.
  • 객체 배열을 사용하는데 필요한 여러 메서드들이 구현되어사용하는데 편의를 제공
  • <>부분에는 자료형이 들어간다. 생략이 가능하지만 생략할 경우 자료형변환이 필요할 수 있다. Object형으로 자료를 받기 때문이다.
  • .add() :
    ArrayList에 값을 넣는다.
  • .size :
    ArrayList의 크기를 알 수 있다.
    for문을 사용할때 유용하다.
  • .remove(idx) :
    해당 idx의 값을 삭제한다.
    .remove(null) 은 null 값을 삭제하고 ""을 통해서 해당하는 값을 찾아서 삭제할 수 있다.
  • .get(idx) :
System.out.println(points.get(2));

이런식으로 .get메서드를 잘 이용하면 원하는 idx의 값을 출력하거나 값을 변수로 저장할 수 있다.

  • .contains() :
    해당하는 값이 있는지 확인하고 true/false를 반환한다.
System.out.println(points.contains(1)); --> 콘솔출력: true
  • .indexOf();
System.out.println(points.indexOf(1)); ---> 1값이 있는 idx를 출력한다.

4.

좋은 웹페이지 즐겨찾기