Java基础系列--h5斗牛源码出售、finally关键字
2018-02-28 15:24
232 查看
final是Java关键字中最常见之一,h5斗牛源码出售 官网:h5.super-mans.com 企娥:2012035031 vx和tel:17061863513 h5斗牛源码出售表示“最终的,不可更改”之意,在Java中也正是这个意思。 有final修饰的内容,就会变得与众不同,它们会变成终极存在,其内容成为固定的存在。 finally关键字不同于final关键字,这是一个需要与异常体系结构配合使用的关键字,旨在定义必须要进行操作,一般用于在发生异常的时候进行一些收尾操作。二、final作用2.1 final修饰变量 变量被final修饰就会变成为常量,常量被保存在方法区中。 变量一旦被final修饰,必须手动进行初始化,未进行初始化的final常量是无法通过编译的。 如果只有final修饰的变量的初始化可以采用: --定义时赋值 --代码块赋值 --构造器赋值 如果被static和final同时修饰的变量的初始化可以采用: --定义时赋值 --静态代码块赋值 一旦final变量被static修饰,那么它就脱离了对象的组织(代码块、构造器都是对象的组织),升级为类的组织,所以需要在类级别的静态代码块中进行初始化。
如果将上面的代码改成:
如果去掉第2行的final,第5行就会报错。 2.5 final修饰方法参数 如果方法的参数被final修饰,那么这个参数的值在从方法调用时赋值开始就不能再改变,不能被重新赋值(不能改成他值)。
finally块中的语句是一定会被执行的,无论是否会发生异常,重点:这里的异常指的是在try块中的部分,如果实在try块之前发生了异常,还没来得及执行try块语句,那么finally块中的内容也不会被执行,所以finally针对的是try块中的内容而设的。 如果在try块或catch块中存在return语句,那么,finally块中的内容必然会在return之前执行。 finally经常用于发生异常的情况下关闭打开的资源,比如io流,网络资源等
1 public class FinalTest { 2 final int i = 1; 3 int j = 2; 4 static int m = 3; 5 static final int n = 4; 6 }或
1 public class FinalTest { 2 final int i; 3 int j; 4 static int m; 5 static final int n; 6 { 7 i = 1; 8 } 9 static { 10 n = 3; 11 } 12 }
如果将上面的代码改成:
1 public class FinalTest { 2 final int i; 3 int j; 4 static int m; 5 static final int n; 6 }上面代码第2行和第5行会报错,原因就是未进行初始化。 那么我们总结下final和static的现象,用于区分二者: static修饰将内容脱离对象成为类成员。 final修饰将内容改造成必须被手动初始化的成员,一旦赋值,不再改变。 二者可以同时存在,各起各的作用。2.2 final修饰方法 被final修饰的方法,可以被子类继承,但是不能被子类重写,也就是说这个方法在此以后其内部的实现就是固定不变的了,不能被改变。2.3 final修饰类 被final修饰的类,被称之为最终类,其不再拥有子类,不可再进行扩展,最常见的final类就是String类。 String类被final修饰之后,其每个对象都是不变的,一旦定义就不再发生改变。2.4 final修饰局部变量 final修饰的局部变量,该变量就不再是保存在栈空间中,而是保存在方法区中,不会随方法结束而失效,放大了局部变量的生命周期。 最常使用的地方就是局部内部类在访问方法的局部变量的情况下,这些局部变量就需要使用final修饰,因为当局部内部类访问局部变量时,会放大局部变量的作用域,局部变量一般在方法结束时就失效了,但是却有可能任然被内部类的对象持有使用。将该局部变量定义为final之后,它不再保存于栈空间,而是保存在方法区中,自然不会因为方法的结束而丢失。
1 public void outMethod(){ 2 final int s = 1; 3 class innerClass{ 4 public void innerMethod(){ 5 System.out.println(s); 6 } 7 } 8 }
如果去掉第2行的final,第5行就会报错。 2.5 final修饰方法参数 如果方法的参数被final修饰,那么这个参数的值在从方法调用时赋值开始就不能再改变,不能被重新赋值(不能改成他值)。
1 public void outMethod(final int s){ 2 // s = 1; 3 }如上代码,方法参数s为final的,那么若去掉第2行的代码,为s重新赋值,则会报错。三、finally作用 finally只有一种用法,那就是在try...catch..语句末尾使用。语法如下:
1 try{ 2 //someExecute 3 }catch(Execption e){ 4 //someExecute 5 }finally{ 6 //someExecute 7 }
finally块中的语句是一定会被执行的,无论是否会发生异常,重点:这里的异常指的是在try块中的部分,如果实在try块之前发生了异常,还没来得及执行try块语句,那么finally块中的内容也不会被执行,所以finally针对的是try块中的内容而设的。 如果在try块或catch块中存在return语句,那么,finally块中的内容必然会在return之前执行。 finally经常用于发生异常的情况下关闭打开的资源,比如io流,网络资源等
相关文章推荐
- Java基础系列--final、finally关键字
- 大数据Java基础系列-static关键字
- Java_基础—finally关键字的特点及作用
- 大数据Java基础系列-static关键字
- Java基础研究系列之-static关键字你不知道的东西
- 大数据Java基础系列-static关键字
- 大数据Java基础系列-static关键字
- 拥抱.NET Core系列:h5斗牛平台出售MemoryCache 缓存过期
- java基础系列--volatile关键字
- Java基础系列--this、super关键字
- java基础解析系列(十)---ArrayList和LinkedList源码及使用分析
- Java基础系列(十一)关键字、内部类、修饰符
- .NET Core跨平台的奥秘h5房卡斗牛源码出售:全新的布局
- Java面试系列【final、finally、finalize区别】-finalize是什么,基础篇
- java夯实基础系列:深入理解static、final关键字
- 大数据Java基础系列-static关键字
- Java编程基础--关键字【知识体系构建系列】
- 大数据Java基础系列-static关键字
- Java基础系列--static关键字
- 大数据Java基础系列-static关键字