今天犯了一个超低级的错误,在方法中基础类型作为参数时,值是不能改变的。
public void changePassForIntelligentAttendance(YMachine machine,int pass) { if(machine.getIntelligentAttendance() == 1) { pass = 0; } }
真是蛋蛋疼,之前用对象做参数改改改习惯了,今天顺手用基础类型作为参数去改,全然忘记了这个java的基础知识。
无论是基本类型作为参数传递,还是java对象作为参数传递,实际上传递的都是值。方法被使用时会创建一个引用的副本,相当于引用的复制体,他们指向的对象是一样的,所以即使你改变参数的值,也没有改变参数原引用的指向。