爲什麼說java只有值傳遞呢。 從傳遞方式上來說,值傳遞是對值copy,傳遞後就互不相關了;而java的引用傳遞是對象引用的copy,傳遞後引用值是否改變也互不相關了。
基礎數據類型(4類8種):
- 整型:byte,short,int,long
- 浮點型:float,double
- 字符型:char
- 布爾型:boolean
引用類型: 數組,類, 接口。
看個例子:
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("java");
test1(sb);
System.out.println(sb.toString()); // 結果: avaj
test2(sb);
System.out.println(sb.toString()); // 結果: avaj
}
public static void test1(StringBuilder sb){
// 不改變引用值,操作對象內容,方法外的對象也被影響到。
sb.reverse();
}
public static void test2(StringBuilder sb){
// 直接改變引用值,方法外的對象無影響, 所以說java的引用傳遞本質也值傳遞。
sb = new StringBuilder("php");
}