Java 方法中的最终变量
在java中,如果一个方法有一个非静态的最终变量,并且如果我多次调用该方法,那么最终变量在每次调用中会有不同的值吗Java 方法中的最终变量,java,access-modifiers,Java,Access Modifiers,在java中,如果一个方法有一个非静态的最终变量,并且如果我多次调用该方法,那么最终变量在每次调用中会有不同的值吗 public void method1(String msg){ final ArrayList<MessageObject> list = method2(msg); // code that uses list (example just prints) } method1("one") method1("two") are t
public void method1(String msg){
final ArrayList<MessageObject> list = method2(msg);
// code that uses list (example just prints)
}
method1("one")
method1("two") are two calls,
如果method2为每个输入返回不同的列表,那么上述代码对于final修饰符是否有效?问题1:在java中,如果一个方法有一个final变量不是静态的,并且如果我多次调用该方法,那么final变量在每次调用中是否可以有不同的值
public void method1(String msg){
final ArrayList<MessageObject> list = method2(msg);
// code that uses list (example just prints)
}
method1("one")
method1("two") are two calls,
回答1:是的,最后一个变量在每次调用中可以有不同的值
问题2:如果method2为每个输入返回不同的列表,那么上述代码对final修饰符有效吗
回答2:我完全不理解这个问题。问题1:在java中,如果一个方法有一个非静态的最终变量,并且如果我多次调用该方法,那么最终变量在每次调用中是否会有不同的值
public void method1(String msg){
final ArrayList<MessageObject> list = method2(msg);
// code that uses list (example just prints)
}
method1("one")
method1("two") are two calls,
回答1:是的,最后一个变量在每次调用中可以有不同的值
问题2:如果method2为每个输入返回不同的列表,那么上述代码对final修饰符有效吗
回答2:我完全不理解这个问题。是的,绝对理解。final只意味着不能为该特定变量分配不同的值
如果通过递归或多线程对该方法进行了多次调用,则这些调用是完全独立的变量。是的,绝对是。final只意味着不能为该特定变量分配不同的值
如果对方法有多个调用,无论是通过递归还是通过多个线程,这些都是完全独立的变量。调用方法时,请考虑函数堆栈-一旦调用方法,变量就是函数堆栈的一部分-一旦调用方法,变量实际上就是函数堆栈的一部分,你的答案1回答了问题2。这只是我正在编写的代码片段+实际上,你的答案回答了问题2。这只是我正在编写的代码片段+1.