package fengke.finalandstatic; /** * final的故弄玄虚=====哈哈哈哈======当你在方法中不需要改变作为参数的对象变量时,明确使用final进行声明,会防止你无意的修改而影响到调用方法外的变量 * @author 锋客 * 上面这段代码好像让人觉得用final修饰之后,就不能在方法中更改变量i的值了。 * 殊不知,方法changeValue和main方法中的变量i根本就不是一个变量, * 因为java参数传递采用的是值传递,对于基本类型的变量,相当于直接将变量进行了拷贝。 * 所以即使没有final修饰的情况下,在方法内部改变了变量i的值也不会影响方法外的i。 * 注意:拷贝 */ public class FinalParam2 { public static void main(String[] args) { MyClass_2 myClass = new MyClass_2(); int i=0; myClass.changeValue(i); System.out.println(i); } } //class MyClass_2{ // void changeValue(final int i){ // i++; // } //} class MyClass_2{ void changeValue( int i){ i++; } }