modificador method java final

method - static class java



¿Cuándo se supone que debemos usar "cadena estática pública final"? (9)

  1. Estático significa ... Puede usarlo sin crear una instancia de la clase o usar cualquier objeto.
  2. final ... Es una palabra clave que se usa para hacer que la cadena sea constante. No puedes cambiar el valor de esa cadena. Mira el ejemplo de abajo:

    public class StringTest { static final String str = "Hello"; public static void main(String args[]) { // str = "world"; // gives error System.out.println(str); // called without the help of an object System.out.println(StringTest.str);// called with class name } }

Gracias

He visto mucho código donde las personas escriben public static final String mystring = ... y luego simplemente usan un valor.

¿Por qué tienen que hacer eso? ¿Por qué tienen que inicializar el valor como final antes de usarlo?

ACTUALIZAR

Ok, gracias a todos por todas sus respuestas, entiendo el significado de esas claves (final estático público). Lo que no entiendo es por qué la gente usa eso incluso si la constante se usará solo en un lugar y solo en la misma clase. ¿por qué declararlo? ¿por qué no usamos la variable?


¿Por qué la gente usa constantes en clases en lugar de una variable?

legibilidad y mantenibilidad,

tener un número como 40.023 en tu código no dice mucho sobre lo que representa el número, entonces lo reemplazamos por una palabra en mayúsculas como "USER_AGE_YEARS". Más tarde, cuando miramos el código, queda claro qué representa ese número.

¿Por qué no solo usamos una variable? Bueno, lo haríamos si supiéramos que el número cambiará, pero si cambia un número que no cambiará, como 3.14159 ... lo convertiremos en definitivo.

Pero, ¿y si no es un número como un String? En ese caso, es principalmente para mantenimiento, si está usando un String varias veces en su código (y no cambiará en tiempo de ejecución), es conveniente tenerlo como una cadena final en la parte superior de la clase. De esa manera, cuando quiera cambiarlo, solo hay un lugar para cambiarlo en lugar de muchos.

Por ejemplo, si tiene un mensaje de error que se imprime muchas veces en su código, con la cadena final ERROR_MESSAGE = "Algo salió mal". es más fácil de mantener, si quiere cambiarlo de "Algo salió mal". a "Es demasiado tarde porque ya está muerto", solo necesitarías cambiar esa línea, en lugar de todos los lugares donde usarías ese comentario.


La palabra clave final significa que el valor es constante (no se puede cambiar). Es análogo a const en C.

Y puede tratar estática como una variable global que tiene alcance. Básicamente significa que si lo cambia por un objeto, se cambiará para todos igual que una variable global (limitada por el alcance).

Espero eso ayude.


Por lo general, para definir constantes, se reutiliza en muchos lugares, lo que lo convierte en un punto único para el cambio, se usa en una sola clase o se comparte entre paquetes. Hacer una variable final evitar cambios accidentales.


public lo hace accesible en otras clases. Puede usarlo sin instanciar la clase o usar cualquier objeto.  static lo hace un valor uniforme en todas las instancias de la clase ... asegura que no desperdicie memoria creando muchas cosas iguales si será el mismo valor para todos los objetos.  final lo convierte en valor no modificable. Entonces, básicamente, es un valor "constante" que es el mismo en todas las instancias de la clase y que no se puede modificar.


final indica que el valor de la variable no cambiará; en otras palabras, una variable cuyo valor no se puede modificar después de que se declare.

Utilice public final static String cuando desee crear un String que:

  1. pertenece a la clase ( static : no es necesaria ninguna instancia para usarla), y eso
  2. no cambiará ( final ), por ejemplo, cuando quiera definir una constante de String que estará disponible para todas las instancias de la clase, y para otros objetos que usen la clase.

Ejemplo:

public final static String MY_CONSTANT = "SomeValue"; // ... in some other code, possibly in another object, use the constant: if (input.equals(MyClass.MY_CONSTANT)

Similar:

public static final int ERROR_CODE = 127;

No es necesario usar el final , pero se mantiene constante desde que se modificó inadvertidamente durante la ejecución del programa, y ​​sirve como un indicador de que la variable es una constante.

Incluso si la constante solo se usará -leerá- en la clase actual y / o en un solo lugar, es una buena práctica declarar todas las constantes como final : es más claro, y durante la vigencia del código, la constante puede terminar siendo utilizada en más de un lugar

Además, el uso de final puede permitir que la implementación realice alguna optimización, por ejemplo, al delimitar un valor real donde se usa la constante.


final indica que el valor no se puede cambiar una vez configurado. static permite establecer el valor, y ese valor será el mismo para TODAS las instancias de la clase que lo utilizan. Además, puede acceder al valor de una cadena public static sin tener una instancia de una clase.


public hace accesible en otras clases. static hace que sea un valor uniforme en todas las instancias de clase. final convierte en valor no modificable. Entonces, básicamente, es un valor " constante " que es el mismo en todas las instancias de la clase y que no se puede modificar. Con respecto a su preocupación "Lo que no entiendo es por qué la gente usa eso, incluso si la constante se usará solo en un lugar y solo en la misma clase. ¿Por qué declararlo? ¿Por qué simplemente no usamos la variable?" Yo diría que dado que es un campo público, el valor constante también se puede usar en cualquier otra parte de alguna otra clase usando ClassName.value. por ejemplo, una clase llamada Math puede tener PI como valor final estático largo al que se puede acceder como Math.PI.


static significa que el objeto solo se creará una vez y no tiene un objeto de instancia que lo contenga. La forma en que ha escrito se usa mejor cuando tiene algo que es común para todos los objetos de la clase y nunca cambiará. Incluso podría usarse sin crear un objeto en absoluto.

Por lo general, es mejor utilizar la versión final cuando espere que sea final para que el compilador aplique esa regla y usted lo sepa con certeza. static garantiza que no desperdicie memoria creando muchas cosas iguales si tiene el mismo valor para todos los objetos.