[Java] 참조 타입

Local Gaji·2023년 8월 12일

이것이 자바다

목록 보기
2/18

🎈 선언

String str1 = "ABC";  
String str2 = "ABC";
String str3 = new String("ABC");
  • 첫번째 줄에서 "ABC" 라는 데이터를 힙 영역에 저장하고,
    str1 변수는 이 데이터의 주소를 저장한다.
  • 두번째 줄에서 str2 변수는 str1 이 가리키는 "ABC" 문자열의 주소를 저장한다.
  • 세번째 줄에서 "ABC" 라는 데이터를 힙 영역에 하나 더 저장하고,
    str3 변수는 이 데이터의 주소를 저장한다.
str1 == str2   // true
str1 != str3   // true

같은 주소를 저장할 때 == 이 성립한다.


🔰 연결 해제

str2 = null;
str3 = null;

변수와 데이터의 연결이 해제된다.
str3 가 참조하던 "ABC" 데이터는 더 이상 아무 변수와 연결되어있지 않아 삭제된다.
하지만 str2 가 참조하던 데이터는 str1 가 여전히 참조 중이므로, 삭제되지 않는다.


🎈 문자열

🔰 문자열 메서드

str1.equals(str2)      // 문자열 내용이 같은지 검사 (boolean)

str.charAt(0)          // 문자열 인덱싱 (char)
str.length()           // 문자열의 길이 (int)
str.indexOf(s1)        // str에서 s1이 시작하는 위치 (int, 미포함시 -1)

str.replace(s1, s2)    // str 속 s1 문자열을 s2로 대체한 문자열

str.substring(x)       // x 인덱스부터 끝까지 잘라낸 문자열
str.substring(x, y)    // x 인덱스부터 y 앞까지 잘라낸 문자열

str.split(구분자)       // str을 구분자로 분리한 문자열들의 배열

🎈 배열

자바에서 배열은 같은 타입의 값만 관리한다
배열의 길이를 늘리거나 줄일 수 없다


🔰 배열 선언, 생성

타입[] 변수 = {0,1, ... };
int[] intArray = { 0, 1, 2, 3, ... };
String[] strArray = { "local", "gaji", ... };

선언 후 따로 값을 지정할 땐 new 타입[] 생성자를 이용한다

int[] intArray;
intArray = new int[] { 0, 1, 2, ...};

함수의 매개변수가 배열일 때에도, 생성자를 이용해 호출해야한다.

// 선언
void 함수(int[] x) { ... };

// 호출
함수( new int[] { 0, 1, 2, ... } )

길이를 지정하면 그 타입의 기본값으로 이루어진 배열을 만들 수 있다.

타입[] 변수 = new 타입[길이];

int[] intArray = new int[3];        // [0, 0, 0]
String [] strArray = new String[3]  // [null, null, null]
char [] charArray = new char[3]     // ['\u0000', '\u0000', '\u0000']

// 추후 특정 인덱스 항목에 값 지정하기
intArray[0] = 1;      // [1, 0, 0]

// 배열 길이 구하기
intArray.length       // 3

🔰 배열 복사

System.arraycopy(원본배열, 복사시작인덱스, 새배열, 붙여넣기시작인덱스, 복사항목수);

또는 for 문을 이용한다.


🔰 배열 for 반복문

for (타입 요소 : 배열) {
  // 실행문
}

for (String name : names) {
  // 실행
}

0개의 댓글