본문 바로가기
언어/java

[Java] 5. 참조 타입 (2) - 5~6

by 젼젼39 2025. 3. 16.

5.5 문자열(String) 타입

    : 자바의 문자열을 String 객체로 생성됨 (= 변수에 객체의 번지가 대입됨)

- Java는 문자열 리터럴이 동일하다면 String 객체 공유하도록 설계됨

String name1 = "홍길동";
String name2 = "홍길동";

//이 경우 동일한 String 객체를 공유

 

* new 연산자

    : 새로운 객체를 만드는 객체 생성 연산자

    - 이 경우 서로 다른 String 객체의 번지를 갖게 됨

String name1 = new String("홍길동");
String name2 = new String("홍길동");

//서로 다른 String 객체 번지를 갖게 됨

 

* 메소드들

equals() 내부 문자열 비교 * boolean 변수명 = 원본문자열.equals(비교문자열);  //대소문자 구분

String hobby = "";
if (hobby.equals("")){ }; --> 변수가 빈 문자열 참조하는지 
charAt() 문자열에서 특정 위치의 문자 얻기 * char 변수명 = 원본문자열.charAt(인덱스);
length() 문자열에서 문자의 개수 얻기 * int 변수명 = 원본문자열.length();
replace() 특정 문자열을 다른 문자열로 대체 * String 변수명 = 원본문자열.replace("찾을문자열", "바꿀문자열");

// 원본 문자열 그대로 두고 새로운 문자열 리턴
// 찾을 문자열을 전체 String에서 찾고 바꿔줌
substring() 특정 위치의 문자열 잘라오기 * String 변수명 = 원본문자열.substring(시작 인덱스, (끝 인덱스) );

// 끝 인덱스는 생략 가능
indexOf() 문자열에서 특정 문자열의 위치 찾기 * int 변수명 = 원본문자열.indexOf("특정 문자열");

// 포함되지 않은 경우 -1 리턴
contains() 문자열에 특정 문자열 단순 포함 여부 * boolean 변수명 = 원본문자열.contains("특정문자열");
split() 구분자를 기준으로 문자열 분리하기 * String[ ] 배열명 = 원본문자열.split("구분자");

 

 

5.6 배열(Array) 타입

- 배열은 힙 영역에 있고, 배열의 주소가 스택 영역의 변수에 담김 (c는 stack에 직접 넣음)

* 특징
1) 배열은 같은 타입의 값만 관리함
2) 배열의 길이는 늘리거나 줄일 수 없음

 

* 배열 변수 선언 방법

int[ ] 변수명 = null;
변수명 = new int[길이];
int[ ] 변수명 = null;
변수명 = new int[ ] {1, 2, 3};
int[ ] 변수명 = {1, 2, 3};
//new 연산자 : 배열 항목 타입 따라
                       기본 타입 = 0, 0.0, false
                       참조 타입 = null 초기화
  int[] 변수명;
변수명 = {1, 2, 3}; --> 컴파일 에러
*배열 변수 선언 시점과 값 목록 대입 시점이 같거나 new 사용해야 함 

//new 연산자 : 해당 길이의 배열을 생성하고 배열의 번지를 리턴

//배열 생성 후 특정 인덱스 항목을 새로운 값으로 변경하는 방법은 동일 ( 변수[인덱스] = 값; )

 

//메소드의 매개변수가 배열 타입일 때

void printItem(int[] scores){ }
printItem(new int[] {10, 20, 30}); //올바른 메소드 호출
printItem({10, 20, 30}); // 잘못된 메소드 호출

'언어 > java' 카테고리의 다른 글

[Java] 6. 클래스 (2) - 5~7  (0) 2025.03.22
[Java] 6. 클래스 (1) 1~4  (0) 2025.03.22
[Java] 5. 참조 타입 (3) - 7~10  (2) 2025.03.16
[Java] 5. 참조 타입 (1) - 1~4  (0) 2025.03.16