2013-04-13 24 views

Odpowiedz

13

num == Integer.parseInt(str) jedzie szybciej niż str.equals("" + num)

str.equals("" + num) najpierw przekonwertować num ciąg, który jest O (n), gdzie n oznacza liczbę cyfr w liczbie. Następnie ponownie wykona konkatenację łańcuchową O (n), a następnie dokona porównania łańcuchów. Porównywanie ciągów w tym przypadku będzie kolejnym O (n) - n będącym liczbą cyfr w liczbie. Więc we wszystkich ~ 3 * O (n)

num == Integer.parseInt(str) skonwertuje ciąg na liczbę całkowitą, która jest O (n) ponownie, gdzie n jest liczbą cyfr w liczbie. A następnie porównanie liczb całkowitych to O (1). Więc tylko ~ 1 * O (n)

Podsumowując oba są O (n) - ale str.equals("" + num) ma wyższą stałą i tak jest wolniej.

5

myślę num == Integer.parseInt(str) jest lepszy sposób porównania. Ponieważ str.equals("" + num) nie jest to idealny sposób porównywania wartości całkowitych, a także spowoduje utworzenie niepotrzebnych obiektów stałych String w puli String (co ogranicza wydajność).

+0

mogę powiedzieć, że wartości całkowite mogą być sprawdzane pod kątem równości używając operatora porównania „==”. –

1

Guess może również być w stanie to wykorzystać, aby porównać ........

int p = 1234; 
String Int = "1234"; 
String string = String.valueOf(p); 
System.out.println(string + Int); 
System.out.println(string.equals(Int)); 
code here