final boolean [] test = { true };
就有些迷惑:final关键字在这有什么意义?加上final,数组的值依然是可以更改的;数组只有一个元素,为什么不直接用 boolean test = true? 恳请解惑
可以用于引用传递
可以在匿名函数里调用又能修改其值
final关键字可以用来修饰引用、方法和类。
1、用来修饰一个引用
如果引用为基本数据类型,则该引用为常量,该值无法修改;
如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。
如果引用时类的成员变量,则必须当场赋值,否则编译会报错。
没有实际的业务场景说明,我只能认为这串代码是没有意义的。
根据项目实际需求吧,默认为true的话,用boolean test = true也可以。既然这里用了数组的形式说明有需要的话还是可以给数组里面在加上false这个元素的。
至于用final的话,应该是为了确保一致性吧。让引用变量test一直指向初始数组,也就无法再让它指向一个新的数组。
1、 final boolean [] test = { true } 与 final boolean test = true 的区别。
数组test 赋值的是数组对象的地址值,而布尔 test是基本类型 所以赋值的是值。
如果被final 修饰,数组test 赋值的数组地址值不可变 ,但是数组中的元素是可以通过下标进行修改的。
但是final 修饰 布尔 test ,其值不可变,也就是说test的值在赋值后就不能在修改。
如果在stream 流编程中使用了该对象或者需要做修改,或者stream 流内外也使用并stream 外做了修改,这时 final boolean [] test = { true } 是最好的选择。
需要看下具体业务需要,这一句话没有什么意义
比如这么问
比如long num = 10;
为什么用long类型定义,而不用int定义,整形默认就是int的。业务可能产生的数据num经过计算会很大