其实这是一个迷惑人的地方,我们直接看示例以及书中的介绍即可
需要说明的Java中的传递,是值传递,而这个值,实际上是对象的引用并不是内容
另外要说明的是我们开发中需要注意基本类型以及包装类的区别,如int Integer,核心关注点有2个:
1.int默认值为0 Integer默认值为null
2.最佳实践:局部变量用int RPC调用dto要用Integer包装类便于null情况的复现 (通常null是有业务含义的 哪怕是代表异常)
代码:
package com.wonders.test;
import lombok.Data;
/**
* @author huangweiyue
* @version v1.0
* @task
* @description 值传递
* @date Created in 2019-06-07
* @modifiedBy
*/
public class ValueDeliverTest {
public static void main(String[] args) {
Circle circle = new Circle(2);
System.out.println("引用类型before:"+circle);
changeCircleRValue(circle);
System.out.println("引用类型after:"+circle);
int a=1;
System.out.println("int基本类型before:"+a);
changeIntValue(a);
System.out.println("int基本类型after:"+a);
Integer b=3;
System.out.println("Integer基本类型before:"+b);
changeIntegerValue(a);
System.out.println("Integer基本类型after:"+b);
}
private static void changeCircleRValue(Circle circle){
//code1 输出2
circle=new Circle(3);
//code2 输出3
//circle.setR(3);
}
/**
* int基本类型
* @param value
*/
private static void changeIntValue(int value){
value=2;
}
/**
* Integer包装类
* @param value
*/
private static void changeIntegerValue(Integer value){
value=4;
}
}
@Data
class Circle {
/**
* 半径
*/
private int r;
public Circle(int r) {
this.r = r;
}
}
输出:
资料参考: