final 和 finally你知道多少?

一:java 里面的 final 类型修饰符

(0)finally 虽然在英语语法上是final的adv.形式,两者非常相似,但是java的应用环境却大不相同的。

(1)final类

final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确

信这个类不会再被扩展,那么就设计为final类。 final方法不能被子类的方法覆盖,但可以被继承。

(2)final方法

如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。使用final方法的原因有二:

第一、把方法锁定,防止任何继承类修改它的意义和实现。

第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

(3)final变量(常量)

用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变!

final修饰的变量有三种:静态变量(static 属于类的)、实例变量(属于类对象的)和局部变量,分别表示三种类型的常量。

从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。

另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

(4)final参数

当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

注:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

final不能用于修饰构造方法。

示例:

public void f1(final int i){ } //i是final类型的,值不允许改变的.

总之,一句话说明里了,学过c++的朋友,会知道非常类似c++ 里卖弄的const 类型修饰符

二:JAVA中的finally语句块

(1) 应用在 try ^ catch ^ finally 异常处理中

finally在异常处理时提供finally块来执行所有清除操作。主要与try-catch-finally配合使用。

(2)finally语句块的作用

无论出现什么情况,finally块中的语句一定会被执行,并且是在return之前执行。

根据JAVA规范,如果try-finally或者catch-finally中都有return,则2个return

都执行并最终返回调用者那里的是finally中的return,如果finally中没有return则返回的是catch中的return,但是finally中的代码也是要执行的。

(3)finally 虽然在英语语法上是final的adv.形式,两者非常相似,但是java的应用环境却大不相同的。

(4)try ^ catch ^ finally 异常处理中详解点击

(5) 有人可能还会问,我经常见到 如下形式 :

public void static main(String[] args){ } ,这是类的静态方法,也是一个工程的主函数入口

private final static String MyURL = "www.baidu.com/";  这是声明的类的类似全局常量一样

三:综述

(1)虽然在Java中都存在,但是并没有太多关联:final:java中的关键字,修饰符。

1.如果一个类被声明为final,就意味着它不能再派生出新的子类,不能作为父类被继承。因此,一个类不能同时被声明为absrtact抽象类的和final的类。

2.如果将变量或者方法声明为final,可以保证它们在使用中不被改变.

2.1 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。

2.2被声明final的方法只能使用,不能重载。

(2)finally:java的一种异常处理机制。

finally是对Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率

时间: 2025-01-31 07:43:53

final 和 finally你知道多少?的相关文章

final

在JAVA中,继承提高的代码的复用性,但是随之而来的,也产生一个弊端,即打破了"封装性",比如父类可以被子类复写,代码的安全性降低了. 在实际工作中,为了提高安全性,避免有的数据被继承复写或修改,这就要用到final进行修饰. final,其字面意思含义是"最终",表示已到终点,不能被改变.继承 1.可以修饰类.函数.变量 2.被final修饰的类(可以称为最终类),不可以被继承,被复写. 3.被final修饰的函数,不可以被复写. 4.被final修饰的变量是一个

R:incomplete final line found by readTableHeader on

报错: In read.table("abc.txt", header = T) :  incomplete final line found by readTableHeader on 'abc.txt' 解决方法: 在数据文件abc.txt最后一行加上回车即可解决.

final使用

final修饰  基本数据类型时候   对应的 数据不能改变:::final修饰 对象类型 ,那么对应的引用地址不能改变(对象中的值可以改变): 如果final修改方法,那么该方法不能被子类重写 ::::  如果修饰类,那么该类就是最终类,不能被继承. 如果final 修改对象中 成员变量,那么这个变量不能被set(不能再级再进行赋值操作)

PHP 面向对象中常见关键字使用(final、static、const和instanceof)

PHP 面向对象中常见关键字的使用: 00x1.Final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用final标识的成员方法,在子类中不能覆盖. 总结:final表示为最终的意思,所以使用final关键字的类或者类中的成员方法是不能被更改的. 00x2.Static :static关键字将类中的成员属性或者成员方法标识为静态的,static标识的成员属性属于整个类,static成员总是唯一存在的,

JAVA之旅(七)——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展

JAVA之旅(七)--final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展 OK,我们继续学习JAVA,美滋滋的 一.final 我们来聊聊final这个关键字 final可以修饰类,方法和变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量,只能被赋值一次 内部类只能访问被final修饰的局部变量 final,故名思意,就是最终的意思,由以上的五种特性,不过final的出现,也是有

浅析Java中的final关键字

原文出处: 海子 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正. 一.final关键字的基本用法 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量).下面就从这三个方面来了解一下final关键字

[转][C++ 11]override and final - write clean and maintainable C++ code

原文: http://arne-mertz.de/2015/12/modern-c-features-override-and-final/ Today I write about a pair of less often discussed, less complicated features introduced in C++11, which are nevertheless useful. Both can provide some additional security and cla

【Java基础】final关键字总结

Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例.final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的. final关键字的含义? final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如

浅析final finally finalize

1.final final修饰类,说明这个类不能被继承,是个顶级类. final修饰变量,说明这个变量是常量,初始化后不能再改. fianl修饰方法,表示这个方法不能被重写,不过可以重载final修饰的方法.(常见的final方法是object类中的wait(),notify()方法) 2.finally finally是关键字,在异常处理中,try字句中执行需要运行的内容,catch字句中用于捕获异常,finally字句表示不管是否发生异常,都会执行.finally可有可无.但是try....

为什么匿名类中使用局部变量时要声明为final呢

一个方法内部有两个线程共享内部类对象的时候,这个方法的局部变量如果能被访问, 则就成为临界资源,导致程序不稳定,所以必须是final的. 反正总而言之,java就是不允许你在局部内部类里面更改所在方法的局部变量就是了 public class MyBase { public AnoClass func(final int i){                 return new AnoClass(){                         int j=i;