mysql与oracle

    xiaoxiao2021-03-26  31

    java基础知识总结

    对应不同的操作系统平台有不同的java虚拟机

    jdk>jre>jvm

    classpath配置的作用:一个类要用到另一个类到classpath路径中去,在jdk1.5中默认是在当前目录下去查询要运行的.class文件

    path:在path去找到运行的javac命令

    java_home:配置好后其它软件运行只需要在%JAVA_HOME%/bin,查找到javac与其它的命令

    在.java文件中,只能有一个public类。

    1.使用命令行的方式 .java文件名如果与主类中的class文件不同,则运行程序步骤是: 1.javac 文件名.java 2.java 主类名 2.使用eclipse中书写java文件 运行.java文件,如果主类没有没有去写public类型,而且主类文件名与.java程序文件名不同,则会出现运行出错,因为eclipse会去找同名的class文件去运行 运行步骤是: 1.javac 文件名.java 2.java 文件名

    类的加载

    程序运行过程是:ClassLoader将其Load到内存中CodeSegment,运行环境找到main方法开始执行,classsLoader的类加载机制是并非一次性加载,需要的时候加载(运行期间动态加载)

    如果想要得到class加载时候的详细信息 需要在Aguments的Vm arguments中加载-verbose:class

    关于class loader的层次关系(不是继承)

    classloader在load class的时候首先找上层loader是不是load过了,如果已经load了,就不会再此load 因此导致安全性是非常好的,自己写的String.class永远没有机会执行(破坏性代码),即如果重写java.lang.String代码自己的写永远无法执行,因为jre已经load过这个class文件了,加不会再加载用户写的java.lang.String文件

    java.lang.Class 代表了load到内存中的Class对象 Object的getClass()可以拿到该类对象(等同于类名:.class) Class的getClassLoader可以拿到装载这个class的ClassLoader

    所有的classloader都是从 ClassLoader这个类继承而来 System.out.println(com.gudai.NumTest.class.getClassLoader().getClass().getName());

    application classloader中有一个parent引用指向ext class loader而后以此类推

    分别得到classloader的名称 得到最开始的classloader System.out.println(String.class.getClassLoader()); 得到当前类的classloader即ApplicationClassLoader System.out.println(com.gudai.NumTest.class.getClassLoader().getClass().getName());

    转载请注明原文地址: https://ju.6miu.com/read-662631.html

    最新回复(0)