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 ...
随机推荐
- 移动端300ms延迟原理,穿透、遮罩层滑动导致下面滑动总结
遮罩层滑动导致下面滑动 1,阻止弹层滑动,使用默认事件,使用这种方式弹层不能滑动 document.getElementById("model").addEventListener ...
- Linux性能优化从入门到实战:04 CPU篇:CPU使用率
CPU使用率是单位时间内CPU使用情况的统计,以百分比方式展示. $ top top - 11:46:45 up 7 days, 11:52, 1 user, load average: 0.00 ...
- html中的块级元素和行内元素
块级元素:块级大多为结构性标记 <address>...</adderss> <center>...</center> 地址文字 <h1> ...
- Codeforces Round #425 (Div. 2) - B
题目链接:http://codeforces.com/contest/832/problem/B 题意:给定一个好字母集合(只有小写字母,除了这些外其余都是坏字母集合),给定一个匹配模式串, 模式串只 ...
- 从1到n整数中1出现的次数(整数中1出现的次数)
题目 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.AC ...
- openprocess打不开 如何读取exe路径描述
openprocess打不开 如何读取exe路径描述 openprocess打不开 如何读取exe路径描述 https://bbs.pediy.com/thread-210652.htm https: ...
- vue2.0 通信
一.父子组件通信 父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息 具体机制如下图: 1.父组件传递数据给子组件 ( parent ==> child ...
- 树形dp专栏
前言 自己树形dp太菜了,要重点搞 219D Choosing Capital for Treeland 终于自己做了一道不算那么毒瘤的换根dp 令 \(f[u]\) 表示以 \(u\) 为根,子树内 ...
- 覆盖(Override)和重写(Overload)的区别
Overload Overload是重载的意思. 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同). Overload对我们来说可能比较 ...
- 【XSY2472】string
题目 Description 输入文件: string.in 输出文件: string.out 给定一个由且仅由字符 'H' , 'T' 构成的字符串 \(S\) . 给定一个最初为空的字符串 \(T ...