描述
之前有做過測試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