관리 메뉴

보리차

chapter 11 메소드 오버로딩과 String 클래스 본문

Java

chapter 11 메소드 오버로딩과 String 클래스

보리콩 2022. 1. 26. 20:08

메소드 오버로딩

메소드를 구분하는 조건은 다음과 같다.

- 메소드의 이름

- 메소드의 매개변수 정보

 

이때 메소드의 이름은 같아도 매개변수 선언이 다르면 동일한 이름의 메소드 정의를 허용하는데 이를 '메소드 오버로딩'이라 한다.

생성자도 오버로딩의 대상이 된다.

 

키워드 this를 이용해 다른 생성자를 호출할 수 있다.

class Person {
	private int regiNum;		// 주민등록 번호
    private int passNum;		// 여권 번호
    
    Person(int rnum, int pnum) {
    	regiNum = rnum;
        passNum = pnum;
    }
    Person(int rnum) {
    	this(rnum, 0);		// rnum과 0을 인자로 받는 다른 생성자 호출
    }
}

키워드 this를 이용해 인스턴스 변수에 접근할 수 있다.

 

 

String 클래스

String 클래스의 인스턴스 생성

// 둘 다 가능
String str = new String("Simple String")
String str = "Simple String"

 

두 방법의 차이점

String 인스턴스는 Immutable(변경할 수 없는) 인스턴스다. 따라서 따옴표로 String 인스턴스를 생성하게 되면 문자열이 같은 경우 같은 인스턴스를 공유하지만 new String()으로 인스턴스를 생성하면 새 인스턴스를 생성하기 때문에 문자열이 같아도 다른 인스턴스를 참조하게 된다.

// 동일 인스턴스 참조
String str1 = "Simple String";
String str2 = "Simple String";
// 다른 인스턴스 참조
String str3 = new String("Simple String");
String str4 = new String("Simple String");

 

String 인스턴스를 이용해 Switch문을 구성할 수 있다.

 

String 클래스의 메소드

String str1 = "red";
String str2 = "apple";

// 문자열 연결
String str3 = str1.concat(str2)			// redapple

// 문자열 일부 추출
String str4 = str2.substring(2, 4);		// pp (2이상 4미만의 문자열 추출)

// 문자열 내용 비교
boolean isSame = str1.equals(str2)		// false
int com = str1.compareTo(str2)			//사전 편찬 순서를 기준으로 비교(str1이 str2보다 앞서면 음수, 같으면 0 뒤서면 양수)

// 기본 자료형의 값을 문자열로 바꾸기
String str5 = String.valueOf(2);		// "2"

// 문자열을 대상으로 하는 + 연산, += 연산
String str6 = str1 + str2			// redapple