2014-02-23 3 views
1

String.valueOf()와 new String()의 차이점은 무엇입니까? 언제 다른 것을 사용 하시겠습니까?String.valueOf()와 new String()의 차이점

예 1 :

public String fun(){ 

int foo = 55; 
return String.valueOf(foo); 

} 

예 2 :

public String fun(){ 

int foo = 55; 
return new String(foo); 

} 

업데이트 : 아래 다른 사람에 의해 지적 네, 두 번째 예는 컴파일되지 않습니다. fastcodejava가 지적한대로 새로운 String ("something"+ foo)을 사용하고 있기 때문에 깨닫지 못했습니다. 그래서 새로운 String ("something"+ foo) 또는 String.valueOf (foo)를 사용하면이 둘 사이에 차이점이 있습니까?

+11

두 번째 예제는 컴파일되지 않습니다. –

+1

대안은'Integer.toString (foo)'입니다. –

+0

누가 신경 쓰죠? 그들은 똑같은 일을하고 둘 다 돌려 줄 String 객체를 만듭니다. –

답변

1

두 번째 코드는 컴파일되지 않습니다. 그러나 만약 당신이 return new String("" + foo);을했다면 그렇게 될 것입니다. 그 후 그들은 거의 동일합니다.

+1

나는 본다. 나는 새로운 문자열 ("무언가"+ foo)을 사용하고 있으며, 작동하므로, 당신의 대답은 일을 크게 분명히했다. 고맙습니다! – user2441441

+1

이것은 매우 나쁜 Java 조언입니다. 2 개의 불필요한 객체를 만듭니다. – kares

+0

새로운 String (""+ foo)을 수행 할 필요가 없습니다. "+ foo 자체는 이미 새로운 문자열입니다. – Rudy

1

첫 번째 메서드는 형식을 String으로 변환하려고 시도하고 해당 값을 사용하여 새 문자열을 만듭니다. 두 번째 방법은 문자열과 같은 형식으로 새 문자열을 만드는 생성자입니다 (Integer -> String의 의미로 typeconversion이 아닙니다).

그래서 코멘트가 컴파일 나던 ... 맞아 :)

2

첫 번째 방법은 정수를 받아 문자열로 변환합니다. 그러나 두 번째 메서드는 String 형식의 새 개체를 만드는 생성자 일뿐입니다. 인수로 정수를 사용할 수 없습니다.

2

단일 정수를 취하는 String의 생성자가 없습니다.

  • String(byte[] bytes)
  • String(char[] value)
  • String(String original)
  • String(StringBuffer buffer)
  • String(StringBuilder builder)

당신은 사용해야

Integer.toString(foo); 
2

예 2에서는

return new String(Integer.toString(foo)); 

당신의 하나가 컴파일되지 않습니다해야합니다. 그래서 그들 사이의 차이점에 대해 생각할 필요가 없습니다. 그들은 다른 매개 변수를 취합니다.

관련 문제