mysql与oracle

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());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值