안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
예를 들어 String 은 클래스 타입이므로 String[]배열은 String 객체의 주소를 가지고 있습니다.
즉 String 객체를 참조합니다.
String[] 배열 항목 간의 문자열을 비교하려면 equals()연산자를 사용해야 합니다.
== 연산자는 객체 번지를 비교 => 문자열 비교 불가.
예제)
public class Example {
public static void main(String[] args) {
String[] strArray = new String[3];
strArray[0] = naver";
strArray[1] = "naver";
strArray[2] = new String("naver");
System.out.println( strArray[0] == strArray[1]);
System.out.println( strArray[0] == strArray[2] );
System.out.println( strArray[0].equals(strArray[2]) );
}
}
배열 복사
배열은 한 번 생성하면 크기를 변경할 수 없기 때문에 더 많은 저장 공간이 필요하다면
보다 큰 배열을 새로 만들고 이전 배열로부터 항목 값들을 복사해야 합니다.
for문을 사용한 배열 복사
예제)
public class Example {
public static void main(String[] args) {
int[] oldIntArray = { 10, 20, 30 };
int[] newIntArray = new int[5];
for(int i=0; i<oldIntArray.length; i++) {
newIntArray[i] = oldIntArray[i];
}
for(int i=0; i<newIntArray.length; i++) {
System.out.print(newIntArray[i] + ", ");
}
}
}
복사되지 않은 값은 배열 기본 초기값 0으로 유지됨.
System.arraycopy()메소드를 사용한 배열 복사
예제)
public class Example {
public static void main(String[] args) {
String[] oldStrArray = { "naver", "blog", "post" };
String[] newStrArray = new String[5];
System.arraycopy( oldStrArray, 0, newStrArray, 0, oldStrArray.length);
for(int i=0; i<newStrArray.length; i++) {
System.out.print(newStrArray[i] + ", ");
}
}
}
얕은 복사(shallow copy) :참조 타입 배열의 경우 복사되는 값이 객체의 번지이므로
새 배열의 항목은 이전 배열의 항목이 참조하는 객체와 동일.
깊은 복사(deep copy) : 참조하는 객체도 별도로 생성하는 것
'자바' 카테고리의 다른 글
JAVA 자바 열거 타입 ,자바 ENUM 열거형 (0) | 2017.03.12 |
---|---|
JAVA 자바 향상된 for문 [ for(A : B)] (0) | 2017.03.12 |
JAVA 자바 다차원 배열 - 자바 2차원 배열 (0) | 2017.03.12 |
JAVA 자바 배열 커맨드 라인 입력 main()메서드의 String args[] (0) | 2017.03.12 |
JAVA 자바 배열 new 연산자로 배열 생성, 배열 길이 length (0) | 2017.03.12 |