Java Operators

Java Control Statements

Object Oriented Programming

Java Built-in Classes

Java File Handling

Java Error & Exceptions

Java Multithreading

Java Synchronization

Java Networking

Java Collections

Java Interfaces

Java Data Structures

Java Collections Algorithms

Advanced Java

Java Miscellaneous

Java APIs & Frameworks

Java Class References

Java Useful Resources

Final Arrays in Java



In Java, when we use the final keyword for a variable, it means we are referring to the variable as a constant. When we use the final keyword for an array, it means we cannot reassign it to point to a new array; it's referred to as a final array in Java.

What do we mean by Final Array?

If we declare an array as final, then its reference to the array cannot be changed. But we can change/modify the elements inside the final array.

Declaring a Final Array

In Java, we can declare a final array by just adding the final keyword at the start of the array declaration as follows:

final dataType[] name_of_Array = new dataType[size];

For example:

final int[] array1 = new int [3]
Declaring a Final Array

Initializing a Final Array

We can initialize values to a Final array in three different ways, they are as follows:

Direct Initialization

In Java, we can directly initialize the values of a final array when declaring it. The following is the syntax for direct initialization of a final array:

final dataType[] name_of_Array = {value_1, value_2_,value_3  ...};

By Indexing

In Java, we can initialize the values of a final array by specifying the index of the element. The following is the syntax for initializing a value of a final array by indexing:

name_of_Array [Index] = value;

Using For Loops

In Java, we can initialize the values of a final array using for loops, in which the loop is used to iterate over the elements. The following is the syntax for initializing the value of a final array using for loops:

for (int i = 0; i < rows; i++) {
        name_of_Array [i] = value;
    }
}

Example

Below is an example for declaring a final array and initializing its values using different methods in Java:

public class Demo {
   public static void main(String args[]) {

      // Using direct initialization
      final int[] array1 = {1, 2, 3};
      System.out.println("Using direct initialization");
      for (int i = 0; i < array1.length; i++) {
         System.out.print(array1[i] + " ");
      }

      // Using indexing
      final String[] array2 = new String[3];
      array2[0] = "Welcome";
      array2[1] = "to";
      array2[2] = "TutorialsPoint";
      System.out.println("\n\nUsing indexing ");
      for (int i = 0; i < array2.length; i++) {
         System.out.print(array2[i] + " ");
      }

      // Using for loop 
      final double[] array3 = new double[3];
      for (int i = 0; i < array3.length; i++) {
         array3[i] = (i + 1) * 1.5;
      }
      System.out.println("\n\nUsing for loop");
      for (int i = 0; i < array3.length; i++) {
         System.out.print(array3[i] + " ");
      }
   }
}

Output

Using direct initialization
1 2 3 

Using indexing 
Welcome to TutorialsPoint 

Using for loop
1.5 3.0 4.5

Modifying a Final Array

In Java, we can modify the elements of a final array by providing the index of the element to be changed. But we cannot change the reference of the array, which means reassigning the final array is not allowed in Java.

Example

Below is an example of modifying an element in a final array in Java:

import java.util.Arrays;
public class Demo {
   public static void main(String[] args) {
      final int[] myArray =  {10, 20, 30};
      System.out.println("Array before modification: " + Arrays.toString(myArray));
      myArray[0] = 100;
      System.out.println("Array before modification: " + Arrays.toString(myArray));
   }
}

Output

Array before modification: [10, 20, 30]
Array before modification: [100, 20, 30]

Example

Below is an example of reassigning the final array, which will throw a compilation Error:

import java.util.Arrays;
public class Demo {
   public static void main(String[] args) {
      final int[] myArray1 =  {10, 20, 30};
      int[] myArray2 = {4,5,6};
      System.out.println("Array before modification: " + Arrays.toString(myArray1));
      myArray1 = myArray2; 
      System.out.println("Array before modification: " + Arrays.toString(myArray));
   }
}

Output

The above code throws an error when we try to reassign the final array.  

Demo.java:7: error: cannot assign a value to final variable myArray1
      myArray1 = myArray2; 
      ^
1 error
Advertisements