zoukankan      html  css  js  c++  java
  • java基础-基本环境与类加载及程序运行

    基本环境

    对于不同操作系统的有不同的jvm,常用的之前是classic,现在常用的是hotspot。

      jdk:java developement kit

      jre:java runtime evoroment

      jvm:java virtual metcial

      

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

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

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

    类加载

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

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

      classloader在load class的时候首先找上层是不是load过了,如果已经load了,就不会再此load。因此导致安全性是非常好的,自己写的String.class永远没有机会执行(破坏性代码),即如果重写java.lang.String代码自己的写永远无法执行,因为jre已经load过这个class文件了,加不会加载用户写的java.lang.String文件。所有的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());
        得到jre下的classloader
        System.out.println(com.sun.crypto.provider.DESKeyFactory.class.getClassLoader().getClass().getName());

    在.java文件中,只能有一个public类。
        
          1.使用命令行的方式
            
            .java文件名如果与主类名中的class文件不同,则运行程序步骤是:
            1.javac 文件名.java
            2.java 主类名

    Ps:如果主类是公共的则必须使类名与文件名相同



          2.使用eclipse中书写java文件    

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

        注意:最先有数据的是方法区

  • 相关阅读:
    计算两个日期相差的天数
    获取当前星期几
    window下重置mysql用户密码
    window下安装mysql
    oracle用户密码过期如何处理?
    awk
    RunLoop
    通知中心
    KVO
    多线程
  • 原文地址:https://www.cnblogs.com/chaojibaidu/p/10554583.html
Copyright © 2011-2022 走看看