对Java语言的理解
Java语言理解
- 1.平台无关性
- 2 自动进行内存分配与垃圾回收
- 3 面向对象的思想(抽象、封装、继承、多态)
- 4 众多类库
- 5 异常处理机制
- 6 语言特性(泛型、反射、lambda表达式)
- 7 编译与解释并存
1.平台无关性
传统的编程中,源代码编译为可执行的代码后,只能针对特定的平台(操作系统),换句话说,针对Windows编写和编译的代码,只能在Windows上运行。。。
java程序则编译为字节码。字节码本身不能运行,因为它不是原生代码。字节码只能够在Java虚拟机(JVM)上运行。JVM是一个原生应用程序,它负责解释字节码,不同的操作系统对应不用的jvm。通过使用JVM可用在众多的平台上运行程序。
简单来说:java源文件(.java)通过编译器生成字节码文件(.class),字节码文件(.class)通过JVM(Java虚拟机)中的解释器再翻译成特定机器上的机器码,然后在特定的机器上运行。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。
2 自动进行内存分配与垃圾回收
3 面向对象的思想(抽象、封装、继承、多态)
4 众多类库
5 异常处理机制
6 语言特性(泛型、反射、lambda表达式)
7 编译与解释并存
字节码->机器码这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT 编译器,而JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言。
对Java语言的理解相关推荐
- 【Java基础】从Java语言层面理解BIO,NIO,AIO(二)
文章目录 零.从网络层面理解BIO,NIO,AIO 一.相关概念 1.什么是socket? 2.IP地址(IP Address) 3.端口(Port) 4.协议(Protocol) 4.1.协议简介 ...
- Go语言 和 Java语言对比理解系列四:门闩(WaitGroup/CountDownLatch)
文章目录 Java中的门闩最基础的实现方式就是CountDownLatch,可以参考之前的文章<使用三个线程,按顺序打印X,Y,Z,连续打印10次>: 而Go中可以通过sync.WaitG ...
- java二级程序题两个角度_两个角度图_【SCME大一】使用JAVA语言深入理解程序逻辑答案_学小易找答案...
[填空题]<蝶恋花 ·伫倚危楼风细细 >的作者( ). [简答题]简要概述问卷调查的整体设计? [填空题]父母在,( ),游必有方. [填空题]白居易与刘禹锡并称"( )&quo ...
- 使用Java语言深入理解程序逻辑——循环结构进阶
1.for循环 (1)语法: for(参数初始化 ;条件判断 ; 更新循环变量:){ (循环体:) } (2 ...
- 解惑(三)----- 深入理解Python中的self参数和__init__(self)方法--通过类比Java语言
一.前言 在这里我想通过用Python和Java语言的类比来对Python中的self参数和__init__(self)方法做一个深入的解释.这样可以加深对self参数和__init__(self)方 ...
- Java语言程序设计 上机实验2 掌握Java的基本语言成分和流程控制语句。 掌握Java中数组的使用,理解引用数据类型。 掌握String类的使用。...
Java语言程序设计 上机实验2 实验目的: 掌握Java的基本语言成分和流程控制语句. 掌握Java中数组的使用,理解引用数据类型. 掌握String类的使用. 实验内容: 注:标(*)为选做内 ...
- java面向对象的理解_java胜于C语言,却又静态面向对象,简单?
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语言作为静态面向对象编程语言的代 ...
- 深入理解JVM:Java语言与JVM关系
在那个电闪雷鸣,群鸟环绕的夜晚,一个不为人知的语言Oak诞生了,此时正值1991年4月份,气温舒适,百花齐放.然而Oak的诞生并没有得到人们的关注,直到1995年5月23号,Oak决定正是更名为Jav ...
- java看不起c语言,为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解。比如各种继承介面。包之间的关系。...
为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解.比如各种继承介面.包之间的关系.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...
最新文章
- Linux编译lclntsh,Linux下编译C/C++时,出现/usr/bin/ld: cannot find -l*** 错误的处理
- 搭建Python+Django开发环境
- Myeclipse修改设置Default VM Arguments
- 获取批量导入数据后,所产生所有自增ID的值
- Node.js格式化输出json文件
- 动态载入.ascx用户控件
- ztek usb转串口 linux,Z-tek驱动下载_Z-tek usb转串口驱动官方下载 - 系统之家
- 计算机编程和机器人编程有什么不同,编程和机器人编程的区别
- 自编译 极路由2 大麦DW22D/DW203D/DW204D openwrt路由器固件分享
- SQL server 数据库 实验一
- android百度地图poi路线规划,百度地图开发之poi检索,线路规划(示例代码)
- 尤雨溪:先学算法,再学源码!
- 什么是“蓝牙距离感应装置”
- CF连杀喊话_WeGame修改
- 安卓 手柄 linux,Linux joystick 游戏手柄编程 (获取输入数据)
- 【Python小工具】若干图片合并生成动态图(.gif)
- SQL 中的注释语句
- requirejs的缺点
- Jupyter notebook 绘图时,如何生成高清图片?
- 深入理解Android之Gradle