类加载器的创建

1.什么是类加载器

<1>概念:类加载器是用来加载类的工具(从硬盘加载到JVM内存)
<2>类加载器的加载时机【类在使用时才被加载,不使用不加载】
a.创建类的对象时
b.通过类名调用静态方法时
c.通过反射加载类
<3>3.类加载器的分类
a.启动类加载器:Bootstrap ClassLoaders,负责加载JAVA_HOME\lib目录下的jar和class文件
b.平台类加载器:Platform ClassLoader
c.系统类加载:System ClassLoader
d.自定义类加载器
【双亲委派模型 a>b>c>d,逻辑上的继承关系,最下层传递任务给最上层,上层范围之外的则会依次返回下层】

2.获取类加载器
//获取类加载器
public class Demo1 {public static void main(String[] args) {//获取系统类加载器ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();//获取系统类加载器的父加载器 --平台加载器ClassLoader classLoader1 = systemClassLoader.getParent();//获取平台类加载器的父加载器 --启动类加载器ClassLoader classLoader2 = classLoader1.getParent();System.out.println("系统类加载器" + systemClassLoader);System.out.println("平台类加载器" + classLoader1);System.out.println("启动类加载器" + classLoader2);}
}打印结果:
--------------------------------------------------------------------------------------------------
系统类加载器jdk.internal.loader.ClassLoaders$AppClassLoader@3fee733d
平台类加载器jdk.internal.loader.ClassLoaders$PlatformClassLoader@3941a79c
启动类加载器null
3.类加载器应用
//使用类加载器src目录下的配置文件 config.properties
//不局限于电脑路径
public class Demo1 {public static void main(String[] args) throws IOException {//static classLoader getSystemClassLoader()获取系统类加载器ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();//InputStream getResourceAsStream(String name)加载某一个资源文件[src目录下]//利用加载器去加载一个指定的文件[不在src下在报null exception]//参数:文件的路径//返回值:字节流//自动封装返回一个字节流InputStream is = systemClassLoader.getResourceAsStream("config.properties");//创建Properties集合【配置文件只能为英文】Properties properties = new Properties();properties.load(is);System.out.println(properties);}
}

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

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

相关文章

Java 必看的 Spring 知识汇总

转载自 Java 必看的 Spring 知识汇总Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而&#xff0c;Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言&#xff0c;绝大部分Java应用…

Java 截取反斜杠--java使用split拆分特殊字符

orgn link : http://blog.csdn.net/scy411082514/article/details/7987852 Java 截取反斜杠 replaceAll和split &#xff08;“\”&#xff09; 问题解决办法 2009年07月15日 星期三 上午 11:26 xxx.split("\\") 显然得不到想要的结果 正确方法 xxx.split(&qu…

反射的实现

1.获取类的字节码对象 //获取类的字节码对象 public class Demo1 {public static void main(String[] args) throws ClassNotFoundException {//方式1&#xff1a;类名.ClassClass<?> clazz1 Student.class;//方式2&#xff1a;对象名.getClass()Student student new…

thinking-in-java(11) 持有对象

【11.1】泛型和类型安全的容器 &#xff08;1&#xff09;ArrayList<Apple> 中尖括号括起来的是&#xff1a; 类型参数&#xff0c;它指定了这个容器实例可以保存的类型&#xff1b; 【荔枝&#xff1a;有泛型和没有泛型的区别】 class Apple {private static long coun…

JDK9新特性实战:简化流关闭新姿势

转载自 JDK9新特性实战&#xff1a;简化流关闭新姿势。做Java开发的都知道&#xff0c;每个资源的打开都需要对应的关闭操作&#xff0c;不然就会使资源一直占用而造成资源浪费&#xff0c;从而降低系统性能。 关于资源的关闭操作&#xff0c;从JDK7-JDK9有了不少的提升及简化。…

XML配置文件

XML的语法 1.xml是由自定义的标签组成 <开始标签>标签体</结束标签> <自闭合标签/> 2.xml文件的语法 1)必须要有一个文档声明 <?xml version"1.0" encoding"UTF-8" ?>2)只有一个根标签3)特殊字符 如< > & 必须使用…

DevExperience(1710)

【1】Date 和 String 互转 // Date 和 String 互转。public static void main(String[] args) {SimpleDateFormat formatter new SimpleDateFormat("yyyyMMdd");// Date 转 StringString curDateStr formatter.format(new Date());System.out.println("curDat…

Java Jar包的压缩、解压使用指南

转载自 Java Jar包的压缩、解压使用指南什么是jar包 JAR&#xff08;Java Archive&#xff09;是Java的归档文件&#xff0c;它是一种与平台无关的文件格式&#xff0c;它允许将许多文件组合成一个压缩文件。 如何打/解包 使用jdk/bin/jar.exe工具&#xff0c;配置完环境变量后…

枚举的实现

1.枚举的概念 枚举就是把几个固定的常量列举出来。枚举本质上也是一个类&#xff0c;只不过这个类的对象是几个固定的值&#xff0c;不能让外界创建对象【因为其内部的构造方法私有】 2.定义一个枚举类 public enum Week {//枚举项表示Week类的对象&#xff0c;带括号表示使…

think-in-java(17)容器深入研究

注意&#xff1a; 17章接着 11章继续分析 java容器&#xff0c; think-in-java(11) 【17.1】完整的容器分类方法 【容器分类网络解说】 1&#xff09;接口&#xff1a;虚线框&#xff0c;没有实线入边&#xff08;没有实体类继承关系&#xff0c;只有接口继承关系&#xff09…

浅析负载均衡的6种算法,Ngnix的5种算法

转载自 浅析负载均衡的6种算法&#xff0c;Ngnix的5种算法。 常见的几种负载均衡算法 1、轮询法 将请求按顺序轮流地分配到后端服务器上&#xff0c;它均衡地对待后端的每一台服务器&#xff0c;而不关心服务器实际的连接数和当前的系统负载。 2、随机法 通过系统的随机算法…

注解的实现

1.概念 注解表示一个标识(标注、标记)&#xff0c;它可以用在类上、方法上、变量上等&#xff0c;给类的各个组成部分一些额外的表示&#xff0c;能够被编译器识别。 2.常见注解 Override: 描述一个方法是复写的父类方法 Deprecate: 描述一个方法是过时的方法&#xff0c;调…

Java对象引用四个级别(强、软、弱、虚)

转载自 Java对象引用四个级别&#xff08;强、软、弱、虚&#xff09; 最近&#xff0c;高级Java技术栈微信群中&#xff0c;有一些猿友在讨论JVM中对象的周期问题&#xff0c;有谈到引用的级别&#xff0c;现在为大家做个总结吧&#xff0c;虽然大多数公司并没有意识或者用到这…

反射和配置文件的实际应用

1.利用反射完成不同参数赋值 <1>无参构造[默认赋值] Student 和 Teacher皆为JavaBean类 public class Demo1 {public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {//…

thinking-in-java(13) String字符串

【13.1】不可变String 1&#xff09;String对象是不可变的&#xff0c;具有只读特性&#xff1b; 【荔枝-String对象是不可变的】 public class Immutable {public static String upcase(String s) {return s.toUpperCase();}public static void main(String[] args) {Strin…

Java7任务并行执行神器:ForkJoin框架

转载自 Java7任务并行执行神器&#xff1a;Fork&Join框架Fork/Join是什么&#xff1f;Fork/Join框架是Java7提供的并行执行任务框架&#xff0c;思想是将大任务分解成小任务&#xff0c;然后小任务又可以继续分解&#xff0c;然后每个小任务分别计算出结果再合并起来&#…

单元测试和日志技术

1.Junit使用的基本流程 <1>将junit的jar包导入到工程中 <2>编写测试方法该测试方法必须是公共的无参数无返回值的非静态方法在测试方法上使用Test注解标注该方法是一个测试方法 <3>选中测试方法右键通过junit运行该方法 Junit点击下载 2.Junit常用的三个注…

DB2书籍推荐!

链接&#xff1a; http://blog.csdn.net/db2cn/article/details/4336619第一本《循序渐进DB2——DBA系统管理、运维与应用案例》&#xff1a;内容简介DB2数据库是IBM 公司关系型数据库核心产品&#xff0c;在国内以及全球有着广泛的应用。针对DB2初学者&#xff0c;本书循序渐进…

@Controller,@Service,@Repository,@Component详解

转载自 Controller,Service,Repository,Component详解 Controller 用来表示一个web控制层bean&#xff0c;如SpringMvc中的控制器。 Service 用来表示一个业务层bean。 Repository 用来表示一个持久层bean&#xff0c;即数据访问层DAO组件。 Component 用来表示一个平常的普通组…