Почему Али рекомендует, чтобы все локальные переменные использовали базовые типы данных?

Java

В Java есть три типа переменных, а именно переменные класса, переменные-члены и локальные переменные. Они хранятся в области методов, памяти кучи и памяти стека JVM соответственно.

public class Variables {

    /**
     * 类变量
     */
    private static int a;

    /**
     * 成员变量
     */
    private int b;

    /**
     * 局部变量
     * @param c
     */
    public void test(int c){
        int d;
    }
}

Из трех переменных, определенных выше:

Переменная a — это переменная класса, которая хранится в области методов и совместно используется потоками.

Переменная b является переменной-членом, которая хранится в памяти кучи вместе с объектом и совместно используется потоками.

Переменные c и d являются локальными переменными, хранящимися в памяти стека и совместно используемыми исключительно потоками.

То есть переменные a и b являются общими переменными, а переменные c и d не являются общими переменными.

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

Затем, поскольку это переменная, область действия которой находится только внутри метода, нет необходимости так много думать, как определить ее для высокой производительности и как определить ее для удобного использования.

Все мы знаем, что в языке Java новый объект хранится в куче, и мы используем эти объекты через ссылки в стеке, поэтому сам объект более ресурсоемкий.

Для часто используемых типов, таких как int, если нам нужно создавать новый объект Java каждый раз, когда мы используем эту переменную, это будет громоздко.

Поэтому, как и C++, Java предоставляет базовые типы данных, переменные этих данных не нужно создавать с помощью new, они будут создаваться не в куче, а храниться непосредственно в памяти стека, так будет эффективнее.

Добро пожаловать на официальный аккаунт: сцена интервью с программистом