Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以重新分配Java最终引用_Java - Fatal编程技术网

可以重新分配Java最终引用

可以重新分配Java最终引用,java,Java,我已经了解到最后一个关键字意味着引用无法更改。 如果关键字不能被重新分配,为什么这可以工作 for(int i =0;i<10;i++){ final TextView tv = new TextView(); } 它起作用了 final Object obj = new SomeThing(); obj.setAttribute() 我想知道关键字final是用来描述 引用或它引用的对象。变量存在于中,由大括号{和}分隔 变量tv在for块的范围内。每次循环执行时,都会再次创建变量

我已经了解到最后一个关键字意味着引用无法更改。 如果关键字不能被重新分配,为什么这可以工作

for(int i =0;i<10;i++){
final TextView tv = new TextView();
}
它起作用了

final Object obj = new SomeThing();
obj.setAttribute() 
我想知道关键字
final
是用来描述 引用或它引用的对象。

变量存在于中,由大括号
{
}
分隔


变量
tv
for
块的
范围内。每次循环执行时,都会再次创建变量。没有一个最终变量被重新分配;相反,每次循环运行时都会创建变量。

final for objects意味着一旦声明为final的对象不能使用new关键字重新初始化。但是,它不会阻止您修改对象属性。此外,一旦指定了最终参照,就不能将其指向其他对象

对于像int这样的文本,这意味着一旦该文本被初始化,它的值就不能被修改

  • 循环的案例:

    变量仅在
    for
    -循环的
    主体内有效

    因此,只要在体内只执行一次,就可以在循环中重新分配它

  • 大小写-
    .setAttribute

    final
    表示您不能更改对象的引用(例如。
    obj=…

    但它不会使对象不可变(如C++中的
    const


  • 它标志着参考。在
    for
    循环中,不能在声明的范围内重新分配它。也就是说,如果你试图在声明行后面的
    tv
    中放入一些内容,它将不会起作用。@realponsignist这太好了。我知道了。所以退出作用域时会破坏
    tv
    ,循环运行时会再次创建again@Samin是的。
    final Object obj = new SomeThing();
    obj.setAttribute()