首先需要明白  final和finally是关键字,finalize是一个方法。

1. final关键字

  final可以修饰类、方法、变量,

  • 修饰类表示类不可以被继承
  • 修饰方法表示此方法不可以被重写(覆盖)但是可以被重载
  • 修饰变量表示变量不可变(引用不可变--也就是不可以重新指向另一个对象,但是引用内容可以变),而且static final 经常用作常量处理。
package cn.qlq.fina;
/**
* final 关键字使用
* @author Administrator
*
*/
public class TestCla { private static final int a = 1; private static final User u = new User();; public static void main(String[] args) {
// a = 2;// final修饰的变量不可改变(引用不可变) // u=new User();//引用不可变,不可再指向其他对象,但是引用内容可以改变 u.setUsername("sssssss");
u.setUsername("XXXXXXX");
} public void test1(final int x ){
// x=1;//final修饰的变量不可改变,方法上的形参也不可以变
}
}

2.finally的使用:---通常用于try..catch..之后关闭一些IO流等操作

  1. try语句没有被执行,如在try语句之前就返回了,这样finally语句就不会执行;因此说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。

  2. 如果在try代码块中执行System.exit(0)语句;那么将终止Java虚拟机JVM,因此,finally语句也不会被执行到。

  3. finally块的语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句可能影响也可能不影响try或catch中return已经确定的返回值,如果返回值类型为传址类型,则影响;传值类型,则不影响。若finally里也有return语句则覆盖try或catch中的return语句直接返回。

测试代码:

package cn.qlq.test;

/**
*
* @author Administrator
*
*/
public class MyTest { public static final int i = 6; @SuppressWarnings("finally")
public static long test1() {
String val = "5d";
long value = 5;
try {
value = Long.parseLong(val);
} catch (NumberFormatException e) {
System.out.println("catch...");
return value++;
} finally {
System.out.println("finally...");
value--;
return value;
}
} public static void main(String[] args) {
System.out.println(MyTest.test1());
}
}

结果:

catch...
finally...
5

3.finalize()析构方法的使用

  finalize()在JVM回收对象的时候会调用该对象的此方法,用于垃圾回收的时候处理一些事情。

package cn.qlq.test;

/**
*
* 测试finalize()方法,对象消亡的时候调用的方法,类似于C++的析构函数
* @author Administrator
*
*/
public class MyTest { public static final int i = 6; @Override
protected void finalize() throws Throwable {
System.out.println("对象要死亡");
}
@SuppressWarnings("finally")
public long test1() {
String val = "5d";
long value = 5;
try {
value = Long.parseLong(val);
} catch (NumberFormatException e) {
System.out.println("catch...");
return value++;
}finally {
System.out.println("finally...");
value--;
return value;
}
} public static void main(String[] args) {
MyTest my = new MyTest();
System.out.println(my.test1());
my = null;//清空对象的引用,使其被垃圾回收
System.gc();//调用GC回收垃圾
}
}

结果:

catch...
finally...
5
对象要死亡

java中final、finally、finalized使用方法的更多相关文章

  1. java中final关键字的使用方法

     [java中为什么会有final变量]: final这个关键字的含义是"这是无法改变的"或者"终态的": 那么为什么要阻止改变呢? java语言的发明者可 ...

  2. [面试题]java中final finally finalized 的差别是什么?

    final 是修饰符,能够用于修饰变量.方法和类.修饰变量时.代表变量不能够改动,也就是常量了.常量须要在定义时赋值或通过构造函数赋值,两者仅仅能选其一:修饰方法时,代表方法仅仅能调用,不能被 ove ...

  3. Java 中extends与implements使用方法

    Java 中extends与implements使用方法 标签: javaclassinterfacestring语言c 2011-04-14 14:57 33314人阅读 评论(7) 收藏 举报 分 ...

  4. Java中的equals和hashCode方法

    本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要 ...

  5. Java中final的作用

    Java中Final可以被用于变量,方法,类.具体来说: 1, Final 变量 修饰主类型时,制定变量为常数,不希望被改变 修饰类类型时,表示变量的句柄不变,不能被指定指向新的变量 修饰参数时,参数 ...

  6. Java中各种(类、方法、属性)访问修饰符与修饰符的说明

    类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被本项目的所 ...

  7. 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因

    声明:本博客为原创博客,未经同意,不得转载!小伙伴们假设是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/det ...

  8. java中final的意义

    1.如果一个数据既是static又是final,那么它会拥有一块无法改变的存储空间. 2.final data: 当final用于基本数据类型时,final让其值(value)保持不变,但是当用于ob ...

  9. Java中的equals和hashCode方法详解

    Java中的equals和hashCode方法详解  转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...

  10. Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能

    Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能. 下面是个例子: import org.junit.Test; import java. ...

随机推荐

  1. YQCB冲刺第二周第六天

    今天的任务为界面的美化. 昨天的任务为实现由用户设置每月初始额度的功能. 暂未遇到问题. 站立会议 任务面板

  2. [UWP 开发] 一个简单的Toast实现

    Toast简介 在安卓里Toast是内置原生支持,它是Android中用来显示显示信息的一种机制.它主要用于向用户显示提示消息,没有焦点,显示的时间有限,过一定的时间就会自动消失.在UWP中虽然没有原 ...

  3. 自定义SQL语句

    在用@query写了sql语句后,返回的结果集不能自动转换为自定义的对象. 百度有一篇博客,解决方案是直接在sql语句里实例化对象,我用了,但是语法错误,又谷歌了下,sql语句里是不能这样写的,这是h ...

  4. Beta 冲刺 七

    团队成员 051601135 岳冠宇 031602629 刘意晗 031602248 郑智文 031602330 苏芳锃 031602234 王淇 项目进展 岳冠宇 昨天的困难 换了种方法写了搜索栏, ...

  5. ecshop ueditor实现百度编辑器

    ecshop后台编辑器替换成ueditor编辑器 投稿:hebedich 字体:[增加 减小] 类型:转载   这篇文章主要介绍了ecshop后台编辑器替换成ueditor编辑器的详细过程,这里推荐给 ...

  6. Linux命令(一) pwd ,cd

    1.pwd命令 以绝对路径的方式显示当前所处的工作目录,从根目录 / 开始,每一级目录用 / 分隔.第一个 / 表示根目录,最后一个目录是当前目录.当不知道当前处于哪个目录的时候,使用 pwd 命令就 ...

  7. 常用的cpl 命令 运行直接打开控制台的简单方法

    转载百度百科   工作中处理 windows机器 有时候 打开 网路修改ip地址特别繁琐,所以找了下 快速打开一些简单的控制台 能提高工作效率.   (Control Panel extension) ...

  8. FuelPHP 系列(二) ------ route 路由

    FuelPHP 中,默认可以通过 /controller_name/function_name 这种方式来访问,也可以通过自定义路由来访问. 路由配置在 /fuel/app/config/routes ...

  9. Emmagee—开源Android性能测试工具

    下载:https://github.com/NetEase/Emmagee/releases/download/V2.5/Emmagee.apk 1.Emmagee——Android性能测试工具 Em ...

  10. BZOJ 4173: 数学

    4173: 数学 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 462  Solved: 227[Submit][Status][Discuss] D ...