爲何阿里會推薦全部的局部變量使用基本數據類型?

Java中共有三種變量,分別是類變量、成員變量和局部變量。他們分別存放在JVM的方法區、堆內存和棧內存中。程序員

public class Variables {

    /**
     * 類變量
     */
    private static int a;

    /**
     * 成員變量
     */
    private int b;

    /**
     * 局部變量
     * @param c
     */
    public void test(int c){
        int d;
    }
}
複製代碼

上面定義的三個變量中:面試

變量a就是類變量,存放在方法區,線程共享。性能

變量b就是成員變量,隨着對象一塊兒存放在堆內存,線程共享。spa

變量c和d是局部變量,存放在棧內存,線程獨享。線程

也就是說,變量a和b是共享變量,變量c和d是非共享變量。3d

即局部變量是非共享變量,做用域只在方法內部,並不會逃逸到方法外。code

那麼,既然是一個做用域只在方法內的變量,不須要考慮那麼多,怎麼性能高怎麼定義,怎麼方便使用怎麼定義。cdn

咱們都知道在Java語言中,new一個對象是存儲在堆裏的,咱們經過棧中的引用來使用這些對象;因此,對象自己來講是比較消耗資源的。對象

對於常常用到的類型,如int等,若是咱們每次使用這種變量的時候都須要new一個Java對象的話,就會比較笨重。內存

因此,和C++同樣,Java提供了基本數據類型,這種數據的變量不須要使用new建立,他們不會在堆上建立,而是直接在棧內存中存儲,所以會更加高效。

歡迎關注公衆號:程序員面試現場

相關文章
相關標籤/搜索