Java方法参数(三)

所以经过以上的例子,有些人可能认为java是按引用调用的,实际上这种理解是不对的。下面举出一个反例:

编写一个交换两个雇员对象的方法:

public static void swap(Employee x, Employee y)
{
        Employee temp = x;
        x = y;
        y = temp;

}
如果是按引用调用的那么应该可以实现对换数据的效果:

Employee a = new Employee("Alice"...);
Employee b = new Employee("Bob"...);
swap(a,b);

但是,并没有改变存储在变量a和b中的对象引用,swap方法其实交换的是 方法中的xy的引用,也就是a和b的拷贝。 对于方法外的ab是没有影响的


这个过程说明了java对对象采用的也不是按引用调用,也是按值调用的。

总结java中方法参数的使用情况:

1.一个方法不能修改一个基本数据类型的参数。

2.一个方法可以改变一个对象参数的状态。(比如修改这个对象中的某个属性值)

3.一个方法不能让对象参数引用一个新的对象。(这句话我的理解是不管你在函数中怎么折腾传进来的那个对象的引用,函数结束了之后对外面都没什么效果,当然了,如果修改了引用对象内的属性,那就属于情况2的情况了。这句话是对交换的例子的总结)


总之,java是按照传值调用的,而不是引用,希望以上的例子和解释能给新手或者对这部分不太清楚的同学们些帮助,如果有不恰当的地方,还请指教。

谢了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
方法参数校验是一种保证代码正确性和安全性的重要手段,可以有效避免不必要的错误和漏洞。在 Java 中,可以使用一些开源的参数校验框架来实现方法参数校验,如: 1. Hibernate Validator:是一个基于 JSR 380 标准的参数校验框架,支持常用的校验注解,如@NotNull、@Size、@Email、@Pattern 等,可以通过在方法参数上添加注解来进行参数校验。 2. Apache Commons Validator:是一个 Apache 组织开源的校验框架,支持多种校验器,如 EmailValidator、CreditCardValidator、DateValidator 等,可以通过在方法中调用相应的校验器来进行参数校验。 3. Spring Validation:是 Spring 框架中的参数校验框架,支持 JSR 380 标准的注解,并且提供了一些扩展注解,如@NotBlank、@Range、@Valid 等,可以通过在方法参数上添加注解来进行参数校验。 以上参数校验框架都是比较常用的,可以根据自己的需求选择使用。在实际开发中,为了保证代码的可读性和可维护性,通常建议将参数校验的逻辑封装在一个单独的方法中,如: ``` public void doSomething(String param1, int param2) { checkParam1(param1); checkParam2(param2); // do something with param1 and param2 } private void checkParam1(String param1) { if (param1 == null || param1.isEmpty()) { throw new IllegalArgumentException("param1 is required"); } // other checks if necessary } private void checkParam2(int param2) { if (param2 < 0) { throw new IllegalArgumentException("param2 must be positive"); } // other checks if necessary } ``` 这样可以将参数校验和业务逻辑分离,使代码更加清晰明了。同时,也可以通过单元测试来验证参数校验的正确性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值