java面试题之类的初始化和实例化

java实例化和初始化的区别,看完没有不懂的 话不多说,先上张图 一、微服务必备技能: 二、一起从浅入深理解DUBBO! **先来看一份DUBBO脑图:**HelloWorld+前置知识+适合群体+架构(核心点:生产者 消费者问题 特点:连通性,健壮性,伸缩性,升级型、节点调用关系图) 什么是Dubbo(分布式服务框架+RPC远程调用解决服务+SOA服务治理方案) Dubbo的由来(需要解决的问题:1、依赖管理 2、路由透明 3、服务治理) 主要是对Dubbo总体的介绍,让大家对Dubbo有一个总体的认识。首先介绍后台应用 架构的演进过程,从最初 阅读详情

写在前面的话

之前有个认识的朋友出去面试,遇到了一个类初始化和实例初始化的问题,本人也试着做,但是做错了。一时茫然,好歹有几年的开发经验了,确连根本的基础题都不会做了真是万分羞愧,特地记录一下,巩固一下基础。

面试题

首先有一个Father类:

public class Father {
    private int i = test();
    private static int j = method();
    static {
        System.out.println("(1)");
    }
    Father() {
        System.out.println("(2)");
    }

    {
        System.out.println("(3)");
    }

    public int test() {
        System.out.println("(4)");
        return 1;
    }
    public static int method() {
        System.out.println("(5)");
        return 1;
    }
}

然后有个Son类:

public class Son extends Father {
    private int i = test();
    private static int j = method();
    static {
        System.out.println("(6)");
    }
    Son() {
        System.out.println("(7)");
    }
    {
        System.out.println("(8)");
    }
    public int test() {
        System.out.println("(9)");
        return 1;
    }

    public static int method() {
        System.out.println("(10)");
        return 1;
    }
}

测试类:

    public static void main(String[] args) {
        Son son  = new Son();
        System.out.println();
        Son son1 = new Son();
    }

在做这个题之前,需要知道类的初始化和实例化的整个流程是如下:

  1. 初始化父类的静态成员
  2. 初始化父类的静态代码块
  3. 初始化子类的静态成员
  4. 初始化子类的静态代码块
  5. 初始化父类的非静态成员
  6. 初始化父类的非静态代码块
  7. 初始化父类的构造方法
  8. 初始化子类的非静态成员
  9. 初始化子类的非静态代码块
  10. 初始化子类的构造方法
    需要注意的是因为类只会被加载一次,所以静态方法和静态代码块只会执行一次。
    所以执行结果是:(5)(1)(10)(6)(9)(3)(2)(9)(8)(7)。
    需要注意的是第五步时候父类的test方法被重写,所以会调用子类的test方法,所以这里输出的是9而不是4,如果将父类的test方法更改方法名为test1,此时就直接输出父亲test1的4。

综上所述

记住,面试有可能会标出一些语句的,让你选择这些语句的执行顺序。不过只要知道原理,就没什么难的了。

阿里云Ubuntu部署Steam饥荒联机版服务器:从零到多人联机的完整指南 本文详细介绍了在阿里云Ubuntu系统上部署Steam饥荒联机版服务器的完整流程,包括环境准备、SteamCMD安装、服务端配置、Mod管理及后台运行技巧。通过2核4GB的ECS实例配置和端口设置,实现5人流畅联机体验,适合游戏爱好者快速搭建专属服务器。 阅读详情

相关推荐

如何在TRAE(国际版)中搭建ESP-IDF环境以及怎么使用ESP-IDF插件编译烧录到ESP32s3中

点击进入,再点击ESPRESSIF中的EXPRESS,这里会下载ESP-IDF所需要的全部工具和包等等。首先我们从终端中进入项目所在的目录中,我的项目在E盘下的jikecode\esp32s3-client中,我就进入这个目录下。,因为我的项目是针对ESP32-S3进行开发的,所以这里的芯片型号是esp32s3,大家根据各自芯片的型号来输入。执行了这个命令后,ESP-IDF会自动配置与ESP-S3相关的编译选项,生成对应芯片的配置文件。进入第一个ESP-IDF插件,进行安装,注意安装的是。

一个爱折腾技术的普通人,分享踩过的坑、学到的干货。 1510

Java类的 初始化 和 实例化区别

类的初始化:是完成程序执行前的准备工作。在这个阶段,静态的(变量,方法,代码块)会被执行。同时在会开辟一块存储空间用来存放静态的数据。初始化只在类加载的时候执行一次。类的实例化:是指创建一个对象的过程。这个过程中会在堆中开辟内存,将一些非静态的方法,变量存放在里面。在程序执行的过程中,可以创建多个对象,既多次实例化。每次实例化都会开辟一块新的内存。 1.主要区别 2.基础知识 2.1 java类的生命周期: 指一个class文件从加载到卸载的全过程,类的完整生命周期包括7个部分:...

fox_bert的博客 1万+

告别网络卡顿!保姆级教程:用国内镜像源5分钟搞定ESP32开发环境(Arduino IDE)

本文提供了一份保姆级教程,教你如何利用国内镜像源在5分钟内快速搭建ESP32开发环境(Arduino IDE),告别网络卡顿问题。教程详细介绍了镜像源配置、开发板安装、测试程序烧录等步骤,并包含与巴法云对接的实战案例,帮助开发者高效完成物联网项目。

weixin_42536058的博客 594

java中实例化和初始化的区别

3.实例化只会发生一次,每次实例化都会开辟一块新的内存空间。而初始化可以发生多次,包括类的初始化和对象的初始化。类的初始化是在类加载的时候执行一次,用于执行静态变量赋值代码、静态代码块等,完成程序执行前的准备工作。对象的初始化则是为对象的非静态变量赋值,可以在构造方法、实例代码块中进行。初始化可以为对象的属性赋予初始值,可以通过构造方法、静态代码块、实例代码块、默认值等方式来进行。1.实例化是创建对象的过程,而初始化是为对象的属性赋值的过程。

weixin_39576415的博客 930

残差检验_第三十讲 R语言-Cox比例风险模型的假设检验条件

在介绍完 Cox比例风险模型的详细理论和R实现以后(插入链接!!!),我们已经知道Cox比例风险模型可以较好的同时矫正多个混杂因素对结果的影响,同时我们遗留下来了一个问题:Cox比例风险模型的假设检验条件是什么?这一讲,我们将对此进行解答。请注意,如果使用不当,统计模型可能会产生误导性的结论。因此,检查给定的模型是否适合数据类型是非常重要的!1. Cox比例风险模型的假设条件Cox比例风险模型的成...

weixin_35476698的博客 8048

看我如何用kali实时截获隔壁"小姐姐"的上网隐私(结尾有彩蛋)

看我如何用kali实时截获隔壁"小姐姐"的手机图片等信息(结尾有彩蛋哦) 首先圈下重点:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或...

SoulCat 2万+

深入理解Java对象的创建过程:类的初始化与实例化

在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Java对象的创建过程。

Rico's Blogs 19万+

win10下Miracast无线投屏使用教程及异常解决方案(超详细)

文章目录一、什么是Miracast?二、主流的无线投屏技术有哪些特点?三、如何查看自己的win10电脑是否支持Miracast无线投屏功能?四、win10电脑如何使用Miracast无线投屏功能? 一、什么是Miracast? Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的3C设备(如智能手机、电视、投影、电脑等...

帅气的小白的博客 44万+

实例化和初始化的区别

一、实例化和初始化的区别 实例化:只是单纯的把对象 new 一下就行了 例:Student st=new Student();这样就行了 初始化:是在实例化的基础上,并且对 对象中的值进行赋一下初始值(这样的好处是避免当你没有赋值的时候,可以用这个初始的值来代替,友好的帮助你的功能) ...

weixin_39827145的博客 1万+

利用HipSTR从二代测序数据中精准解析短串联重复序列(STR)的遗传多态性

本文详细介绍了如何利用HipSTR工具从二代测序(NGS)数据中精准解析短串联重复序列(STR)的遗传多态性。通过三步走策略,HipSTR能够高效识别STR区域、估算重复次数并判定基因型,适用于法医鉴定、疾病研究和细胞系鉴定等多个领域。文章还提供了实战操作指南和常见问题解决方案,帮助研究者充分利用NGS数据开展STR分析。

weixin_28702105的博客 483

Android蓝牙Mesh组网实战:从零搭建智能灯光控制系统(附完整代码)

本文详细介绍了基于Android平台开发蓝牙Mesh智能灯光控制系统的完整实战流程。从环境搭建、核心概念解析,到设备扫描配网、网络初始化、模型配置与消息通信,提供了完整的代码实现和调试技巧。重点讲解了如何使用开源Mesh库实现设备发现、分组控制、场景管理等核心功能,并分享了实际项目中遇到的典型问题与解决方案。

weixin_29174013的博客 662

java基础——类的初始化、实例化流程

类的初始化、实例化流程

Alex_cf的博客 1731

DTI-ALPS处理笔记

前段时间刚好学习了一下DTI-ALPS处理(diffusion tensor image analysis along the perivascular space ),记录一下,以便后续学习。ALPS是2017年发表在《Japanese Journal of Radiology》的一篇文章首次提出的 (),主要用于无创评估脑内淋巴系统功能的衡量数值。C图和D图中的蓝色部分是投射纤维,绿色部分是联合纤维,红色部分是皮下纤维。

weixin_52073820的博客 4794

java的加载过程之初始化和实例化

想了好久这个题目到底该叫什么,关于加载机制,已经讲的太多,今天说一下加载过程里的初始化。还有初始化之外的实例化。先来一道面试题吧! public class StaticTest { public static int k = 0; public static StaticTest t1 = new StaticTest("t1"); public static Stati...

qianghaiyang的博客 2051

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

试图在初始化之前展开app常量_一道面试题 初探Java类初始化与实例化

前言让我想好好理理这个知识点,主要还是因为看了下面这道经典面试题(出处实在找不到),本来自信满满,写完一看,居然个答案不一样。我还试图想抓出答案的漏洞,所以就有这一篇文章,当然最后还是我被打脸了。所以在原有面试题的基础上,再增加了一点点料,加大点难度,愉悦的开始。面试题首先有一个父类Fatherpublic class Father { private int i = test(); ...

weixin_39759890的博客 1280

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【面试题】Java类的初始化和实例化等重要考点

前言: 本文通过引用一道经典的Java面试题,解释Java类、实例对象的初始化和实例化等知识。主要内容有以下三点: 1.类初始化过程(先) 2.实例初始化过程(后) 3.方法重写(注意) 首先看题目,分析输出结果是什么: 父类: public class Father { private int i = test(); private static int j =...

我是JakeLin,欢迎你来到我的博客~ 397

java实例化类方法_Java之类的实例化步骤

Java之类的实例化步骤,希望对同学们学习java开发有所帮助,首先对于java工程师来说,static非常容易在面试的时候被问到。书面上说static是静态的。其实我把它理解为“全局的”。什么叫全局的?全局的属性,全局的方法,全局的代码块。全局属性,全局方法,比较好理解就是这个类所有的对象都共有的属性和方法。因为是整个类共有的,所以可以通过声明直接调用。我把它理解为“单例模式”的属性和方法。所谓...

weixin_28987735的博客 460

java 初始化和实例化_java类的初始化和实例化

1、面试题Father.javapackage org.example.classinit;public class Father {private int i = test();private static int j = method();static {System.out.println("Father 静态块 = (1)");}public Father(){System.out.pri...

weixin_39637614的博客 131

读书笔记之类初始化和实例化本质

# 类的加载,验证,准备,解析,这四个步骤中除了类加载器可以自定义外,其余都有jvm虚拟机控制。 类初始化时才开始执行我们程序中代码(或字节码),本质上:是执行构造<clinit>方法的过程 类实例化时执行我们的类构造方法中的代码(或字节码),本质是执行构造<init>方法的过程 #构造<clinit> 和 构造<init> 的区别 clin...

qq_29499107的博客 5691

一道面试题 初探Java类初始化与实例化

前言 让我想好好理理这个知识点,主要还是因为看了下面这道经典面试题(出处实在找不到),本来自信满满,写完一看,居然个答案不一样。我还试图想抓出答案的漏洞,所以就有这一篇文章,当然最后还是我被打脸了。 所以在原有面试题的基础上,再增加了一点点料,加大点难度,愉悦的开始。 面试题 首先有一个父类Father public class Father { private int i = test(); private static int j = method(); static...

Samzhu 1137

阿里巴巴面试题--Java对象初始化

这是一道阿里巴巴的关于Java对象初始化的面试题,堪称经典,代码很简单(编写格式做了些修改),但是需要面试者对Java中对象初始化有一个透彻的认识,那么通过这道面试题,对我有点启发,所以希望在这里分享给大家,希望能给迷惘的初学者一起指引,下面我们直入主题,先看看代码: public class InitializeDemo { private static int k = 1; private static InitializeDemo t1 = new InitializeDemo("t1"); p

程序•袁 6386

那些你还不熟悉的---类的初始化和实例化的初始化过程

面试题: 如下两个类的代码 /*父类对象*/ public class Father{ private int i = test(); private static int j = method(); static{ System.out.print("(1)"); } Father(){ System.out.print("(2)"); } { System.out.print("(3)"); } public int test(){ System.out.pr

诗水人间 11万+

浅谈Java中类和对象的初始化、实例化以及方法重载的底层机制

Java类和对象的初始化、实例化以及方法重载类的初始化过程实例的初始化过程实例的初始化过程面试题案例 类的初始化过程 一个类要创建实例需要 先 加载并初始化 该类 而main方法所在的类需要 先 加载和初始化 一个子类要初始化需要 先 初始化父类 一个类初始化 就是执行 clinit() 方法(编译器自动生成) clinit() 方法由 静态类变量显示赋值代码 和 静态代码块 组成 类变量显示赋值代码 和 静态代码块 按从上到下的顺序执行 clinit() 方法

h1332822653的博客 1384

java在类中找不到main方法_Java之类的实例化步骤

Java之类的实例化步骤,希望对同学们学习java开发有所帮助,首先对于java工程师来说,static非常容易在面试的时候被问到。书面上说static是静态的。其实我把它理解为“全局的”。什么叫全局的?全局的属性,全局的方法,全局的代码块。 全局属性,全局方法,比较好理解就是这个类所有的对象都共有的属性和方法。因为是整个类共有的,所以可以通过声明直接调用。我把它理解为“单例模式”的属性和方法。...

weixin_42445886的博客 1776

【java高频面试题-2】类的初始化和实例初始化

这是一道看似简单的面试题,做起来真的要考虑很多,试着分析一下这道题,考察类的初始化,以及实例初始化,子类继承父类,虚拟机是怎末进行重写操作的,等等虚拟机相关的知识。 写出下面程序输出结果分析原因 package com. atguigu. test; /** * 父类初始化<clinit> * (1) j=method();(静态方法) * (2) 父类静态代码块 * 父类的实例化方法: * (1) super()(最前) * (2) i=test(); * (3) 父类的非静态代码块 * .

计忆芳华的博客 556

类的初始化与实例化知识点

前言 之前说了类加载的过程,但是有的读者表示还是有些面试题还是答不来,所以今天就来总结下类加载、对象实例化方面的知识点/面试题,帮助大家加深印象。 全是干货,一网打尽类的基础知识!先看看下面的问题都能回答上来吗? 描述new一个对象的过程,并结合例子说明。 类初始化的触发时机。 多线程进行类的初始化会出问题吗? 类的实例化触发时机。 <clinit>()方法和<init>()方法区别。 在类都没有初始化完毕之前,能直接进行实

Android 883

一道有意思的“初始化”面试题

关于初始化,可能你并没有完全了解

程序员囧辉 2万+
上一篇: java面试题之++i与i++与运算符优先的问题
下一篇: java面试题之传值和传址
Galen-gao
博客等级 码龄9年 931粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值