String變量應該定義在方法外還是方法內

描述

之前有做過測試String變量定義在方法外和方法內地址是一樣的。但是時間久了,自己又懷疑了,所以開了這篇博客,記錄下

結果

變量定義在方法內與方法外是一樣的,測試代碼如下

測試代碼

代碼

/**
 * @author :renpan
 * @version :v1.0
 * @class :com.luomo.shopping
 * @date :2016-04-01 10:30
 * @description:測試類
 */
public class Test {
    public static void main(String[] args) {
        String st="123";
        //---調用一般方法
        new Test().stringParameter("0");
        new Test().stringParameter("1");
        new Test().stringParameter("1");
        new Test().stringParameter("2");
        new Test().stringParameter(st);
        new Test().stringParameter(st);
        //---調用靜態方法
        staticStringParameter("0");
        staticStringParameter("1");
        staticStringParameter("1");
        staticStringParameter("2");
        staticStringParameter(st);
        staticStringParameter(st);
    }
    //---一般方法
    private String fs;
    private void stringParameter(String st) {
        System.out.println("Test.stringParameter----------傳入的參數值:"+st);
        System.out.println("Test.stringParameter 傳入的參數地址:"+st.hashCode());
        String ps = st;
        System.out.println("Test.stringParameter 方法中變量地址:"+ps.hashCode());
        fs = st;
        System.out.println("Test.stringParameter 全局變量地址:"+fs.hashCode());
    }
    //---靜態方法
    private static String sfs;//static field string
    private static void staticStringParameter(String st) {
        System.out.println("Test.staticStringParameter----------傳入的參數值:"+st);
        System.out.println("Test.staticStringParameter 傳入的參數地址:"+st.hashCode());
        String sps = st;//static parameter string
        System.out.println("Test.staticStringParameter 方法中變量地址::"+sps.hashCode());
        sfs = st;
        System.out.println("Test.staticStringParameter 全局變量地址::"+sfs.hashCode());
    }
}

輸出信息

Test.stringParameter----------傳入的參數值:0
Test.stringParameter 傳入的參數地址:48
Test.stringParameter 方法中變量地址:48
Test.stringParameter 全局變量地址:48
Test.stringParameter----------傳入的參數值:1
Test.stringParameter 傳入的參數地址:49
Test.stringParameter 方法中變量地址:49
Test.stringParameter 全局變量地址:49
Test.stringParameter----------傳入的參數值:1
Test.stringParameter 傳入的參數地址:49
Test.stringParameter 方法中變量地址:49
Test.stringParameter 全局變量地址:49
Test.stringParameter----------傳入的參數值:2
Test.stringParameter 傳入的參數地址:50
Test.stringParameter 方法中變量地址:50
Test.stringParameter 全局變量地址:50
Test.stringParameter----------傳入的參數值:123
Test.stringParameter 傳入的參數地址:48690
Test.stringParameter 方法中變量地址:48690
Test.stringParameter 全局變量地址:48690
Test.stringParameter----------傳入的參數值:123
Test.stringParameter 傳入的參數地址:48690
Test.stringParameter 方法中變量地址:48690
Test.stringParameter 全局變量地址:48690
Test.staticStringParameter----------傳入的參數值:0
Test.staticStringParameter 傳入的參數地址:48
Test.staticStringParameter 方法中變量地址::48
Test.staticStringParameter 全局變量地址::48
Test.staticStringParameter----------傳入的參數值:1
Test.staticStringParameter 傳入的參數地址:49
Test.staticStringParameter 方法中變量地址::49
Test.staticStringParameter 全局變量地址::49
Test.staticStringParameter----------傳入的參數值:1
Test.staticStringParameter 傳入的參數地址:49
Test.staticStringParameter 方法中變量地址::49
Test.staticStringParameter 全局變量地址::49
Test.staticStringParameter----------傳入的參數值:2
Test.staticStringParameter 傳入的參數地址:50
Test.staticStringParameter 方法中變量地址::50
Test.staticStringParameter 全局變量地址::50
Test.staticStringParameter----------傳入的參數值:123
Test.staticStringParameter 傳入的參數地址:48690
Test.staticStringParameter 方法中變量地址::48690
Test.staticStringParameter 全局變量地址::48690
Test.staticStringParameter----------傳入的參數值:123
Test.staticStringParameter 傳入的參數地址:48690
Test.staticStringParameter 方法中變量地址::48690
Test.staticStringParameter 全局變量地址::48690
發佈了46 篇原創文章 · 獲贊 19 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章