¿Cuál es la mejor manera de contar el número de dígitos en un entero?

Véalo usted mismo

clase pública en bruto {

public static void main (String [] args) {
largo comienzo, parada;
int N = 123456789;

// camino 1
inicio = System.nanoTime ();
int len ​​= String.valueOf (N) .length ();
stop = System.nanoTime ();
System.out.println (“way1 time:” + len + “” + (stop-start));

// camino 2
inicio = System.nanoTime ();
int p = 0;
mientras que (N> 0) {
N / = 10;
p ++;
}
stop = System.nanoTime ();
System.out.println (“way2 time:” + p + “” + (detener-iniciar));
}
}

/ *
salida:
way1 hora: 9 30791
way2 tiempo: 9 540
* /

Puede ejecutar el código usted mismo y verificar.

Razón:

En way1 tienes que considerar qué hacen valueOf () y length ().

String.valueOf () llama a otra función Integer.toString () que ejecuta un bucle y después de crear la cadena está llamando a otra función String.length (). Todo esto está agregando gastos generales innecesarios. Todo esto se puede hacer por way2 fácilmente.

No dudes en preguntarme cualquier cosa 🙂

Está bien, depende, mi preferencia es way2 ¿por qué?

  1. Programadores
  2. No requiere conversión a cadena
  3. Sin embargo way1 memoria superior sabia
  4. Deberá verificar las velocidades de cálculo y actualizar