Chinaunix首页 | 论坛 | 博客
  • 博客访问: 284380
  • 博文数量: 87
  • 博客积分: 1206
  • 博客等级: 少尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-16 00:12
个人简介

do the right things the right ways

文章分类

全部博文(87)

文章存档

2017年(5)

2016年(6)

2015年(1)

2012年(11)

2011年(64)

分类:

2011-10-20 21:13:55

原文地址:Java 的工作原理 作者:lanlovehua

 
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对象,该对象中包含了内存等信息。
 


 
 
 
 
 
 
 
 
阅读(513) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~