인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

5. 특정 문자 뒤집기(toCharArray())

toString과 String,valueOf

작성

·

388

0

	public String solution(String str) {
		String answer;
		char[] s = str.toCharArray();
		int lt = 0, rt = s.length - 1;
		while (lt < rt) {
			if (!Character.isAlphabetic(s[lt]))
				lt++;

			else if (!Character.isAlphabetic(s[rt]))
				rt--;

			else {
				char tmp = s[lt];
				s[lt] = s[rt];
				s[rt] = tmp;
				lt++;
				rt--;
			}
		}
		answer = String.valueOf(s);
		//answer=s.toString();  
		return answer;
	}

위의 코드에서

answer = String.valueOf(s)와

주석처리한 answer=s.toString이 어떤 차이점이 있을까요??

두 코드 다 s를 스트링으로 바꿔서 answer에 넣어주는거라 생각했는데 주석처리한 코드로 제출하면 오답이라도 나오네요

답변 3

0

혹시라도 도움되실까 정리해봅니다.
String은 조금 특이케이스여서 Integer를 예시로 드리려합니다.
Integer.valueOf() = Integer 객체 반환

Integer.parseInt() = int (primitive) 값 반환

toString() = Override 하지 않을시 객체 메모리주소 반환

 

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

보시다시피, 클래스 정보를 구해 클래스 이름을 구하고 @ HexString 해쉬코드를 반환합니다.

0

추가로 toString() 을 재정의하여 사용한다 가정했을 때 

toString()은 null일 때  NullPointerException 을 발생시키고

String.valueOf()는 null 이라는 문자열로 처리합니다.

 

0

그냥 지나가다 답변 남깁니다만....

Object 클래스 공부를 다시 하셔야 할 듯 합니다.

기본적으로 toString()은 Object의 메소드라서 재정의를 해 주지 않으면 Object의 메소드가 호출 됩니다. 

아마 캐릭터 배열의 주소값이 나왔겠네요.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기