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 (String name : names) {
// 실행
}