Рубрики

Финальные массивы в Java

Предсказать вывод следующей программы Java.

class Test 

{

    public static void main(String args[])

    {

       final int arr[] = {1, 2, 3, 4, 5};  // Примечание: arr является окончательным

       for (int i = 0; i < arr.length; i++)

       {

           arr[i] = arr[i]*10;  

           System.out.println(arr[i]);          

       }      

    }    

}

Выход:

10 
20 
30 
40 
50 

Массив arr объявлен как окончательный, но элементы массива меняются без проблем. Массивы являются объектами, а переменные объектов всегда являются ссылками в Java. Таким образом, когда мы объявляем переменную объекта как final, это означает, что переменная не может быть изменена для ссылки на что-либо еще. Например, следующая программа 1 компилируется без каких-либо ошибок, и программа завершается неудачно при компиляции.

// Программа 1

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

// Программа 2

class Test 

{

    int p = 20;

    public static void main(String args[])

    {

       final Test t1 = new Test();       

       Test t2 = new Test();

       t1 = t2; 

       System.out.println(t1.p);      

    }    

}

Вывод: ошибка компилятора: невозможно присвоить значение конечной переменной t1

Таким образом, окончательный массив означает, что переменная массива, которая на самом деле является ссылкой на объект, не может быть изменена для ссылки на что-либо еще, но члены массива могут быть изменены.

В качестве упражнения, предсказать результат следующей программы

class Test 

{

    public static void main(String args[])

    {

       final int arr1[] = {1, 2, 3, 4, 5};

       int arr2[] = {10, 20, 30, 40, 50};

       arr2 = arr1;      

       arr1 = arr2;  

       for (int i = 0; i < arr2.length; i++)

          System.out.println(arr2[i]);          

    }    

}

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Финальные массивы в Java

0.00 (0%) 0 votes