Java 的工作原理

 
java虚拟机是软件模拟的计算机,可以在任何处理器上(无论是在计算机中还是在其它电子设备中)安全并且兼容的执行保存在.class文件中的字节码。java虚拟机的"机器码"保存在.class文件中,有时也可以称之为字节码文件。java程序的跨平台主要是指字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行,java虚拟机中的java解释器负责将字节码文件解释成为特定的机器码进行运行。java源程序需要通过编译器编译成为.class文件(字节码文件),java程序的编译和执行过程如上图所示。
 
 
  1. //这是我们的第一个java application,该程序保存在文件Property.java中

  2. import java.util.*; /*下面我们用到了Date和Properties这两个类,是

  3. 属于java.util这个包的;*/
  4. /*而System和Runtime这两个类,是属于
  5. java.lang这个包的。*/

  6. public class Property{ //程序员给这个类取名为Property
  7.     public static void main(String args[]){ //main是类的主方法
  8.         System.out.println(new Date( )); //在命令行下面打印出日期
  9.         Properties p=System.getProperties( ); //获得系统的Properties对象p
  10.         p.list(System.out); //在命令行下打印出p中的各个系统变量的值
  11.         System.out.println("--- Memory Usage:"); /*打印一行字符串---Memory Usage*/
  12.         Runtime rt=Runtime.getRuntime( ); //获得系统的Runtime对象rt
  13.         System.out.println("Total Memory= "
  14.             + rt.totalMemory( ) //打印总内存大小
  15.             +" Free Memory = "
  16.             +rt.freeMemory( )); //打印空闲内存大小
  17.     }
  18. }
 
在java中,程序都是以类的方式组织的,java源文件都保存在以java为后缀的.java文件当中。每个可运行的程序都是一个类文件,或者称之为字节码文件,保存在.class文件中。而作为一个java application,类中必须包含主方法,程序的执行是从main方法开始的,方法头的格式是确定不变的:
   public static void main(String args[])
 
其中关键字public意味着方法可以由外部世界调用。main方法的参数是一个字符串数组args,虽然在本程序中没有用到,但是必须列出来。

  程序的第一行非常有意思:
    System.out.println(new Date());
  
  打印语句的参数是一个日期对象Date,而创建Date对象的目的就是把它的值发给println()语句。一旦这个语句执行完毕,Date对象就没用了,而后"无用内存回收器"会将其收回。

第二行中调用了System.getProperties( )。从帮助文档中可知,getProperties( )是System类的一个静态方法(static 方法),由于它是"静态"的,所以不必创建任何对象就可以调用该方法。在第三行,Properties对象有一个名为list( )的方法,它将自己的全部内容都发给一个PrintStream对象,该对象就是list()方法的参数。

  第四行和第六行是典型的打印语句,其中第六行通过运算符"+"的重载来连接多个字符串对象,在java中只有当"+"运算符作用于字符串时在能够进行重载。但是让我们仔细观察下述语句:
   System.out.println("Total Memory= "
           + rt.totalMemory( ) //打印总内存大小
           +" Free Memory = "
           +rt.freeMemory( )); //打印空闲内存大小

  其中,totalMemory( )和freeMemory( )返回的是数值,并非String对象。如果将一个字符串与一个数值相加,结果会如何?在这种情况下,编译器会自动调用一个toString()方法,将该数值(int型或者float型)转换成字符串。经过这样处理以后,就可以用"+"进行字符串连接了。

  main()的第五行通过调用Runtime的getRuntime()方法创建了一个Runtime对象,该对象中包含了内存等信息。
 


 
 
 
 
 
 
 
 
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(360) | 评论(0) | 转发(1) |
0

上一篇:java链表

下一篇:java语言规范

给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值