类加载&对象实例:https://www.jianshu.com/p/e1e00bbf29dc
虚拟机的类加载机制定义:把描述类的数据从Class
文件(一串二进制的字节流)加载到内存,并对数据进行校验、转换解析和初始化,最终形成被虚拟机直接使用的Java
类型。
在Java
语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,Java
里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。
用户可以通过Java
预定义的和自定义类加载器,让一个本地的应用程序可以在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分。
java具有可移植性:
(1)确定每种基本类型所占用的存储空间,不随着机器硬件架构的变化而变化。
(2)Java用编译器编译成字节码,字节码用解释器运行,同一字节码在不同的操作系统下被不同的解释器运行,从而实现java的跨平台性。
Java先编译成字节码(中间码),而不是二进制码,由JVM来进行解释运行,JVM将统一的中间码编译成对应操作系统的二进制码,然后执行。不论在什么系统中编译的java,得到的都是统一的字节码,然后各个不同人的操作系统都有对应的JVM(虚拟机)来编译成相应的二进制码。
泛型和object区别:
泛型是指将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。
你可以将泛型理解成替换,在使用的时候将泛型参数替换成具体的类型,这个过程是在编译的时候进行的,使用泛型编译器依然能够检测出类型错误。
而object表示其他类型是通过类型转换来完成的,而所有类型转化为object类型都是合法的,所以即使你先将object对象赋值为一个整数再赋值为一个字符串,编译器都认为是合法的。