java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序

4、指出下面程序的运行结果。

class A {

static {

System.out.print("1");

}

public A() {

System.out.print("2");

}

}

class B extends A{

static {

System.out.print("a");

}

public B() {

System.out.print("b");

}

}

public class Hello {

public static void main(String[] args) {

A ab = new B();

ab = new B();

}

}

答:执行结果:1a2b2b。创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。

如下demo:

Parent.java

/**
 * @author: snowing
 * @date  : 2017年4月18日
 *
 */
public class Parent {
	 static {
	        System.out.println("Parent‘s 静态代码块");
	    }

	    {
	        System.out.println("Parent‘s 代码块");
	    }

	    public Parent() {
	        System.out.println("Parent‘s 构造方法");
	    }

}

Child.java

/**
 * @author: snowing
 * @date  : 2017年4月18日
 *
 */
public class Child extends Parent{
	static {
        System.out.println("Child‘s 静态代码块");
    }

    {
        System.out.println("Child‘s 代码块");
    }

    public Child() {
        System.out.println("Child‘s 构造方法");
    }
    public static void main(String[] args) {
    	new Child();
	}

}

输出:

时间: 2024-10-23 03:31:12

java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序的相关文章

java面试基础题

java面试基础题 今天在网上看到一个大佬整理的java面试题,给大家分享一下,出处:https://www.cnblogs.com/peke/p/7894685.html 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 答:可以包括很多类,但是public修饰的类只能有一个且必须和java源文件名相同 Java有没有goto? 答:没有,在我知道的只有C语言中有 说说&和&&的区别. 答:逻辑与(&)和短路与(&&am

java面试基础题整理学习

最近投了一些java岗位,面试和笔试的问题更关注基础的掌握,因为基础知识是安身立命以及决定自己上限的东西.结合了网上一些优秀文章,做了如下整理: 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境. 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源

java面试基础题------》Java 中List、Set、Map异同点

借鉴地址:http://blog.csdn.net/speedme/article/details/22398395 几句喜欢的话,拷贝下来: 世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合 有人想有可以自动扩展的数组,所以有了List 有的人想有没有重复的数组,所以有了set 有人想有自动排序的组数,所以有了TreeSet,TreeList,Tree** 相同点: 1.List,Set,Map将持有对象一律视为Object型别. 2.Collection.List.Set.

java面试基础题------》抽象类和接口有什么异同

划重点!!!! 1.抽象类(abstract class)和接口(interface)有什么异同? 相同点 * 都不能被直接实例化,都可以通过继承实现其抽象方法. * 都是面向抽象编程的技术基础,实现了诸多的设计模式. 不同点 * 接口支持多继承:抽象类不能实现多继承. * 接口其中的抽象方法全部进行实现 * 接口只能定义抽象规则:抽象类既可以定义规则,还可能提供已实现的成员. * 接口是一组行为规范:抽象类是一个不完全的类,着重族的概念. * 抽象类未必要有抽象方法. * 接口只包含方法.属性

Java面试基础 -- Git篇

1.Git和SVN有什么区别? Git SVN Git是一个分布式的版本控制工具 SVN 是集中版本控制工具 它属于第3代版本控制工具 它属于第2代版本控制工具 客户端可以在其本地系统上克隆整个存储库 版本历史记录存储在服务器端存储库中 即使离线也可以提交 只允许在线提交 push/pull 操作更快 Push/pull 操作较慢 工程可以用 commit 自动共享 没有任何东西自动共享 2.什么是Git? Git 是分布式版本控制系统,可以跟踪文件的更改,并允许你恢复到任何特定版本的更改,优点

一些iOS面试基础题总结

目录 多线程 AutoLayout objc_msgSend Runtime 消息转发 Category NSObject 与 objc_class Runloop AutoreleasePool iOS系统架构 App启动过程和优化 UIScrollView 的代理方法 响应链和事件传递 UIView 和 CALayer 的区别和联系 轮播图朴素实现的几种方法 TableView 和 CollectionView 必选的代理方法 UITableView 的优化思路 多线程 线程之间同步 原子操

Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

随笔- 40  文章- 0  评论- 1 Java的初始化块.静态初始化块.构造函数的执行顺序及用途探究 Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, C三个类用作测试,其中B继承了A,C又继承了B,并分别给它们加上静态初始化块.非静态初始化块和构造函数,里面都是一句简单的输出. 主类Main里面也如法炮制. 1 class A { 2 st

java新建对象的static块与构造器的执行顺序

前言:本文解决的问题 新建一个对象静态代码块什么时候执行 {}里面的代码什么时候执行 有继承关系时的执行顺序 1.问题出现的背景: 构造器是用来实例化一个对象,当我们使用new关键字来新建对象时,构造器就会被调用.如果class中含有静态代码块(static)和普通代码块(在{}括号下),新建对象时的调用顺序是:静态代码块>{里面的代码}>构造器. 2.例子说明: 2.1代码说明 //父类 public class StaticExample{ { System.out.println(&qu

查询语句中select from where group by having order by的执行顺序

查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行 from--where--group by--having--select--order by,