java之虚拟机详解

        java虚拟机即在机器和程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口,这样编译程序只需要生成虚拟机能够理解的代码即可,虚拟机接收到代码后,由其内部的解释器将代码转换为特定系统(windows,linux等系统)的机器码执行。这就解释了java的跨平台,想起了那时刚学习java老师说的:一次编译,到处运行。能这么NB多亏了解释器,解释给各个特定机器。

        举个简单的例子,香港人只懂粤语,河南人只能听懂豫语,上海人只能听懂沪语,(上海人,沪语-假设编者没有地域偏见)这个村长要通过村里喇叭开会,如何才能是三个地方的人都听懂呢?用普通话叙述,而三个地方的人都带有语言解析器,例如河南人带的解析器可以将普通话转化为豫语,其他类似。这样大会就可以完整召开了。

      上述例子中,普通话就是.class文件,语言解析器就是java虚拟机。

      下面看一下java_andy给出的详细过程

      *.java→*.class→机器码→java编译器 (编译) → 虚拟机(解释执行) →  解释器(翻译) → 机器码

     

java中,类加载器把一个类装入java虚拟机需要经过三个步骤来完成:装载、链接、初始化。其中链接又分为校验、准备、解析过程

装载:查找和导入.class文件

链接:检查装入.class文件的正确性,然后,java虚拟机为变量分配内存,设置默认值。

初始化:把符号引用变成直接引用....

 

 1 public class  Main {  
 2 
 3 private static int size=1;  
 4 
 5 public static void main(String args[]) {   
 6 
 7 User u = new User();  
 8 
 9 u.setName("李文水");  
10 
11 u.setPwd("159");  
12 
13 String name = u.getName();  
14 
15 String pwd = u.getPwd();  
16 
17 u = null;  
18 
19 }  
20 
21 }  
22 
23 public class User {  
24 
25 private String name;  
26 
27 private String pwd;  
28 
29 public String getName() {  
30 
31 return name;  
32 
33 }  
34 
35 public void setName(String name) {  
36 
37 this.name = name;  
38 
39 }  
40 
41 public String getPwd() {  
42 
43 return pwd;  
44 
45 }  
46 
47 public void setPwd(String pwd) {  
48 
49 this.pwd = pwd;  
50 
51 }  
52 
53 } 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值