Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 호스트주소 #Host주소
- 회고 #주간회고
- WSL2 #권한
- 회고록
- 글 foramt
- 인터넷 #ISP
- Java환경
- 회고
- 코딩테스트
- 코드스테이츠 #회고록
- 코드스테이츠 #
- String
- JAVA기본
- jvm
- Git #회고록
- 에러해결
- 시작 #꾸준히 #과하지않게
- 몰입학습 #몰입
- mapstruct
- 공부방식
- 피드백
- git #intellij
- OOP
- 사용자계정 #WSL2
- 정리글 작성법
- 백엔드로드맵
- WSL #Linux #ubuntu
- 네트워크 기초
- 롤중독
- 회고록_코드스테이츠
Archives
- Today
- Total
느리더라도 꾸준히
[배열]배열 복사 메서드 비교하기 본문
목표
- 왜 배열을 복사하는지 알고 있다.
- 배열을 복사하는 두 메서드의 차이를 이해하고있다.
- System.arraycopy()
- String.copyOf() & String.CopyOfRange
배열 복사하기
배열은 같은타입으로 구성되고, 순서가 존재하며 크기를 정해놓는 자료구조입니다. 그러므로 한번 크기를 설정한 배열의 크기를 따로 수정하는 메서드는 존재하지 않습니다. 대신 배열을 복사하여 새로 만들면서 수정한 것과 같이 사용할 수 있습니다.
아래의 배열을 복사하는 두 메서드를 비교해 봅시다.
1.System.arraycopy()
System.arraycopy(원본배열, 원본의 복사할 시작 index, 복사본 배열, 복사본 배열의 시작 index, 복사할 개수)
public static void main(String[] args) {
Solution sol = new Solution();
int[] arr = {1,2,3,4,5};
int[] newArr = new int[10];
// 원래의 배열 출력
System.out.println("=======원래의 배열========");
for(int x : arr) System.out.printf(x + " ");
System.out.println();
System.arraycopy(arr,0, newArr, 1, 5);
System.out.println("======= arraycopy()로 배열 복사하기========");
for(int x : newArr) System.out.printf(x + " ");
결과값
=======원래의 배열========
1 2 3 4 5
======= arraycopy()로 배열 복사하기========
0 1 2 3 4 5 0 0 0 0
- return 값이 없다.
- 이미 존재하는 배열에 원하시는 시작지점부터 복사 할수 있다.
2. Arrays.copyOf() & Arrays.copyOfRange
copyOf(복사될 배열, 새로운 배열의 크기)
System.out.println("======= copyOf()로 배열 복사하기========");
int[] newArr2 = Arrays.copyOf(arr,arr.length+5);
for(int x : newArr2) System.out.printf(x + " ");
결과값
=======원래의 배열========
1 2 3 4 5
======= copyOf()로 배열 복사하기========
1 2 3 4 5 0 0 0 0 0
- arraycopy() 와는 다르게 매개변수의 타입으로 새로운 배열을 Return 합니다.
copyOfRange(복사될 배열, 복사될배열의 시작위치, 복사될배열의 끝위치)
System.out.println("======= copyOfRange()로 배열 복사하기========");
int[] newArr3 = Arrays.copyOfRange(arr,1, 10);
for(int x : newArr3) System.out.printf(x + " ");
결과값
=======원래의 배열========
1 2 3 4 5
======= copyOfRange()로 배열 복사하기========
2 3 4 5 0 0 0 0 0
- 복사될 배열의 원하는 부분을 복사해올수 있습니다.
- arraycopy와는 다르게 매개변수의 타입으로 새로운 배열을 Return합니다.
- to 범위 > 복사될 배열의 크기일때는, 잉여 부분을 0으로 채워넣습니다.
'Java' 카테고리의 다른 글
[JVM]변수 선언과 할당시 관점으로 JVM 동작 이해하기 (0) | 2022.11.04 |
---|---|
[Java기본]while문속의 switch문과 break; (0) | 2022.11.03 |
[String]equal(), compareTo(), == 비교하기 (0) | 2022.11.01 |
[String]String 선언 방식 비교 (0) | 2022.10.31 |
[Java환경]IntelliJ JDK 환경 변경하기 (0) | 2022.10.21 |
Comments