Como todos sabemos, la variable final declarada solo se puede inicializar una vez, mientras que la variable de referencia, una vez declarada final, nunca se puede reasignar, ya que comenzará a referirse a otro objeto que hace que el uso de final sea impracticable. Pero tenga en cuenta aquí que con final estamos obligados a no hacer referencia a otro objeto, pero dentro del objeto se pueden cambiar los datos, lo que significa que podemos cambiar el estado del objeto pero no la referencia. Entonces, como todos sabemos que las arrays también son un objeto, las arrays finales entran en juego. El mismo concepto se aplica a las arrays finales, es decir, no podemos hacer que la array final se refiera a otra array, pero los datos dentro de una array que se hace final se pueden cambiar/manipular.
Ilustración:
Java
// Java Program to Illustrate Final Arrays // Can Be Reassigned But Not Re-referred import java.util.*; class GFG { public static void main(String[] args) { final int[] arr = { 1, 2, 3, 4, 5 }; arr[4] = 1; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
1 2 3 4 1
Implementación:
Java
// Java Program to Illustrate Final Arrays // Importing required classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Declaring a final array final int arr[] = { 1, 2, 3, 4, 5 }; // Iterating over integer array for (int i = 0; i < arr.length; i++) { arr[i] = arr[i] * 10; System.out.println(arr[i]); } } }
10 20 30 40 50
Salida Explicación: La array arr se declara como final, pero los elementos de una array se modifican sin ningún problema. Las arrays son objetos y las variables de objeto son siempre referencias en Java. Entonces, cuando declaramos una variable de objeto como final, significa que la variable no se puede cambiar para referirse a otra cosa.
Ejemplo A:
Java
// Program 1 // Main class class Test { int p = 20; public static void main(String args[]) { final Test t = new Test(); t.p = 30; System.out.println(t.p); } }
30
Ejemplo B:
Java
// Java Program to Illustrate Final Arrays // Where Compiler Error Is Thrown // Main class class GFG { int p = 20; // Main driver method public static void main(String args[]) { // Creating objects of above class final GFG t1 = new GFG(); GFG t2 = new GFG(); // Assigning values into other objects t1 = t2; System.out.println(t1.p); } }
Salida: Error del compilador: no se puede asignar un valor a la variable final t1
Conclusión: el programa anterior se compila sin ningún error y el programa 2 falla en la compilación. Discutamos por qué ocurrió el error.
Entonces, una array final significa que la variable de la array, que en realidad es una referencia a un objeto, no se puede cambiar para referirse a otra cosa, pero los miembros de la array se pueden modificar. Propongamos a continuación un ejemplo que justifique lo mismo.
Ejemplo:
Java
// Java Program to Illustrate Members in Final Array // Can be Modified // Main class class GFG { // Main driver method public static void main(String args[]) { // Declaring a final array final int arr1[] = { 1, 2, 3, 4, 5 }; // Declaring normal integer array int arr2[] = { 10, 20, 30, 40, 50 }; // Assigning values to each other arr2 = arr1; arr1 = arr2; // Now iterating over normal integer array for (int i = 0; i < arr2.length; i++) // Printing the elements of above array System.out.println(arr2[i]); } }
Producción:
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA