代码int a =1;
try {return a;
}finally {return 2;
}上面这段代码最终会返回 2 ,因为finally一定会程序return返回之前执行。当程序执行到try 块里的return时,因为finally还没有执行,所以这里程序并不会返回,而是接着执行finally块的代码,由于finally里的代码有个return语句,所以执行到这里程序结束。再看一段代码,这里程序执行到try块的return语句时,由于还有个finally块没执行,于是程序没有返回,接着执行finally块,fi...
/** * Created by Administrator on 2017/3/6. *//** * @author zhenghong * @date 2017-03-06-22:07 **/public class TestA { public static void main(String []args) { new B(); }}class A{ static { System.out.println("static A"); } public A() { System.out.println("constutor A"); } { System.out.println("normal A"); }}class B extends A{ stat...
package com.rainy.main;import java.util.ArrayList;
import java.util.List;publicclass Test extends A {static List<Object> p = new ArrayList<Object>();static {
p.add(new Object());
}publicstaticvoid main(String[] args) {
System.out.println(p.size());
System.out.println(l.size());
}}class A {
static List<Object> l = new ArrayList<Object>();static {
l.add(new Object());
}
} 可以看出,当进入main方法之前...
1/** 2 * 代码块执行顺序的测试3 * 执行顺序 静态代码块>main代码块>构造代码块>构造函数>普通代码块4 * @author Administrator5 * 6*/ 7publicclass ClassDemo01 {8static {9 System.out.println("这是一个静态代码块");
10 }
11 {
12 System.out.println("这是一个构造代码块");
13 }
1415public ClassDemo01() {
16 System.out.println("这是一个构造函数");
17 }
1819publicvoid print() ...
先来观察下面的代码package trr;
class Root
{static{System.out.println("Root的静态初始化块");}{System.out.println("Root的普通初始化块");}public Root(){System.out.println("Root的无参数的构造器");}
}
class Mid extends Root
{static{System.out.println("Mid的静态初始化块");}{System.out.println("Mid的普通初始化块");}public Mid(){System.out.println("Mid的无参数的构造器");}public Mid(String msg){//通过this调...
构造块:直接写在类中的代码块静态代码垮:使用static关键字声明的代码块静态代码块先于构造块,构造方法执行,而且只在类加载时候执行一次,后面在类实例化的时候会先执行构造块,而且每执行实例化一个对象,就会执行一次构造块,执行完构造块会执行构造方法。public class ConstructorCodeTest
{public static void main(String[] args) {Demo d1=new Demo();Demo d2=new Demo();Demo d3=new Demo();}
}class Demo
{{System.out...
Mastiff类/*** 子类藏獒*/publicclass Mastiff extends Dog {public Mastiff() {System.out.println("Mastiff");}{System.out.println("block");}static {System.out.println("static block");}publicstaticvoid main(String[] args){Mastiff mastiff=new Mastiff();}
}DOG类/***DOG父类*/publicclass Dog {public Dog() {System.out.println("Dog");}
}
</span>运行结果为: static blockDogblockMastiff 也就是说,在我们的程...
当父类与子类都有静态代码块和构造函数的时候,执行顺序如下: 父类静态代码块 > 子类静态代码块 java虚拟机加载类时,就会执行该块代码。 父类构造函数 > 子类构造函数 (先有父亲,后有孩子) 如果是多级继承关系的话,高层的父类首先执行,然后依次递减 总结:静态优先执行,父类优先于子类执行 静态代码块是在JVM加载类的时候执行的,而且静态代码块执行且仅执行一次原文:http://my.osch...
本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题。首先来看一个例子/*** Created by lili on 15/10/19.*/class Person{static {System.out.println("执行Person静态代码块");}{System.out.println("执行Person构造代码块");}public Person(){System.out.println("执行Person构造方法");}
}class Student extends Person{static {System.out.println("执行Student静态代码块");}{System.out.println("执行Studen...
过滤器拦截到响应url的请求后会先执行doFilter()方法中chain.doFilter()之前的代码,然后执行下一个过滤器或者servelt。紧接着执行chain.doFilter()之后的代码。一下为两个过滤器的执行顺序:过滤器一:package com.rskd_yswb.lib.filter;import javax.servlet.*;
import java.io.IOException;
publicclass HttpRequestAndResponseFilter implements Filter {private FilterConfig filterConfig;publicvoid destroy() {}publicvoid...
实例来源:《Java编程思想》,博客链接:Java编程思想1-15章笔记案例代码:
class A{public A(){System.out.println("1.父类A的构造方法");}{System.out.println("2.父类A的构造代码块");}static{System.out.println("3.父类A的静态代码块");}
}
public class B extends A{public B(){System.out.println("4.子类B的构造方法");}{System.out.println("5.子类B的构造代码块");}static{System.out.println("6.子类B的静态代码块");}/...
public class Parent {static {System.out.println("parent static");}{System.out.println("parent code block");}public Parent(String name){System.out.println("parent init");}
}public class Child extends Parent {static {System.out.println("child static");}{System.out.println("child code block");}public Child(){System.out.println("child init");}public void echo(){System.out.println("this is child");}pub...
首先我们来看题 当做这道题时我的答案是“ABAA”。因为先执行try得到A然后执行finally 得到B 再回到try 中的return 得到A 再输出个A。但是当我看答案的时候不是这样的 正确答案是ABAB 因此得到一个结论 finally语句块在return语句之后,return返回值之前 看下一个例子 运行结果 由此我们可知 输出了try之后 运行了b=b+80 但是没有返回 就去执行finally 等到finally执行完以后才返回结果
例子二 执行结果 由结果可得 先执行了...
目录问题背景finally语句一定执行吗finally语句与return的执行顺序问题分析1. finally语句在f()执行之后、y返回之前执行2. finally块中的return语句覆盖try块中的y3. finally语句块不改变栈中的值,可改变堆中的值4. try块里的return在异常情况下不执行5. catch和try中的return执行顺序相同小结Reference
问题背景
finally语句一定执行吗
?? 网上有很多人探讨Java中异常捕获机制 try...catch...finally 块中的finally语句是不是一定...
Java是面向对象的语言,需要把一个大的项目细化成相应的类,在通过一个个类实例化对象,实例化一般都要初始化属性,常见初始化属性的方式有以下几种
定义时初始化
class Person{String name = "张三";int age = 21;
}2.代码块中初始化
class Person{String name ;int age ;{name = "张三";age = 21;}
}3.构造方法初始化
class Person{String name ;int age ;public Person(){this.name = "张三";this.age = 21;}}这是常见的三种常见...