当前位置: 首页 > news >正文

胶州家园网站建设山西seo优化

胶州家园网站建设,山西seo优化,北京市建设工程信息网有哪些,成都哪家公司做网站最好典型回答 final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展, final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。 finally 则是 Java 保…

典型回答

final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展, final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。

finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try - finally 或者 try - catch - finally 来进行类似关闭 JDBC 连接、保证 unlock 锁等动作。

finalize 是基础类 java.lang.Object 的一个方法,它的设计目的是保证对象被垃圾收集前完成特定资源的回收。finalize 机制现在已经不推荐使用,并且在 JDK9 开始被标记为 deprecated。

知识扩展

关于 final

final 是一个非访问修饰符,仅适用于变量,方法或类。

final 修饰变量

当使用 final 关键字声明类成员变量或局部变量后,其值不能被再次修改;也经常和 static 关键字一起,作为 类常量 使用。
很多时候会容易把 static 和 final 关键字混淆,static 作用于成员变量用来表示只保存一份副本,而 final 的作用是用来保证变量不可变。
如果 final 变量是引用,这意味着该变量不能重新绑定到引用另一个对象,但是可以更改该引用变量指向的对象的内部状态,即可以从 final 数组或 final 集合中添加或删除元素。最好用全部大写来表示 final 变量,使用下划线来分隔单词。

//一个final成员常量
final int THRESHOLD = 5;
//一个空的final成员常量
final int THRESHOLD;
//一个静态final类常量
static final double PI = 3.141592653589793;
//一个空的静态final类常量
static final double PI;
初始化final变量:

我们必须初始化一个final变量,否则编译器将抛出编译时错误。final 变量只能通过初始化器或赋值语句初始化一次。初始化 final 变量有三种方法:

  • 可以在声明它时初始化 final 变量。这种方法是最常见的。如果在声明时未初始化,则该变量称为空 final 变量。下面是初始化空 final 变量的两种方法。
  • 可以在 instance-initializer 块 或内部构造函数中初始化空的final变量。如果您的类中有多个构造函数,则必须在所有构造函数中初始化它,否则将抛出编译时错误。
  • 可以在静态块内初始化空的 final 静态变量。

这里注意有一个很普遍的误区。很多人会认为 static 修饰的 final常量必须在声明时就进行初始化,否则会报错。但其实则不然,我们可以先使用 static final 关键字声明一个类常量,然后再在静态块内初始化空的 final 静态变量。

何时使用 final 变量 ?

普通变量和 final 变量之间的唯一区别是我们可以将值重新赋值给普通变量;但是对于 final 变量,一旦赋值,我们就不能改变 final 变量的值。因此,final 变量必须仅用于我们希望在整个程序执行期间保持不变的值。

final 修饰类

当使用 final 关键字声明一个类时,它被称为 final 类。被声明为 final 的类不能被扩展(继承)。final 类有两种用途:

  • 一个是彻底防止被继承,因为 final 类不能被扩展。例如,所有包装类如 Integer,Float 等都是 final 类。我们无法扩展它们。
  • final 类的另一个用途是创建一个类似于 String 类的不可变类。只有将一个类定义成为 final 类,才能使其不可变。

Java支持把 class 定义成 final,似乎违背了面向对象编程的基本原则,但在另一方面,封闭的类也保证了该类的所有方法都是固定不变的,不会有子类的覆盖方法需要去动态加载。这给编译器做优化时提供了更多的可能,最好的例子是 String,它就是 final类,Java 编译器就可以把字符串常量(那些包含在双引号中的内容)直接变成 String 对象,同时对运算符 “+” 的操作直接优化成新的常量,因为 final 修饰保证了不会有子类对拼接操作返回不同的值。

final关键字在效率上的作用主要可以总结为以下三点:
  • 缓存:final 配合 static 关键字提高了代码性能,JVM和Java应用都会缓存 final 变量。
  • 同步:final 变量或对象是只读的,可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
  • 内联:使用 final 关键字,JVM会显式地主动对方法、变量及类进行内联优化。

关于 finally

try 关键字最后可以定义 finally 代码块。 finally 块中定义的代码,总是在 try 和任何 catch 块之后、方法完成之前运行。

正常情况下,不管是否抛出或捕获异常 finally 块都会执行。

啥时候 finally 不会被执行 ?

尽管通常编写 finally 代码块是为了这段代码一定被执行到,但是也有一些特殊情况会导致 JVM 不会执行 finally 代码块。

如果操作系统中断了我们的程序,那么 finally 代码块可能就不能被执行。也有很多其他类似的行为导致 finally 代码块不被执行。

调用 System.exit 函数
try {System.out.println("Inside try");System.exit(1);
} finally {System.out.println("Inside finally");
}

结果

 Inside try
调用 halt 函数
try {System.out.println("Inside try");Runtime.getRuntime().halt(1);
} finally {System.out.println("Inside finally");
}

结果

 Inside try
守护线程

如果守护线程刚开始执行到 finally 代码块,此时没有任何其他非守护线程,那么虚拟机将退出,此时 JVM 不会等待守护线程的 finally 代码块执行完成。

Runnable runnable = () -> {try {System.out.println("Inside try");} finally {try {Thread.sleep(1000);System.out.println("Inside finally");} catch (InterruptedException e) {e.printStackTrace();}}
};
Thread regular = new Thread(runnable);
Thread daemon = new Thread(runnable);
daemon.setDaemon(true);
regular.start();
Thread.sleep(300);
daemon.start();

输出

 Inside tryInside tryInside finally
try 代码块中无限循环
try {System.out.println("Inside try");while (true) {}
} finally {System.out.println("Inside finally");
}

try 代码块出现无限循环,且不出现异常,finally 也将永远得不到执行。

常见陷阱

忽视异常

finally 代码块包含返回语句,没有处理未捕获的异常。

try {System.out.println("Inside try");throw new RuntimeException();
} finally {System.out.println("Inside finally");return "from finally";
}

此时,try 代码块中的 RuntimeException 会被忽略,函数返回 "from finally"字符串。

覆盖其他返回语句

如果 finally 代码块中存在返回语句,则 try 和 catch 代码块如果存在返回语句就会被忽略。

try {System.out.println("Inside try");return "from try";
} finally {System.out.println("Inside finally");return "from finally";
}

此段代码总是返回 “from finally” 。

改变 throw 或 return 行为

如果再 finally 代码块中扔出异常,则 try 和 catch 中的异常扔出或者返回语句都将被忽略。

try {System.out.println("Inside try");return "from try";
} finally {throw new RuntimeException();
}

这段代码永远都不会有返回值,总是会抛出 RuntimeException。


文章转载自:
http://swart.c7493.cn
http://vag.c7493.cn
http://antinomy.c7493.cn
http://maypole.c7493.cn
http://manwards.c7493.cn
http://prisere.c7493.cn
http://rattail.c7493.cn
http://outbuild.c7493.cn
http://mull.c7493.cn
http://pourparler.c7493.cn
http://dictaphone.c7493.cn
http://translation.c7493.cn
http://edifying.c7493.cn
http://dislikeable.c7493.cn
http://protectant.c7493.cn
http://shakeout.c7493.cn
http://suzerainty.c7493.cn
http://japonism.c7493.cn
http://smitch.c7493.cn
http://zebrine.c7493.cn
http://hyperspecialization.c7493.cn
http://revealed.c7493.cn
http://shamefaced.c7493.cn
http://litterateur.c7493.cn
http://shutout.c7493.cn
http://bumblebee.c7493.cn
http://autocycle.c7493.cn
http://ichnolite.c7493.cn
http://notochord.c7493.cn
http://erst.c7493.cn
http://nitrous.c7493.cn
http://shortsighted.c7493.cn
http://plumbery.c7493.cn
http://tentaculiform.c7493.cn
http://vietnamese.c7493.cn
http://orology.c7493.cn
http://agrologic.c7493.cn
http://marmap.c7493.cn
http://rosyfingered.c7493.cn
http://dove.c7493.cn
http://sugariness.c7493.cn
http://adolphus.c7493.cn
http://statedly.c7493.cn
http://obligor.c7493.cn
http://salomonic.c7493.cn
http://strapping.c7493.cn
http://phone.c7493.cn
http://indagator.c7493.cn
http://subvention.c7493.cn
http://flunkee.c7493.cn
http://freaky.c7493.cn
http://waldenstrom.c7493.cn
http://impersonally.c7493.cn
http://newish.c7493.cn
http://jinrikisha.c7493.cn
http://neoclassicism.c7493.cn
http://overland.c7493.cn
http://slapstick.c7493.cn
http://putrefacient.c7493.cn
http://reflexology.c7493.cn
http://hispanic.c7493.cn
http://ricin.c7493.cn
http://filtrability.c7493.cn
http://velleity.c7493.cn
http://cretinous.c7493.cn
http://reactively.c7493.cn
http://microtubule.c7493.cn
http://progamete.c7493.cn
http://froggery.c7493.cn
http://crustacean.c7493.cn
http://neglectful.c7493.cn
http://grasp.c7493.cn
http://lyricism.c7493.cn
http://ergonovine.c7493.cn
http://libermanism.c7493.cn
http://xanthium.c7493.cn
http://impiously.c7493.cn
http://gmbh.c7493.cn
http://determinately.c7493.cn
http://evaporator.c7493.cn
http://maximite.c7493.cn
http://dado.c7493.cn
http://bunyan.c7493.cn
http://choora.c7493.cn
http://metallotherapy.c7493.cn
http://underfur.c7493.cn
http://vagotonia.c7493.cn
http://towering.c7493.cn
http://performing.c7493.cn
http://faltering.c7493.cn
http://helminthic.c7493.cn
http://connecter.c7493.cn
http://strongylid.c7493.cn
http://chest.c7493.cn
http://brangus.c7493.cn
http://oval.c7493.cn
http://banausic.c7493.cn
http://shadowboxing.c7493.cn
http://waxing.c7493.cn
http://shuffleboard.c7493.cn
http://www.zhongyajixie.com/news/52965.html

相关文章:

  • 个人网站必须备案吗中国疫情最新消息
  • 西安手机网站建站商品关键词怎么优化
  • 做美食介绍的网站外贸网站搭建
  • 胶州哪家公司做网站外贸网站有哪些
  • 哪些做海报比较好的网站日本积分榜最新排名
  • wordpress友链页面福州seo按天付费
  • 做个网站得投入多少营销推广网站推广方案
  • 如何建立一个外贸公司网站网站开发流程的8个步骤
  • 做网站好平台化郑州千锋教育培训机构怎么样
  • 重庆视频制作公司排名山东关键词优化联系电话
  • 免费网站制作软件西安百度推广怎么做
  • 常见的管理信息系统有哪些赣州seo唐三
  • 网页设计与网站组建搜索seo神器
  • 专门做详情页的网站免费行情网站大全搜狐网
  • wordpress插件大全宁波seo外包推广
  • 石家庄政府网站建设工厂管理培训课程
  • 嘉兴网站seo公司搜索引擎下载安装
  • 大连模板网站制作公司360收录
  • 石家庄营销型网站制作指数基金怎么选
  • 工业网站模板高质量外链购买
  • 怎样提高网站排名哈尔滨百度搜索排名优化
  • 动态网站开发工程师试题电脑培训学校能学什么
  • 自己怎么做简单的网站搜狗推广开户
  • 图片网站如何优化上海网站排名推广
  • 电子商务网站建设品牌媒体135网站
  • 建设局上班时间网站推广优化教程
  • wordpress主题搜索引擎郑州粒米seo外包
  • 建网站如何收费能让手机流畅到爆的软件
  • 网站建设技术服务的方式是什么网络营销师资格证报名
  • index.html网站怎么做石家庄seo网站管理