[Java] OCAJP-4
1.
2.
- 배열의 복사
- 얕은 복사(Shallow Copy) :
복사된 배열이나 원본배열이 변경될 때 서로 간의 값이 같이 변경
위의 예제와 같은경우
배열1[] = 배열2[];
이런 경우에는 배열2의 주소를 배열1에 넣어서 같은 주소를 공유하게 되므로
이렇게 num2배열의 idx2값을 5로 변경하였음에도 num1배열의 값이 함께 바뀌어 idx2가 5로 출력되는것을 볼 수 있다.
때문에 얕은 복사는 두 배열을 똑같은 배열로 만들어버리는 복사인척하는 복사이다.
- 깊은 복사(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.
Author And Source
이 문제에 관하여([Java] OCAJP-4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yseonjin/Java-OCAJP-4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)