概述
1.JVM
- ClassLoader:ExtClassLoader(用于加载Java的拓展API)和AppClassLoader(嘉加载用户机器上CLASSPATH中的Class)
- ClassLoader加载流程:当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载Java核心API(ExtClassLoader和AppClasLoader也在此时被加载),然后调用ExtClassLoader加载拓展API,最终AppClasLoader
- 父类委托:避免重复加载,安全
- 编码:Unicode
- 一些重要的方法
方法 | 解释 |
---|---|
loadClass | ClassLoader.loadClass(String name,boolean resolve)是ClassLoader的入口点,name是指需要的类的名称,resolve为是否需要解析类(如果只是要知道该类是否已经被加载或者找父类则不必解析) |
defineClass | 接收由原始字节组成的数组,并转换成Class对象 |
findSystemClass | 在本地文件系统中寻找类文件,如果存在则使用defineClass方法,当Java应用程序运行时,这是JVM正常装入类的默认机制 |
resolvaClass | 可以不完全或者完全的装入类(解析) |
findLoadedClass | 充当一个缓存,当请求loadClass装入类时调用,来查看是否已经装入这个类 |
forName | 与loadClass目的一样,但是在作用上有区别,Class.forName(name,initialize,loader),相当于Class.forName(“something”,true,CALLCLASS.calss.getClassLoader()),true设置加载类的时候是否连接该类,JVM加载类步骤:加载,连接,初始化,连接步骤:验证class,准备为类变量分配内存同时设置默认初始值,解析(可选),loadClass不会解析,因此不会初始化该类,但是forName相反 |
2.数据类型转换
- 基本数据类型:boolean、char、byte、short、int、long、float、double
- 数据类型转换的种类:简单之间、字符串与其他数据类型的转换、其他实用数据类型的转换
转换 | 详情 |
---|---|
简单数据类型之间 | (byte,short,char)-int-long-float-double,低级到高级的自动类型住转换、高级到低级的强制类型转换、包装类过渡类型能够转换,包装类:Boolean、Integer…, |
字符串型与其他数据类型的转换 | 从Object类派生的所有类都体统toString方法 |
将字符型直接作为数值转换为其他数据类型 | ASCII码或者Character的getNumericValue()方法 |
3.程序结构、运算符
- 断言
- 代码优先级
- 隐含的自动类型转换(常量表达式与T, 按照T)
- &非短路 &&短路
4.反射
- 当程序运行时,需要动态的加载一些类Class.forName
- 主要是指程序可以访问、检测和修改它本身的状态或行为的一种能力
最后
以上就是苹果口红为你收集整理的Java程序员面试宝典笔记1.JVM2.数据类型转换3.程序结构、运算符4.反射的全部内容,希望文章能够帮你解决Java程序员面试宝典笔记1.JVM2.数据类型转换3.程序结构、运算符4.反射所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复