标签:format 不可变 nis over warnings 操作 pac xxxx 可变
首先需要明白 final和finally是关键字,finalize是一个方法。
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修饰的变量不可改变,方法上的形参也不可以变 } }
try语句没有被执行,如在try语句之前就返回了,这样finally语句就不会执行;因此说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。
如果在try代码块中执行System.exit(0)语句;那么将终止Java虚拟机JVM,因此,finally语句也不会被执行到。
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
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使用方法
标签:format 不可变 nis over warnings 操作 pac xxxx 可变
原文地址:https://www.cnblogs.com/qlqwjy/p/9373927.html