Java int to String-Integer.toString (i) 대 새로운 Integer (i) .toString ()
때로는 자바가 나를 당혹스럽게한다.
엄청난 양의 int 초기화가 있습니다.
실제 차이점 은 무엇입니까 ?
Integer.toString(i)
new Integer(i).toString()
Integer.toString
클래스에서 정적 메서드를 호출합니다 Integer
. 의 인스턴스가 필요하지 않습니다 Integer
.
호출 new Integer(i)
하면 Integer
int의 값을 캡슐화하는 전체 Java 객체 인 유형의 인스턴스를 만듭니다 . 그런 다음 toString
메소드 를 호출하여 자체 문자열 표현을 리턴하도록 요청합니다 .
원하는 모든을 인쇄하는 것이라면 int
첫 번째 것이 더 가볍고 빠르며 여분의 메모리 (반환 된 문자열 제외)를 사용하지 않기 때문에 첫 번째를 사용합니다.
정수 값을 나타내는 객체 (예 : 컬렉션에 포함)를 원하면 두 번째 값을 사용합니다 int
. 이는 맨손으로는 할 수없는 모든 종류의 작업을 수행 할 수있는 본격적인 객체를 제공하기 때문입니다 .
new Integer(i).toString()
먼저 (중복) 래퍼 객체를 만듭니다 ( i
자체 래퍼 객체 일 수 있음 Integer
).
Integer.toString(i)
불필요한 객체를 만들지 않기 때문에 선호됩니다.
또 다른 옵션은 정적 String.valueOf
방법입니다.
String.valueOf(i)
그것은 느낌 보다 약간 더 권리를 Integer.toString(i)
나에게. 난의 종류가 변경되면에서 예를 들어 int
에 double
, 코드가 올바른 유지됩니다.
new Integer(i).toString();
이 명령문은 Integer의 오브젝트를 작성한 후 해당 메소드
toString(i)
를 호출하여 Integer 값의 문자열 표시 를 리턴합니다 .Integer.toString(i);
그것은 특정의 INT (정수)를 나타내는 String 오브젝트를 돌려줍니다 만, 여기에서
toString(int)
A는static
방법.
요약은 첫 번째 경우 객체 문자열 표현을 반환하고 두 번째 경우와 마찬가지로 정수의 문자열 표현을 반환합니다.
나는 또한 사용하는 것이 좋습니다
int integer = 42;
String string = integer + "";
간단하고 효과적입니다.
나는 fhucho의 추천을 좋아하지만
String.valueOf(i)
아이러니는이 방법이 실제로
Integer.toString(i)
따라서 String.valueOf(i)
읽는 방법이 마음에 들며 기수가 필요하지 않지만보다 효율적이지 않다는 것을 알고 있다면 사용하십시오 Integer.toString(i)
.
성능 측정 측면에서 시간 성능을 고려하는 경우 Integer.toString (i); 1 억 회 미만을 호출하는 경우 비용이 많이 듭니다. 그렇지 않으면 1 억 회 이상의 호출이면 새로운 Integer (10) .toString () 이 더 잘 수행됩니다.
아래는 코드를 통해 성능 측정을 시도 할 수 있습니다.
public static void main(String args[]) {
int MAX_ITERATION = 10000000;
long starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i) {
String s = Integer.toString(10);
}
long endtime = System.currentTimeMillis();
System.out.println("diff1: " + (endtime-starttime));
starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i) {
String s1 = new Integer(10).toString();
}
endtime = System.currentTimeMillis();
System.out.println("diff2: " + (endtime-starttime));
}
기억의 관점에서
새로운 정수 (i) .toString ();
매번 객체를 생성 할 때 더 많은 메모리를 사용하므로 메모리 조각화가 발생합니다.
보다 나은:
Integer.valueOf(i).toString()
간단한 방법은 ""
정수로 연결 됩니다.
int i = 100;
String s = "" + i;
지금 s
해야합니다 100
문자열 값으로.
여기에 Integer.toString
클래스 정수의 정적 메소드를 호출합니다. 객체를 호출 할 필요는 없습니다.
먼저 호출 new Integer(i)
하면 Integer 유형의 인스턴스를 작성하십시오. 이는 정수 값을 캡슐화하는 완전한 Java 오브젝트입니다. 그런 다음 toString
메소드 를 호출하여 자체 문자열 표현을 리턴하도록 요청하십시오.
1.Integer.toString(i)
Integer i = new Integer(8);
// returns a string representation of the specified integer with radix 8
String retval = i.toString(516, 8);
System.out.println("Value = " + retval);
2.new Integer(i).toString()
int i = 506;
String str = new Integer(i).toString();
System.out.println(str + " : " + new Integer(i).toString().getClass());////506 : class java.lang.String
'Programming' 카테고리의 다른 글
Google Maps API v3 : 모든 마커를 제거하는 방법? (0) | 2020.02.19 |
---|---|
POSIX를 사용하여 명령을 실행하고 C ++에서 명령의 출력을 얻으려면 어떻게해야합니까? (0) | 2020.02.19 |
MSB3247 해결-동일한 종속 어셈블리의 다른 버전간에 충돌이 발견되었습니다. (0) | 2020.02.19 |
사전 키를 사용할 수 없으면 None을 반환합니다. (0) | 2020.02.19 |
Git을 사용하여 한 분기에 있지만 다른 분기에는없는 모든 커밋을 표시하십시오. (0) | 2020.02.19 |