自定义类是否能正常运行、类加载器、JIT

一、自定义类是否都能正常运行

1、自定义与系统类同名的类不能正常运行

package java.lang;public class String {public void print(){System.out.println("中秋节快乐");}public static void main(String[] args) {new String().print();}
}

解析:在编写类中的代码和方法中的代码时不会报错,但是一旦运行main方法,在运行main方法时就会报错

2、自定义与系统类不同名的类能正常运行

package com.g;public class String {public void print(){System.out.println("中秋节快乐");}public static void main(java.lang.String[] args) {String s = new String();s.print();}
}

注意:main方法中String数组中的String类型必须使用系统中的String类的全类名

二、StringBuilder中的deleteCharAt()方法和append()方法(与栈的思想符合,栈的思想是后进先出)

public static void main(String[] args) {StringBuilder sb = new StringBuilder("abc");// 在字符串后面添加字符sb.append('d');System.out.println(sb.toString());// 从字符串尾部删除字符sb.deleteCharAt(sb.length() - 1);System.out.println(sb.toString());}

二、类加载器

1、类加载器的使用

将String类从String.class文件中加载到内存中要用到类加载器,在类加载时有一个很重要的过程叫双亲验证,如果java底层已经有了这个类,那么这个类是无法加载到内存中的

2、类加载的原因

在编写程序时先写好Car.java源代码,再将其进行编译变为Car.class字节码(JVM认识的,可以将其运行的),Car.java和Car.class在硬盘上无法运行,必须把Car.class加载进JVM能够识别的内存区域

3、类加载的时间

碰到new时

4、类加载的过程

(1)对于Class.forName("com.ffyc.Car"),从com.ffyc.Car文件夹里去查找找Car.class文件,有这个文件,则将此文件加载到内存里去,将Car.class文件加载到内存前还要对Car.class文件做一系列的检查

(2)将Car.class加载到JVM能够识别的内存区域时会创建一个Car.class对象,因此new 一个Car对象实际上时创建了两个对象(实例对象和类对象

(5)Car.class文件无法加载进入内存的原因

Car.class文件---->>父-->>爷(检查发现Car.class文件对应的类信息已经有了,Car.class文件不用再加载进入内存)---->>父---->Car.class文件

(6)java环境在启动时,先启动bootstrap加载器,再启动ext加载器,最后启动app加载器

5、类加载中的反射

起反射作用的是Class对象,反射是反面向对象机制的,是直接去底层去访问

三、JIT

1、jdk的新高度-JIT技术(Just In Time)

如果JVM控制的内存在程序运行时不够用了,那么程序可以直接调用物理内存

2、从一个Java源文件到new出对象的过程(均发生在调构造器之前)

Car.java源文件--------->>Car.class字节码文件---------->>new 了一下,准备进内存了--------->>经过双亲委托机制的判定看Car.calss文件是否需要加载到内存中------->>将变量和方法分到合适的内存位置上去------>>实例化new出真正的对象

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

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

相关文章

Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)

文章目录 二、命令列表2.1 jvm相关命令### 2.1.8 heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)举例1:假设你想生成一个只包含活动对象的堆转储文件,并将其保存为 /tmp/heapdump.hprof举例2:如果你想要进…

加密pdf如何解除加密?pdf解除密码只需掌握这7个方法!(图文详解)

pdf文件通常会设置密码保护,以维护其机密性和隐私。这意味着除了被授权查看文件的人之外,其他任何人都无法访问这些内容。然而,有时候您可能希望与他人分享这些 pdf文档,让他们能够方便地查看,而不必麻烦地输入密码。因…

专业的屏幕录像和视频编辑的软件Camtasia 2024安装激活图文教程

‌Camtasia 2024是一款专业的屏幕录像和视频编辑的软件套装。它由TechSmith公司开发‌,提供了强大的屏幕录像、视频剪辑和编辑、视频菜单制作、视频剧场、视频播放等功能。 Camtasia Studio 2024是该软件套装的核心部分,支持在PC和Mac平台上运行&#xf…

【JavaEE初阶】文件IO(上)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 路径 绝对路径 相对路径 文件类型 文件的操作 File类 文件系统操作 创建文件,获取路径 删除文件 列出所有路径 路径修改 创建目录 mkdir和mkdirs 服务器领域,机械…

【永磁同步电机(PMSM)】 5. PMSM 的仿真模型

【永磁同步电机(PMSM)】 5. PMSM 的仿真模型 1. 基于 Simulink 的仿真模型1.1 PMSM 的数学模型1.2 Simulink 仿真模型1.3 模块封装(mask)1.4 三相PMSM矢量控制仿真模型 2. Simscape 的 PMSM 模块2.1 PMSM 模块的配置2.2 PMSM 模块…

Cpp类和对象(中续)(5)

文章目录 前言一、赋值运算符重载运算符重载赋值运算符重载赋值运算符不可重载为全局函数前置和后置的重载 二、const修饰成员函数三、取地址及const取地址操作符重载四、日期类的实现构造函数日期 天数日期 天数日期 - 天数日期 - 天数日期类的大小比较日期类 > 日期类日…

device靶机详解

靶机下载地址 https://www.vulnhub.com/entry/unknowndevice64-1,293/ 靶机配置 主机发现 arp-scan -l 端口扫描 nmap -sV -A -T4 192.168.229.159 nmap -sS -Pn -A -p- -n 192.168.229.159 这段代码使用nmap工具对目标主机进行了端口扫描和服务探测。 -sS:使用…

AI 智能名片链动 2+1 模式商城小程序中的体验策略

摘要:本文探讨了在 AI 智能名片链动 21 模式商城小程序中,体验策略如何服务于用户体验,以及与产品策略的区别。重点分析了该小程序如何通过关注用户在使用过程中的流畅度、视觉体感等方面,实现“让用户用得爽”的目标,…

华为HarmonyOS地图服务 1 -- 如何实现地图呈现?

如何使用地图组件MapComponent和MapComponentController呈现地图,效果如下图所示。 MapComponent是地图组件,用于在您的页面中放置地图。MapComponentController是地图组件的主要功能入口类,用来操作地图,与地图有关的所有方法从此…

【小程序】微信小程序课程 -1 安装与配置

目录 1 微信小程序概述 1.1 什么是微信小程序 1.2 注册微信小程序账号 1.3 微信小程序配置 1.4 小程序开发流程 1.5 小程序成员 2、创建微信小程序项目 2.1 创建项目流程 2.2 创建项目 2.3 本地开发支持http 3 项目目录结构 3.1项目目录结构 3.1.1 目录介绍 3.1.2…

爬虫过程 | 蜘蛛程序爬取数据流程(初学者适用)

蜘蛛程序(也称网络爬虫,是搜索引擎的重要组成部分) 主要功能:遍历互联网,抓取网站信息并建立索引,便于用户在搜索引擎中检索到最新的网页内容工作原理:从初始网站页面的URL开始,发送…

Windows 配置docker和ubuntu系统

windos10 配置docke时,无意间发现wsl功能挺好用,而且是和docker 的linux容器连通的。 记录一下解决的几个问题 error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/images/json: open //./pipe/docker_engine: The system cannot …

【Docker】基于docker compose部署artifactory-cpp-ce服务

基于docker compose部署artifactory-cpp-ce服务 1 环境准备2 必要文件创建与编写3 拉取镜像-创建容器并后台运行4 访问JFog Artifactory 服务 1 环境准备 docker 以及其插件docker compose ,我使用的版本如下图所示: postgresql 的jdbc驱动, 我使用的是…

Origin2021中文版详尽安装教程、附安装包下载

各位小伙伴们呀~ 今天给大家讲解下origin2021如何安装,相信你按照教程来操作,一定可以安装成功的。 废话不多少,正文开始~ tips:提前推出所有杀毒软件可不相干的软件,以免影响安装。 origin2021中文版安装教程 1.下…

御风于海,向阳而生!第六届中国互联网牛友会圆满落幕

近日,第六届中国互联网牛友会近日在大理实力喜来登酒店圆满落幕,本次盛会吸引了超过五百名行业精英与创业者共襄盛举。大会以“御风于海,向阳而生”为主题,聚焦于互联网出海、AI大模型、新媒体及WEB3等前沿科技与趋势,…

MySQL数据库select语句详细用法三(子查询及其select练习)

SELECT *FROM student2 WHERE age > (SELECT age FROM student2 WHERE NAME 欧阳丹丹) 首先解释一下括号中的代码,意思是在查询student2中的name为欧阳丹丹的人的名字,然后解释一下整个语句的意思:在括号中查询出来的字段中再次进行查询…

VUE3学习---【一】【从零开始的VUE学习】

目录​​​​​​​ 什么是Vue 渐进式框架 创建一个Vue应用 什么是Vue应用 使用Vue应用 根组件 挂载应用 模板语法 文本插值 原始HTML Attribute绑定 简写 同名简写 布尔型Attribute 动态绑定多个值 使用JavaScript表达式 仅支持表达式 指令 Directives 指令…

QString 构建SQL语句可以往数据库中添加“\n“字符串

网上找了很多案例关于怎么样能在Mysql数据库中插入带\n的字符串,如图: 本以为很容易的一件事,没想到思考了半天,在这里记录一下,以为\n是转义字符的原因,所以并不是我想的那么简单。网上有用R(“…

【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)

1. 业务目标和任务描述 该项目是很早期的一个工作,属于互联网信贷风控场景,研究并应用信贷中的拒绝推断任务,处理方式也许对于目前的一些业务还有参考意义,因此这里做下分享。拒绝推断是指在信贷业务中,利用已知的接受…

《2024 年全球人工智能趋势报告》:GPU、数据架构依然是巨大挑战

导语:对于众多行业用户而言,了解人工智能如何改变行业、如何利用人工智能保持领先地位,已成为一道时代的必答题。全球著名调研机构WEKA近日正式发布《2024 年全球人工智能趋势报告》,该报告基于全球1500名人工智能决策者的深度调查…