目录
基本概念
最近的系统中,Java程序和C++程序混着,很多程序都是用Java搞的,不得不稍微研究下Java的细节,其中很关键的一点,就是如何在Java中传引用,因为要接收一些值,在代码中试了,用&这个玩意是没有效果的。
下面给出Java程序中函数传参数,哪个是传值,
这里发现,如果是基本数据类型:int这种,都是传值。
而自己写的Class为传地址过去,
Integer和String在封装后,里面有个final,这样实际是传地址,但赋值的时候,却创建了个新的。
代码与实例
程序运行截图如下:
源码如下:
public class Main {
public static void main(String args[]) {
int intFunctionValue = 100;
intFunction(100);
System.out.println("Main functionValue : " + intFunctionValue);
System.out.println("---------- 华丽的分割线 ----------");
Integer IntegerFunctionValue = new Integer(100);
IntegerFunction(IntegerFunctionValue);
System.out.println("Main IntegerFunction : " + IntegerFunctionValue);
System.out.println("---------- 华丽的分割线 ----------");
Struct struct = new Struct();
struct.setAge(17);
struct.setName("heheda");
ClassFunction(struct);
System.out.println("Main ClassFunction : " + struct);
System.out.println("---------- 华丽的分割线 ----------");
}
static void intFunction(int value){
value = 200;
System.out.println("intFunction value : " + value);
}
static void IntegerFunction(Integer value){
value = 200;
System.out.println("IntegerFunction value : " + value);
}
static void ClassFunction(Struct value){
value.setAge(18);
value.setName("Hello World");
System.out.println("ClassFunction value : " + value);
}
static class Struct{
private Integer age;
private String name;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Struct{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
}
源码打包下载
地址如下:https://github.com/fengfanchen/Java/tree/master/FunctionParament