為什么阿里會推薦所有的局部變量使用基本數(shù)據(jù)類型?
Java中共有三種變量,分別是類變量、成員變量和局部變量。他們分別存放在JVM的方法區(qū)、堆內(nèi)存和棧內(nèi)存中。
public class Variables {/*** 類變量*/private static int a;/*** 成員變量*/private int b;/*** 局部變量* @param c*/public void test(int c){int d;}}
上面定義的三個變量中:
變量a就是類變量,存放在方法區(qū),線程共享。
變量b就是成員變量,隨著對象一起存放在堆內(nèi)存,線程共享。
變量c和d是局部變量,存放在棧內(nèi)存,線程獨享。
也就是說,變量a和b是共享變量,變量c和d是非共享變量。
即局部變量是非共享變量,作用域只在方法內(nèi)部,并不會逃逸到方法外。
那么,既然是一個作用域只在方法內(nèi)的變量,不需要考慮那么多,怎么性能高怎么定義,怎么方便使用怎么定義。
我們都知道在Java語言中,new一個對象是存儲在堆里的,我們通過棧中的引用來使用這些對象;所以,對象本身來說是比較消耗資源的。
對于經(jīng)常用到的類型,如int等,如果我們每次使用這種變量的時候都需要new一個Java對象的話,就會比較笨重。
所以,和C++一樣,Java提供了基本數(shù)據(jù)類型,這種數(shù)據(jù)的變量不需要使用new創(chuàng)建,他們不會在堆上創(chuàng)建,而是直接在棧內(nèi)存中存儲,因此會更加高效。
評論
圖片
表情
