Java程序员面试宝典笔记

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)