[Java] final的故弄玄虚=====哈哈哈哈======当你在方法中不需要改变作为参数 →→→→→进入此内容的聊天室

来自 , 2019-07-07, 写在 Java, 查看 122 次.
URL http://www.code666.cn/view/2c89109d
  1. package fengke.finalandstatic;
  2. /**
  3.  * final的故弄玄虚=====哈哈哈哈======当你在方法中不需要改变作为参数的对象变量时,明确使用final进行声明,会防止你无意的修改而影响到调用方法外的变量
  4.  * @author 锋客
  5.  * 上面这段代码好像让人觉得用final修饰之后,就不能在方法中更改变量i的值了。
  6.  * 殊不知,方法changeValue和main方法中的变量i根本就不是一个变量,
  7.  * 因为java参数传递采用的是值传递,对于基本类型的变量,相当于直接将变量进行了拷贝。
  8.  * 所以即使没有final修饰的情况下,在方法内部改变了变量i的值也不会影响方法外的i。
  9.  * 注意:拷贝
  10.  */
  11.  
  12. public class FinalParam2 {
  13.         public static void main(String[] args)  {
  14.         MyClass_2 myClass = new MyClass_2();
  15.         int i=0;
  16.         myClass.changeValue(i);
  17.         System.out.println(i);
  18.     }
  19. }
  20.  
  21. //class MyClass_2{
  22. //      void changeValue(final int i){
  23. //              i++;
  24. //      }
  25. //}
  26. class MyClass_2{
  27.         void changeValue( int i){
  28.                 i++;
  29.         }
  30. }

回复 "final的故弄玄虚=====哈哈哈哈======当你在方法中不需要改变作为参数"

这儿你可以回复上面这条便签

captcha