Java语言的特点与工作原理
Java语言的特点
1.简单性
Java语言与我们常听到的C++语言很像,但是没有C++那么繁琐。因为Java就是在C++之上设计出来的,设计者把C++的一些特性去掉了,这些特性在实际开发中,程序员也很少用到。
例如:Java中是没有go to语句的,取而代之的是break、continue以及异常的处理。
Java中只有单继承,没有多继承,但是可以用接口(可以理解为类)来多实现(以达到多继承的作用)。
Java是面向对象的,没有结构,在Java中数组和串都是对象,所以Java中也没有指针。
Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必位存储管理问题受阻,能将更多的时间与精力用来编写程序上。
2.面向对象
我们都知道Java同很多编程语言一样是属于面向对象的。那么什么是面向对象呢?通俗的来说“万物皆对象”。这句话理解起来不难,但是Java面向对象的核心思想是要靠时间磨练才能完全理解的。那么在一个面向对象的程序中都有什么呢?有:类(class)、对象(object)。类是数据和用来操作数据的方法的集合。数据和方法一起描述对象,一般来讲,把数据称作对象的属性,而方法称作对象的行为。比如:一个人,他的名字,年龄,性别等等就是他的属性,而他的动作就是行为。而这个人就可以当作是一个对象。在现实生活中,是先有对象再有类的。比如:先有的一个一个的人对象,把这些一个一个的人对象组成的整体我们称为人类。但是在Java中是完全相反的,Java是先有的类再有的对象。为什么呢?很好理解,先由类来组织代码,而再由对象来封装数据。在写一个程序的时候我们的第一行代码就是声明一个类,然后其余的数据全是在类里面的。Java的整体结构也是由类来展开的。
3.分布性
Java支持在网络上应用,它是分布式语言。它既支持各种层次结构的网络连接,也以Socket类来支持流(Stream)的网络连接。所以用户可以产生分布式的客户端与服务端。而网络可以理解为软件应用的分布式运载工具。Java程序只需要编写一次,就可以到处运行。
4.编译与解释性
Java程序在执行的时候会先编译生成字节码(byte code),而不是机器码(0与1)。Java字节码提供对体系结构中性的目标文件格式,代码被设计成有效的传送到多个平台上。也就是说,Java可以在任何实现了“Java解释程序和运行系统”的系统上运行。
5.稳健性
Java设计之初是用作消费类电子产品软件的语言,所以它被设计成写可靠和稳健的软件的。Java消除了某些编程错误,使得它写稳健程序更加容易。Java是一个强类型的语言,它允许扩展编译时检查潜在类型不匹配的问题。所以Java要求显式的方法声明,而不是C语言那样的隐式声明。因为Java不支持指针,所以它消除了重写存储和讹误数据的可能性。取而代之的异常处理是Java中更稳健的特性。异常(Exception)就是某种类似于错误的信号,但不是错误(Error)。对待异常,Java有两种处理方式,捕获(try-catch-finally)和抛出(throw/throws)。这样就方便找到可能出错的代码并加以处理,从而简化了出错的机率。
6.安全性
Java的存储分配模型是它防御恶意代码的主要方法之一。Java中没有指针,所以在写程序的时候不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是Java编译程序不处理存储安排决策,编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储的地址。Java运行系统使用字节码验证来保证装载到网络上的代码不违背Java语言的限制。这个安全机制部分包括类如何从网上装载。
7.可移植性
Java语言声明不依赖于实现的方面。例如:Java显式的说明每个基本数据类型的大小和它的运算行为。而Java语言的环境本身对新的硬件平台和操作系统都是可移植的。Java编译程序也是用Java编写的,而Java运行系统是用ANSIC语言编写的。
8.高性能
Java是先编译后解释的语言。所以它不如全编译性的语言快。但是在很多情况下性能是很要紧的,为了支持这些情况。Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定的CPU(中央处理器)机器码,也就是说从某个层面讲是实现全编译了。Java字节码的格式在设计时考虑到了这些“及时”编译程序的需要,所以生成机器代码的过程是相当简单的,它能产生相当好的代码。
9.多线程性
Java是多线程语言,它提供多线程的执行,能处理不同任务,使具有线程的程序设计很容易。Java的lang包下提供了一个Thread类,它支持开始线程、运行线程、停止线程和检查线程状态的方法。Java的线程支持也包括一组同步原语。这些原语是基于监督程序和条件变量防范的,由C.A.R.Haore开发的广泛使用的同步化方案。用关键字synchronized可以说明某些方法在一个类中不能并发执行。这些方法在监督程序的控制之下,确保变量维持在一个一致的状态。
10.动态性
Java被设计成适用于变化环境的动态语言。例如:Java中的类是根据需要加载的,甚至有些是通过网络获取的。
工作原理
Java工作原理由四方面组成:
(1)Java编程语言
(2)Java类文件格式
(3)Java虚拟机(JVM)
(4)Java应用程序接口
当编辑并运行一个Java程序时,需要同时涉及到这四方面。使用文字编辑软件(例如:记事本、写字板、UltraEdit)或集成开发环境(Eclipse、MyEclipse)在Java源文件中定义不同的类(这些类实现了JavaAPI),通过调用类中的方法来访问系统资源,把源文件编译生成一种二进制中间码,储存在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的JavaAPI调用。
Java语言的特点与工作原理的更多相关文章
- Java垃圾回收机制的工作原理
Java垃圾回收机制的工作原理 [博主]高瑞林 [博客地址]http://www.cnblogs.com/grl214 获取更多内容,请关注小编个人微信公众平台: 一.Java中引入垃圾回收机制的作用 ...
- Java中的HashMap的工作原理是什么?
问答题23 /120 Java中的HashMap的工作原理是什么? 参考答案 Java中的HashMap是以键值对(key-value)的形式存储元素的.HashMap需要一个hash函数,它使用ha ...
- 2019 Android 高级面试题总结 从java语言到AIDL使用与原理
说下你所知道的设计模式与使用场景 a.建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 使用场景比如最常见的AlertDialog,拿我们开发过程中举例,比如C ...
- Java按位取反运算符“~”的工作原理
说明:本文参考了文章<Java按位取反运算符“~”>,链接:https://blog.csdn.net/smilecall/article/details/4245447 补充:位运算符( ...
- Java 内存管理、JVM 工作原理与 Java 运行时系统
Java 虚拟机规范中说明:所有的对象实例(all class instances)以及数组都要在堆上分配: the heap is the runtime data area from which ...
- Java GC机制简要总结(Java垃圾回收的基本工作原理)
第一次编辑 2019-05-07 01:09:39 垃圾回收的对象 程序中的不可用对象(不存活的对象,没有任何引用),或者无用的变量信息等,在程序中长期存在会逐渐占用较多的内存空间,导致没有足够的空间 ...
- [GO]用go语言实现区块链工作原理
基本原理这里就不写了,只写一个简单demo的实现 首先得有一个区块用来存储区块头和区块体 type Block struct { Version int64 PreBlockHash []byte H ...
- Java工作原理:JVM,内存回收及其他
JAVA虚拟机系列文章 http://developer.51cto.com/art/201001/176550.htm Java语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种We ...
- Struts2(一)入门及工作原理
Apache Struts 2 是一种流行的 Java模型 - 视图 - 控制器(MVC)框架,成功地结合了 WebWork和Struts1.x 两种 web 框架. Apache Struts2与S ...
随机推荐
- ajax图片上传(asp.net +jquery+ashx)
一.建立Default.aspx页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=&q ...
- MongoDB的使用学习之(三)安装MongoDB以及一些基础操作
原文链接:http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html 此博主的 8天学通MongoDB 系列还是不错的,本 ...
- Oracle 11g+Windows10 x64安装、配置过程记录
备注:本想在自己电脑上安装个oracle练习用,但是害怕安装过程中出现问题,而oracle的卸载又是出了名的麻烦,所以用虚拟机搭建了一个跟本机一样的系统,同时记录下安装的每一步. 环境:windows ...
- 数据写入到Excel,模板样式复杂
先整理好Excel模板,如: 接下来在程序获取上面整理好的Excel模板并替换关键字就可以了public ActionResult SummaryStatistics() public ActionR ...
- python字符串前面的u,还有r
以u或U开头的字符串表示unicode字符串 如果你想要用非英语写文本,那么你需要有一个支持Unicode的编辑器.(了解一下unicode和ascll码还有utf-8) u'你好' # ...
- NASA CEA 安装指南
有用的网站: http://www.engr.colostate.edu/~marchese/combustion08/cec.html 1 把三个压缩包解压到同一个Ubuntu文件夹CEAexec下 ...
- 暴力&打表
_LH巨神好像不太会打表,这里来普及一下 还有暴力这么重要的东西网上讲的人竟然不多…… 一.打表 打表,就是针对一些输入数据比较小的题目的一种骗分技巧,当然有时候也可以在正解或暴力中起一定优化作用. ...
- Linux下安装Harbor 1.8.0 仓库的安装和使用(亲测)
根据Harbor官方描述: Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源Docker Distri ...
- <R语言编程艺术>的一个错误以及矩阵相加
R语言编程艺术讲矩阵这节时,举了个随机噪声模糊罗斯福总统画像的例子.但是里面似乎有个错误,例子本意是区域外的值保持不变,而选定区域的值加一个随机值,但是实际情况是两个行列不相等的矩阵相加,会报错,如果 ...
- spring mvc中的@Entity是什么意思?
@Entitypublic Class JavaBean{}标注该类为实体类.