Java : 복사, String 배열 형태

커비·2024년 11월 12일
0

Java

목록 보기
31/55

📍 얕은 복사

public static void main(String[] args) {
        // 얕은 복사
        int[] a = {1, 2, 3, 4};
        int[] b = a; // 얕은 복사

        // b 배열의 0번쨰 순번값을 3으로 수정 (1 -> 3)
        b[0] = 3;

        // 출력 3 <- a 배열의 0번째 순번값도 3으로 조회된다.
        System.out.println(a[0]);
    }

📍 깊은 복사

// 깊은 복사 메서드
        int[] a = {1, 2, 3, 4};
        int[] b = a.clone();
        // 하지만 clone() 메서드는 2차원 이상 배열에서는 얕은 복사로 동작함
public static void main(String[] args) {
        int[] a = {1, 2, 3, 4};
        int[] b = Arrays.copyOf(a, a.length);

        a[3] = 0;
        System.out.println(a[3]);
        System.out.println(b[3]);
    }

📍 스트림 형태

package array;

public class Arr05 {
    public static void main(String[] args) {
        // 문자(char), 문자열(String)
        // String = char

        // 기본형 변수 vs 참조형 변수
        // 1. 기본형 변수는 '소문자로 시작함'
        // 2. 참조형 변수는 '대문자로 시작함'
        // - wrapper class에서 기본형 변수를 감싸줄 때(boxing), int -> Integer
        // 3. 기본형 변수는 값 자체를 저장
        // 4. 참조형 변수는 별도의 공간에 값을 저장 후 그 주소를 저장함 (= 주소형 변수)

        // char 보다 String을 훨씬 더 많이 사용함
        // wrapper class와도 상당히 비슷함. -> 기본형 변수가 가지고 있는 기능이 제한 -> 다양한 기능을 제공하는 Wrapper를 감쌈으로서 추가기능을 더함

        // String 기능 활용 예시
        String str = "ABCD";

        // (1) length
        int strLength = str.length();
        System.out.println(strLength);

        // (2) charAt(int index)
        char strChar = str.charAt(1);
        System.out.println(strChar);

        // (3) substring(int fromIdx, int toIdx)
        String strSub = str.substring(0, 3);
        System.out.println(strSub);

        // (4) equals (String str)
        String newStr = "ABCE";
        boolean strEqual = newStr.equals(str);
        System.out.println(strEqual);

        // (5) toCharArray() : String -> char[];
        char[] strCharArray = str.toCharArray();

        // (6) 반대로 char[] -> String -> char
        char[] charArray = {'A', 'B', 'C'};
        String charArrayString = new String(charArray);
        System.out.println(charArrayString);
    }
}
profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글