1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别
例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源。
如果这个name是以 '/' 开头的,那么就会从classpath的根路径下开始查找。  
ClassLoader.getResourceAsStream()  无论要查找的资源前面是否带'/' 都会从classpath的根路径下查找。
所以: MyTest.getClassLoader().getResourceAsStream("name") 和 
MyTest.getClassLoader().getResourceAsStream("name") 的效果是一样的。
2、一共有三种加载器
bootstrap classloader :负责加载JAVA核心类( jre 下lib和class目录中的内容)
extension classloader :负责加载JAVA扩展类(jre 下lib/ext 目录中的内容)
system classloader :负责加载应用指定的类 (环境变量classpath中配置的内容)
一个类的加载顺序也是按上面的排列来的,这样就能保证系统的类能先加载。 
与此同时用户也可以自己定义ClassLoader,用来加载特殊的资源。
这里就涉及到 Class.getClassLoader()  和  Thread.currentThread.getContextClassLoader()的区别。
举一个简单的例子:
假如某天JAVA给我们提供了一个叫 StartCamera 的类用来启动电脑的标准摄像头,并将这个类打包在一个jar中。
正常情况下,我们要启动摄像头时只需将这个jar配置到classpath中。系统启动时system classloader会将这个类加载到应用中。
但因为摄像头的生产厂家不一样,针对新的设备会有多个不同的StartCamera实现,在应用中我们不知道实际的用户会用到哪种。于是我们就自定义了一个ClassLoader,用来针对具体的设备类型加载相应的StartCamera类。
这样一来就出现:优先加载我们定义的类,加载不到的情况下再加载系统的。 这样的需求,是系统默认的父委托加载机制无法满足的。
Thread.currentThread.getContextClassLoader() 就是这样产生的。 我们使用Thread.currentThread.setContextClassLoader() 可以为当前线程指定相应的ClassLoader,然后用get的方式来获取。
那么上面的加载代码就可能是这样子的:  
public void useCamera(){
StartCamera s = this.findClassLoader().loadClass("StartCamera");
s.start();
}
private ClassLoader findClassLoader(){
ClassLoader loader = Thread.currentThread().getContextClassLoader();
if(loader==null){
loader = ClassLoader.getSystemClassLoader();
}
return loader;
}

4、returngetFields()与getDeclaredFields()区别:getFields()只能访问类中声明为公有的字段,私有的字段它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法  
* getMethods()与getDeclaredMethods()区别:getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法  
* getConstructors()与getDeclaredConstructors()区别:getConstructors()只能访问类中声明为public的构造函数.getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关  
4、ystem.exit(0)、ystem.exit(1)、
这个方法是用来结束当前正在运行中的java虚拟机
System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西
System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序
System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点:return是回到上一层,而System.exit(status)是回到最上层

转载于:https://www.cnblogs.com/weixiuli/p/6406127.html

1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别相关推荐

  1. 我的Java开发学习之旅------JAVA 笔记ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别...

    今天,一读者在我的 Android通过调用Webservice实现手机号码归属地查询 文章中给我回复了一个问题,由于没有具体说明我的sop12.xml文件是放在src目录下,不是和具体操作类Addre ...

  2. this.class.getClassLoader().getResourceAsStream与this.class.getResourceAsStream

    本文部分转自:http://xixinfei.iteye.com/blog/1256291 this.getClass().getClassLoader().getResource("tem ...

  3. Resources.getResourceAsStream用法

    Resources(com.ibatis.common.resource.*) Resources 类为从类路径中加载资源,提供了易于使用的方法.处理 ClassLoader 是一项 富于挑战的工作, ...

  4. java resources目录 编码_关于Java项目读取resources资源文件路径

    在看此篇博客是建议清楚classpath代表的路径,getServletContext().getRealPath("/")的含义,idea中项目编译后的目录格式,resoures ...

  5. 工作流学习2(书本)

    1.流程引擎的创建. 1.1.ProcessEngineConfiguration的buildProcessEngine方法 使用ProcessEngineConfiguration的create方法 ...

  6. 版本 3.1(最终版)

    1 Java™ Servlet 规范 版本 3.1(最终版) Shing Wai Chan Rajiv Mordani [作者] 穆茂强 张开涛 [译者] 2012 年 6 月翻译 2013 年 7 ...

  7. java个人整理知识点

    发展: 1.SE 标准版. 2.EE 企业版,基于SE. 3.ME 已经淘汰. JDK.JRE和JVM: JDK: 称为Java开发工具包( Java Development Kit).Java开发人 ...

  8. Java编程思想读书笔记(02)

    第十三章字符串 字符串是不可变的:是final类固不能继承它:也不能通过指向它的引用来修改它的内容. StringBuilder是Java SE5引用的,在这之前用的是StringBuffer.后者是 ...

  9. Hibernate 3 深度解析

    Hibernate 3 深度解析 Hibernate 的重要性,我想各位一定很清楚.那么 Hibernate 的一些重要功能项大家是否真的很了解呢,是否明白它的执行逻辑呢?本文章将会带领大家深入到 H ...

最新文章

  1. Zend Framework中,执行自定义sql语句
  2. python读文件操作-python文件操作-读写删除复制总结
  3. swift选择类或结构体
  4. 如何在RHEV平台中新建ISO存储域
  5. java 招聘要求_Java程序员如何进阶,一般招聘都有哪些要求?
  6. 记6分的交通违法行为
  7. Firefox(火狐浏览器)彩蛋
  8. opencv matlab配置,Matlab下运行c++程序的配置(包含opencv的c++程序)
  9. 阿里:车联网将成新网络入口
  10. poj 3841 Double Queue (AVL树入门)
  11. mysql怎么递归查询下级_mysql递归查询上下级
  12. 乌班图服务器系统升级,快速从Ubuntu 20.10升级到Ubuntu 21.04的方法
  13. 无人机探测雷达软硬件解决方案
  14. 【python 新浪微博爬虫】python 爬取新浪微博热门话题
  15. 智能时代:大数据与人工智能
  16. 低功耗蓝牙芯片CH579系列开发记录
  17. ROS 机器人模型节点的运动控制原理
  18. 机器学习、深度学习、数据挖掘各种资源整理
  19. 三级管集电极开路电路工作原理详细分析
  20. 教材订购模块java代码实现_基于jsp的高校教材征订-JavaEE实现高校教材征订 - java项目源码...

热门文章

  1. 图解TCPIP-IP 网际协议-IP包
  2. Java Spring 异常处理
  3. 3.5 Bounding Box预测
  4. freecplus框架-MySQL数据库操作
  5. Docker学习总结(66)—— Docker 的三大基石:Namespace、Cgroup 和 rootfs
  6. Ansible 学习总结(2)—— Ansible playbook 入门详解
  7. Java基础学习总结(155)——Java 日志框架怎么选?Logback Or Log4j2?
  8. Spring Cloud与微服务学习总结(10)——Spring Cloud 常见优化项的总结
  9. Spring Boot学习总结(7)——SpringBoot之于Spring优势
  10. linux系统资格认证,Linux资格认证:Linux操作系统的运行级别