Как работает ключевое слово final?

257
21 февраля 2019, 00:10

А ещё есть специальное ключевое слово final, и если оно присутствует в объявлении переменной, вам будет разрешено присвоить значение этой переменной только один раз и вы не сможете уже изменить это значение после.

Прочитал это в книге. Далее захожу в идею и пишу:

 public class Main {
    public static final String name = "Tom";
    public static void main(String[] args) {
        System.out.println(name);
    }
}

Выводится слово Tom.

Далее я изменяю в нашей константе name на значение Jerry:

public class Main {
    public static final String name = "Jerry";
    public static void main(String[] args) {
        System.out.println(name);
    }
}

И вижу в консоли Jerry, а в книге написано "вам будет разрешено присвоить значение этой переменной ТОЛЬКО ОДИН РАЗ и вы НЕ сможете уже изменить это значение после". Можете разъяснить ситуацию, чтобы я понял в чём суть?

Answer 1

Изменения касаются рантайма, так нельзя сделать:

public class Main {
    public static final String name = "Jerry";
    public static void main(String[] args) {
        name = "Tom";//here is Error
        System.out.println(name);
    }
}
Answer 2

Имеется ввиду, что в ходе выполнения программы Вы не сможете изменить. Например:

  public class Main {
    public static final String name = "Tom";
    public static void main(String[] args) {
        name = "Jhon"; 
        System.out.println(name);
    }
}
READ ALSO
java и XDTO пакет

java и XDTO пакет

Есть мобильное приложение на android с одной стороны и веб-сервис от 1с с другой стороныУже реализована передача данных из 1с в приложение

211
JPA Criteria - like запрос не работает

JPA Criteria - like запрос не работает

Получается запрос вида:

202
Почему я не могу найти конкретное выражения Java

Почему я не могу найти конкретное выражения Java

Без Pattern данные выводятся такие: USD 27827 28

160
Сравнение объектов оператором == в Java. Integer vs int

Сравнение объектов оператором == в Java. Integer vs int

Для сравнения объектов в Java используется метод equals(), но что если сравниваются между собой два объекта-обертки для примитивных типов:

212