博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
谈谈对java的理解
阅读量:6672 次
发布时间:2019-06-25

本文共 1289 字,大约阅读时间需要 4 分钟。

谈谈对java的理解

围绕以下特性展开来谈:

  • 平台无关性(一次编译到处运行compile once,run anywhere

  • GC(垃圾回收机制

  • 语言特性(泛型、反射、lambda表达式……

  • 面向对象(封装、继承、多态

  • 类库(Java自带的集合、并发库、网络库、IO\NIO

  • 异常处理

一次编译到处运行是如何实现的

Java源码首先被编译成字节码,再由不同的JVM进行解析Java语言在不同的平台上运行时不需要进行重新的编译,Java虚拟机在执行字节码时,把字节码转换成具体平台上的机器指令。

查看字节码:javac编译后,javap -c查看

例:

1 public class Test{2     public static void main(String [] args){3         int i = 4;4         i = i++;5         int j = 5;6         j = ++j;7     }8 }

 

1 Compiled from "Test.java" 2 public class Test { 3   public Test(); 4     Code: 5        0: aload_0 6        1: invokespecial #1                  // Method java/lang/Object."
":()V 7 4: return 8 ​ 9 public static void main(java.lang.String[]);10 Code:11 0: iconst_4 //把4放到栈顶12 1: istore_1 //把栈顶的值放到局部变量1中(即4赋给i)13 2: iload_1 //把局部变量1的值放到栈顶,此时栈顶值为414 3: iinc 1, 1 //局部变量1(即i)增加1,但不会使栈发生变化,此时i变成515 6: istore_1 //把栈顶的值放到局部变量1中,即i这时由5变成416 7: iconst_517 8: istore_218 9: iinc 2, 1 //把局部变量2(即j)加1值变为6,但是栈顶中仍是5没有变19 12: iload_2 //把局部变量2的值放到栈顶,此时栈顶值为620 13: istore_2 //把栈顶的值放到局部变量2中,即j由5变621 14: return22 }

 

 

 

转载于:https://www.cnblogs.com/bce1100/p/10489579.html

你可能感兴趣的文章
Elastic-Job定时任务
查看>>
真实分享记录我学习Linux系统遇到的问题
查看>>
Linux下查找占用内存最多的进程
查看>>
mongodb 配置文件
查看>>
查看 docker 容器使用的资源
查看>>
Jedis的配置和优化
查看>>
layui + 阿里巴巴iconfont图标库导入
查看>>
2017总结一
查看>>
Spring boot 入门--1
查看>>
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
查看>>
Power Designer数据库建模工具,正向、逆向工程
查看>>
Libevent学习-02:搭建CentOS下的开发环境
查看>>
java操作Excel、word和pdf
查看>>
阿里巴巴常考面试题及汇总答案
查看>>
yum install 与 yum groupinstall 的区别
查看>>
Docker Swarm 编排及部署 PostGIS,并操作 GIS 数据
查看>>
当区块链遇上人工智能,这次变革的意义到底有多重大?
查看>>
Linux下安装python
查看>>
Go基础系列:读取标准输入(一)
查看>>
CAD打印文字不显示怎么办
查看>>