首先Java 中只有值传递,这是毋庸置疑的!!
1> 基本数据类型属于值传递 : Byte short char int long float double boolean
2> 引用数据类型 :接口 类 数组 String StringBulider
其次,不管是值传递还是引用传递都是传递的变量副本.
但是,String 传递给形参会改变这个这个地址值. 所以输出后对原来所指向的地址值并没有影响.
package Transfer_Value;
public class Transfer_Test {
public static void main(String[] args) {
int k=100;
value(k);
Integer integer=new Integer(12);
int arr[]={1};
Reference(arr);
In(integer);
String s=new String("BBB");
Strings(s);
System.out.println(s);
System.out.println(k);
System.out.println(integer);
StringBuilder aaa = new StringBuilder("AAA");
foo(aaa);
System.out.println(aaa);
StringBuilder sb = new StringBuilder("iphone");
foo1(sb);
System.out.println(sb);
StringBuilder bbbb = new StringBuilder("BBBB");
app(bbbb);
System.out.println(bbbb);
}
public static void value(int i){
i++;
}
public static void Reference(int arr[]){
arr[0]=100;
}
public static void Strings(String s){
s="AAA";
}
public static void In(Integer i){
i++;
}
static void foo(StringBuilder sb) {
sb = new StringBuilder("ipad");
}
static void foo1(StringBuilder builder) {
builder = new StringBuilder("ipad");
}
static void app(StringBuilder stringBuilder){
stringBuilder.append("ssssssss");
}
}