class Test { static void fn(int a) // Java 中基本类型有引用传值吗? 若没有的话,形参的 final int a 这种形式有什么意义? { a=9; } public static void main(String[] args) { int b=0; fn(b); System.out.println(b); } }
final int a在什么地方定义的啊 ================================= 我只是没写出来而已 static void fn(final int a) // Java 中基本类型有引用传值吗? *************************************************************************我觉得既然在方法返回时无效,那这就是多余的。 给形参加 final 无非是不想改变实参 的作用
static void fn(final int a) // Java 中基本类型有引用传值吗? ---------------------------------------------------- 防止a的值被改变,例如:如果在函数中写a=9,那么编译肯定无法通过,相当于现在a已经是一个常量了,和static void fn(final int a) { final int b=0;//和这个b效果一样,都表示常量 }
是防止在方法中被改变了,而在方法的其他地方只希望使用原始值,如 static void fn(int a) { a=5;//改变了,如果是常量,那么这里编译将不能通过 ……//若干条语句之后 int b=1/a;//这里我的a本来想用参数a,却在疏忽之中使用了改便之后的值,编译阶段无法发觉。 }
在你的程序中没有什么意义楼上的已经分析了
=================================
我只是没写出来而已
static void fn(final int a) // Java 中基本类型有引用传值吗? *************************************************************************我觉得既然在方法返回时无效,那这就是多余的。 给形参加 final 无非是不想改变实参 的作用
防止a的值被改变,例如:如果在函数中写a=9,那么编译肯定无法通过,相当于现在a已经是一个常量了,和static void fn(final int a) {
final int b=0;//和这个b效果一样,都表示常量
}
static void fn(int a) {
a=5;//改变了,如果是常量,那么这里编译将不能通过
……//若干条语句之后
int b=1/a;//这里我的a本来想用参数a,却在疏忽之中使用了改便之后的值,编译阶段无法发觉。
}