我们知道在java软件开发中有许许多多的修饰符,有时候我们虽然知道该在什么地方使用,但是可能需要更加了解一下其用法,其具体作用,例如,String的fianl是干什么用的?怎么用呢?有兴趣的朋友可以一起跟小编来看看呀。
String其实很多实用的特性,比如说“不可变性”,这可是工程师精心设计的艺术品,艺术品易碎哦,用final就是拒绝继承,这个应该不是最终原因,但这里权且也当成是一个原因。String类中的成员属性也都几乎都设计成了private final的,这样String就被设计成一个不变类,这样其实有助于共享,提高其性能。可以将字符串对象保存在字符串常量池中可以用来供与字面值相同字符串对象共享。如果String对象是可变的,那么就不能这样共享了,因为一旦对某一个String类型变量引用的对象值改变,将同时改变一起共享字符串对象的其他的String类型变量所引用的对象的值。
String被设计为不变类,其中的offset,value[]都被设计成private final的,这样在多线程时,对String对象的访问是可以保证安全的。java程序语言的许多特性是依赖于不可变的String对象呢。
在了解了final关键字的基本用法之后,下面我们再来看一下final关键字可能容易混淆的地方。比如说类的final变量和普通变量有什么区别呢,我们知道当用final作用于类的成员变量的时候,成员变量(要注意是类的成员变量,局部变量只要保证在使用之前被初始化赋值就行)还必须在定义时或者构造器中进行初始化赋值,要知道final变量一旦被初始化赋值之后,就不能再被赋值了。
被final修饰的引用变量指向的对象内容可变。引用变量被final修饰之后,虽然说不能再指向其他对象了,但是它指向的对象的内容是可变的。
final参数的问题。在实际应用当中,我们除了可以用final修饰成员变量、成员方法、类,还可以修饰参数、如果是某个参数被final修饰了,就代表了该参数是不可改变的。如果在方法中我们修改了该参数,编译器就会提示你:The final local variable i cannot be assigned. It must be blank and not using a compound assignment。
java采用的是值传递,对于引用变量,传递的是引用的值,也就是说让实参和形参同时指向了同一个对象,因此让形参重新指向另一个对象对实参并没有任何影响。
好了,那么以上就是本篇文章的所有内容了,还想了解更多java常见问答知识,记得来关注本站最新消息哦。