牛客30道Java专项练习-错题-01

news2024/11/23 15:18:22

一、Java初始化过程:

  • 初始化父类种的静态成员变量和静态代码块,顺序执行
  • 初始化子类种的静态成员变量和静态代码块,顺序执行
  • 初始化父类的普通成员变量和代码块,再执行父类的构造函数
  • 初始化子类的成员变量和代码块,在执行子类的构造函数

在Java中,如果父类既有无参构造函数又有有参构造函数,并且子类没有显式调用父类的构造函数,则执行父类的无参构造函数。这是因为子类的构造函数会式地调用父类的无参构函数作为第步操作,以确保父类的初始化完成。只有在类的构造函数中显式调用了父类的有参构造函数时,会执行指定的父类构造函数。

二、类加载过程

类从加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载。其中加载、验证和解析三个部分统称为连接。
加载、验证、准备、初始化和卸载这5个部分是确定的,类的加载过程必须按照这个顺序执行,而解析不一定,解析可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称之为动态绑定或者晚期绑定)

  • 加载阶段:

    • 通过一个类的全限定名(包名在内的类的整名称)来获取此类的二进制字节流
    • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
    • 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类各种数据的访问入口

    加载阶段和连接阶段(Linking)的部分内容(如一部分字节码文件格式验证动作)是交叉进行的,加载阶段尚未完成,连接阶段可能已经开始,但这些夹在加载阶段之中进行的动作,仍然属于连接阶段的内容,这两个阶段的开始时间仍然保持着固定的先后顺序。

  • 验证阶段:

    • 验证是连接阶段的第一步,这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全
    • 验证阶段大致会完成4个阶段的检验动作:
      • 文件格式验证:验证字节流是否符合Class文件格式的规范
      • 元数据验证:对字节码描述的信息进行语义分析,以保证其描述的信息符合Java语言规范的要求
      • 字节码验证:通过数据流和控制流分析,确定程序语义是合法的,符合逻辑的
      • 符号引用验证:确保解析动作能正确执行
    • 验证阶段非常重要但不是必须的
  • 准备阶段:

    • 准备阶段是正式为类变量分配内存并设置类初始值阶段,这些变量所使用的内存都将在方法区中进行分配。这时候进行内存分配的仅包括类变量(static修饰的),不包括实例变量,实例变量在对象实例化时随着对象一起分配在堆中。
  • 解析阶段:

    • 解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。解析动作主要针对类或者接口、字段、类方法、方法类型、方法句柄和调用点限定符等
  • 初始化阶段:类初始化阶段是类加载过程的最后一步,到了初始化阶段,才真正开始执行类中定义的java程序代码。看上述

三、只有左移<<、有符号右移>>、无符号右移>>>

四、类加载:

类的加载由类加载器完成,类加载器包括:根加载器BootStrap、扩展加载器Extension、系统加载器System、自定义类加载器java.lang.ClassLoader

  • 根加载器BootStrap:一般用本地代码实现、负责加载JVM、基础核心类库
  • 扩展加载器Extension:系统属性所指定的目录中加载类库,父加载器是根加载器
  • 系统加载器System:应用类加载器,父类是扩展加载器Extension,它从环境变量classpath或者系统属性java.class.path所指定的目录中加载类,使用户自定义加载器默认夫加载器
  • 自定义类加载器:java.lang.ClassLoader的子类,父类委托机制可以修改,有些服务器就是自定义类加载器优先的
    Java的类加载器采用双亲委派模型,先检查是否已经被加载,若无,调用父类加载器的loadClass方法,若父类加载器为空,默认使用启动类加载器作为父类加载器,若父类加载器加载失败,抛出ClassNotFoundException异常

五、单例的5种实现模式:

  • 懒汉式(线程不安全)
  • 饿汉式(线程安全)
  • 双重检查锁实现(线程安全)
  • 静态内部类实现(线程安全)
  • 枚举类实现(线程安全)

六、常见的代码优化技术有:复写传播,删除死代码, 强度削弱,归纳变量删除

七、内部类

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024考研408-计算机网络 第一章-计算机网络体系结构学习笔记.md

文章目录 前言一、计算机网络概述1.1、概念及功能1.1.1、计算机网络的概念1.1.2、计算机网络的功能功能1、数据通信功能2、资源共享功能3、分布式处理功能4、提高可靠性&#xff08;分布式处理引申功能&#xff09;功能5、负载均衡&#xff08;也是分布式处理引申功能&#xff…

Javascript Object学习1

JavaScript原生提供一个Object对象&#xff0c;O大写&#xff0c;所有其他对象都继承自这个对象&#xff1b; Object本身也是一个构造函数&#xff0c;可以直接通过它来生成新对象&#xff1b; 对象的初始化有两种方式&#xff0c;构造函数模式和字面量模式&#xff1b; 下面对…

Meta分析的选题与文献计量分析CiteSpace应用丨R语言Meta分析【数据清洗、精美作图、回归分析、诊断分析、不确定性及贝叶斯应用】

目录 ​专题一、Meta分析的选题与文献计量分析CiteSpace应用 专题二、Meta分析与R语言数据清洗及相关应用 专题三、R语言Meta分析与精美作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析与进阶 专题六、R语言Meta分析的不确定性及贝叶斯应用 专题七、深度拓展…

innovus修short脚本

innovus版脚本分享&#xff1a; deselectAll foreach short [dbGet [dbGet top.markers.subType Short] -p] { set box [dbGet $short.box] set layer [dbGet $short.layer.name] select_obj [dbGet [dbQuery -area $box -layer $layer -objectType wire].net.is CTS clock 0…

SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出

介绍 EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下&#xff0c;快速完成 Excel 的读、写等功能。 EasyExcel文档地址&#xff1a; https://easyexcel.opensource.alibaba.com/ 快速开始 …

Generative Diffusion Prior for Unified Image Restoration and Enhancement 论文阅读笔记

这是CVPR2023的一篇用diffusion先验做图像修复和图像增强的论文 之前有一篇工作做了diffusion先验&#xff08;Bahjat Kawar, Michael Elad, Stefano Ermon, and Jiaming Song, “Denoising diffusion restoration models,” arXiv preprint arXiv:2201.11793, 2022. 2, 4, 6,…

6. Spring Boot 的创建和使用

目录 1. 什么是 Spring Boot 2. Spring Boot 的优点 3. Spring Boot 项目的创建 3.1 使用 Idea 创建 3.2 网页版创建 4. 项目介绍和运行 4.1 运行项目 4.2 通过浏览器输出 5. 注意事项 1. 什么是 Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&#xff0c…

100、用简洁的语言描述一下:TCP的三次握手和四次挥手(不需要长篇大论)

TCP的三次握手和四次挥手 TCP协议是7层网络协议中的传输层协议&#xff0c;负责数据的可靠传输。 1、三次握手 在建立TCP连接时&#xff0c;需要通过三次握手来建立&#xff0c;过程是: 客户端向服务端发送一个SYN服务端接收到SYN后&#xff0c;给客户端发送一个SYN_ACK客户…

leetcode 852. Peak Index in a Mountain Array(峰值索引)

一个数组保证是峰值数组&#xff08;存在一个值大于左边和右边部分数组&#xff09;&#xff0c;找出峰值的index。 要求时间复杂度在O(logn)。 思路&#xff1a; 时间复杂度为O(logn), 可以想到用binary search. 其实用O(n)的找最大值也能通过。 public int peakIndexInMou…

PysparkNote006---pycharm加载spark环境

pycharm配置pyspark环境&#xff0c;本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…

Python 基础总结

title: Python 基础总结 date: 2023-07-19 10:51:55 tags: Python categories:Python cover: https://cover.png feature: false 1. print() 函数 1.1 基础使用 # 输出数字 print(23) print(11.323)# 输出字符串 print(你好) print("你好")# 输出表达式 print(3 *…

C++-stack 和 queue

stack 和 queue介绍 两者分别是C当中的 栈和队列&#xff0c;只不过在C当中&#xff0c;这两者没有用传统的方式&#xff0c;比如顺序存储和链式存储来实现了&#xff0c;两者现在使用的是一种权限的方式来实现&#xff1b; 都是用容器适配器来实现&#xff0c;开发者考虑到&a…

PyToch 深度学习 || 3. 卷积神经网络 | 3.1 深度学习中的卷积操作

深度学习中的卷积操作 文章目录 深度学习中的卷积操作1. 卷积2. 一维卷积2.1 使用nn.functional库中conv1d2.2 使用nn库中的Conv1d 3. 二维卷积3.1 nn.functional.conv2d3.2 nn.Conv2d 1. 卷积 加权求和是一种非常重要的运算&#xff0c;可以整合局部数字特征进而是提取局部信…

Linux CentOS监控系统的运行情况工具 - top/htop/glances/sar/nmon

在CentOS系统中&#xff0c;您可以使用以下工具来监控系统的运行情况&#xff1a; 1. top&#xff1a; top 是一个命令行工具&#xff0c;用于实时监控系统的进程、CPU、内存和负载情况。您可以使用以下命令来启动 top&#xff1a; top 输出 2. htop&#xff1a; htop 是一…

WSL 2 环境配置

WSL 2 环境配置 wsl2是windows内置的linux子系统&#xff0c;安装步骤如下&#xff1a; Win10 版本号为 2004&#xff08;内部版本19041或更高&#xff09;即可&#xff0c;如果低于此版本可使用 Windows 10 易升工具手动升级。下载 Windows 10 易升工具&#xff1a; https:…

DAY52:动态规划(十七)子序列问题:最长递增子序列+最长连续递增序列+最长重复子数组

文章目录 300.最长递增子序列&#xff08;注意初始化和结果取值&#xff09;思路DP数组含义递推公式初始化最开始的写法debug测试&#xff1a;解答错误debug测试2&#xff1a;result初始值 修改完整版总结 674.最长连续递增序列思路1&#xff1a;滑动窗口思路2&#xff1a;动态…

【Leetcode】54.螺旋矩阵

一、题目 1、题目描述 给你一个 m m m 行 n n n 列的矩阵 matrix,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例1: 输入:matrix =

安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…

项目——负载均衡在线OJ

目录 项目介绍开发环境所用技术项目宏观结构编写思路1. 编写compile_server1.1 编译模块编写1.2 运行功能1.3compile_runner 编译与运行1.4 编写compile_server.cpp调用compile_run模块&#xff0c;形成网络服务 2. 编写基于MVC的oj_server2.1 oj_server.cpp的编写2.2 oj_model…

Unity进阶--对象池数据场景管理器笔记

文章目录 泛型单例类泛型单例类&#xff08;不带组件版&#xff09;对象池管理器数据管理器场景管理器 泛型单例类 using System.Collections; using System.Collections.Generic;public abstract class ManagersSingle<T> where T : new() {private static T instance;…