Java语言十大基础特性分析
Java语言的作者们编写了具有广泛影响的Java白皮书,里面详细地介绍了他们的设计目标以及实现成果,还用简短的篇幅介绍了Java语言的特性。下面将对这些特性进行介绍。
1. 简单
Java语言的语法简单明了,容易掌握,而且是纯面向对象的语言。Java语言的简单性主要体现在以下几个方面:
- 语法规则和C++类似。从某种意义上讲,Java语言是由C和C++语言转变而来的,所以C程序设计人员可以很容易地掌握Java语言的语法。
- Java语言对C++进行了简化和提高。例如,Java使用接口取代了多重继承,并取消了指针,因为指针和多重继承通常使程序变得复杂。Java语言还通过实现垃圾自动收集,大大简化了程序设计人员的资源释放管理工作。
- Java提供了丰富的类库和API文档以及第三方开发包,另外还有大量的基于Java的开源项目,JDK(Java开发者工具箱)已经开放源代码,读者可以通过分析项目的源代码,从而提高自己的编程水平。
2. 面向对象
面向对象是Java语言的基础,也是Java语言的重要特性,它本身就是一种纯面向对象的程序设计语言。Java提倡万物皆对象,语法中不能在类外面定义单独的数据和函数,也就是说,Java语言最外部的数据类型是对象,所有的元素都要通过类和对象来访问。
3. 分布性
Java的分布性包括操作分布和数据分布,其中操作分布是指在多个不同的主机上布置相关操作,而数据分布是将数据分别存放在多个不同的主机上,这些主机是网络中的不同成员。Java可以凭借URL(统一资源定位符)对象访问网络对象,访问方式与访问本地系统相同。
4. 可移植性
Java程序具有与体系结构无关的特性,可以方便地移植到网络上的不同计算机中。同时,Java的类库中也实现了针对不同平台的接口,使这些类库可以移植。
5. 解释型
运行Java程序需要解释器。任何移植了Java解释器的计算机或其他设备都可以用Java字节码进行解释执行。字节码独立于平台,它本身携带了许多编译时的信息,使得连接过程更加简单,开发过程更加迅速,更具探索性。
6. 安全性
Java语言删除了类似C语言中的指针和内存释放等语法,有效地避免了非法操作内存。Java程序要经过代码校验、指针校验等很多测试步骤才能够运行,所以未经允许的Java程序不可能出现损害系统平台的行为,而且使用Java可以编写防病毒和防修改的系统。
7. 健壮性
Java程序的设计目标之一,是编写多方面的、可靠的应用程序,Java将检查程序在编译和运行时的错误,并消除错误。类型检查能帮助用户检查出许多在开发早期出现的错误。集成开发工具(如Eclipse、Netbeans)的出现也使编译和运行Java程序更加容易。
8. 多线程
多线程机制能够使应用程序在同一时间并行执行多项任务,而且相应的同步机制可以保证不同线程能够正确地共享数据。使用多线程,可以带来更好的交互能力和实时行为。
9. 高性能
Java编译后的字节码是在解释器中运行的,所以它的速度较多数交互式应用程序提高了很多。另外,字节码可以在程序运行时被翻译成特定平台的机器指令,从而进一步提高运行速度。
10. 动态
Java在很多方面比C和C++更能够适应发展的环境,可以动态调整库中方法和增加变量,而客户端却不需要任何更改。在Java中进行动态调整是非常简单和直接的。
以上就是关于Java语言的基础特性详细介绍,喜欢的朋友请继续关注我们!
相关推荐
-
Java8新特性之再见Permgen_动力节点Java学院整理
很多开发者都在其系统中见过"java.lang.OutOfMemoryError: PermGen space"这一问题.这往往是由类加载器相关的内存泄漏以及新类加载器的创建导致的,通常出现于代码热部署时.相对于正式产品,该问题在开发机上出现的频率更高,在产品中最常见的"问题"是默认值太低了.常用的解决方法是将其设置为256MB或更高. PermGen space简单介绍 PermGen space的全称是Permanent Generation space,是指内
-
Java8新特性lambda表达式有什么用(用法实例)
我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值.现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作(bulk operation),解开lambda最强作用的神秘面纱. 1.关于JSR335 JSR是Java Specification Requests的缩写,意思是Java 规范请求,Java 8 版本的主要改进是 Lambda 项目(JSR 335),其
-
Java中字符串去重的特性介绍
字符串在任何应用中都占用了大量的内存.尤其数包含独立UTF-16字符的char[]数组对JVM内存的消耗贡献最多--因为每个字符占用2位. 内存的30%被字符串消耗其实是很常见的,不仅是因为字符串是与我们互动的最好的格式,而且是由于流行的HTTP API使用了大量的字符串.使用Java 8 Update 20,我们现在可以接触到一个新特性,叫做字符串去重,该特性需要G1垃圾回收器,该垃圾回收器默认是被关闭的. 字符串去重利用了字符串内部实际是char数组,并且是final的特性,所以JVM可以任
-
Java 8 新特性终极版指南详解
前言: Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版.在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency.Java 8 Date Time API Tutorial : LocalDateTime和Abstract Class Versus Interface in the JDK 8 Era.本文还参考了一些其他资料,例如:15 Must
-
Java9的一些新特性介绍
被接受的特性 1. Jigsaw 项目;模块化源码 Jigsaw项目是为了模块化Java代码.将JRE分成可相互协作的组件,这也是Java 9 众多特色种的一个.JEP是迈向Jigsaw四步中的第一步,它不会改变JRE和JDK的真实结构.JEP是为了模块化JDK源代码,让编译系统能够模块编译并在构建时检查模块边界.这个项目原本是随Java 8发布的,但由于推迟,所以将把它加到Java 9. 一旦它完成,它可能允许根据一个项目需求自定义组件从而减少rt.jar的大小.在JDK 7 和JDK 8的r
-
JAVA8 十大新特性详解
"Java is still not dead-and people are starting to figure that out." 本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字. 一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: 复制代码 代码如下: interface Formula { double calculate(int a); default do
-
深入讲解Java 9中的九个新特性
本文主要跟大家分享了Java 9中的九个新特性,对大家具有一定的参考学习价值,下面来看看详细的介绍: 一. Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统.当代码库越来越大,创建复杂,盘根错节的"意大利面条式代码"的几率呈指数级的增长.这时候就得面对两个基础的问题: 很难真正地对代码进行封装, 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念.每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开
-
Java8新特性之lambda的作用_动力节点Java学院整理
我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值.现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作(bulk operation),解开lambda最强作用的神秘面纱. 1.关于JSR335 JSR是Java Specification Requests的缩写,意思是Java 规范请求,Java 8 版本的主要改进是 Lambda 项目(JSR 335),其
-
java新特性之for循环最全的用法总结
1. 增强for概述 增强for循环,也叫Foreach循环,用于数组和容器(集合类)的遍历.使用foreach循环遍历数组和集合元素时,无需获得数组和集合长度,无需根据索引来访问数组元素和集合元素,大大提高的效率,代码也简洁不少. 2. Oracle官网的解释 So when should you use the for-each loop? Any time you can. It really beautifies your code. Unfortunately, you cannot
-
Java语言十大基础特性分析
Java语言的作者们编写了具有广泛影响的Java白皮书,里面详细地介绍了他们的设计目标以及实现成果,还用简短的篇幅介绍了Java语言的特性.下面将对这些特性进行介绍. 1. 简单 Java语言的语法简单明了,容易掌握,而且是纯面向对象的语言.Java语言的简单性主要体现在以下几个方面: 语法规则和C++类似.从某种意义上讲,Java语言是由C和C++语言转变而来的,所以C程序设计人员可以很容易地掌握Java语言的语法. Java语言对C++进行了简化和提高.例如,Java使用接口取代了多重继承,
-
jQuery 3.0十大新特性
jQuery 3.0在日前发布了最终的全新版本.从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终版. 通过jQuery 3.0的版本更新说明 ,我们看到了一个保持着向后兼容的更轻便,更快速的jQuery.在本文中,我们将介绍一些令人眼前一亮的jQuery 3.0全新特性. 开始前的说明 如果你想要下载jQuery 3.0进行亲自实验,可以通过 该页面 进行下载.另外, 升级指南 和 源代码 也值
-
Java语言求解完美数代码分析
1.概念 首先我们理解一下,什么叫做完美数? 问题描述:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数.简称"完数" 例如, 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064 按照完数的定义,其实用程序求解完数并不是太难,先求解出这个数的所有真因子,然后相加,判断是否等于它本身即可.但是,在这个数
-
Java高效读取大文件实例分析
1.概述 本教程将演示如何用Java高效地读取大文件.Java--回归基础. 2.在内存中读取 读取文件行的标准方式是在内存中读取,Guava和ApacheCommonsIO都提供了如下所示快速读取文件行的方法: Files.readLines(new File(path), Charsets.UTF_8); FileUtils.readLines(new File(path)); 这种方法带来的问题是文件的所有行都被存放在内存中,当文件足够大时很快就会导致程序抛出OutOfMemoryErro
-
java语言求解兔子问题代码分析
1.思考 兔子问题,是费氏数列的形象化说法,它是由一位名为Fibonacci的数学家在它的著作中提出的一个问题. 2.描述 它体术的问题是:若有一只免子每个月生一只小免子,一个月后小免子也开始生产.起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产)...... 我们使用数学的方式表达出来,便是下面的一组数列: 1.1.2.3.5.8.13.21.34.55.89...... 注意:新生的小免子需一个月成长期才会投入生产!而且这些兔子是不死的哦!!!
-
jQuery 3.0十大新特性最终版发布
jQuery 3.0 最终版发布了.jQuery 3.0将是jQuery的未来.但如果你需要IE6-8支持,您可以继续使用最新版本1.12. jQuery 3.0在日前发布了最终的全新版本.从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终版www.lampbrother.net. 通过jQuery 3.0的版本更新说明,我们看到了一个保持着向后兼容的更轻便,更快速的jQuery.在本文中,我们将
-
java语言与平台基础知识点
使用Java之前,我们要先弄清楚Java语言和Java平台之间的区别.然而,有时候不同的作者对语言和平台的构成会有不同的定义,所以人们有时不太清楚两者之间的区别,分不清是语言还是平台提供了代码使用的编程特性. 因为本书的大部分内容都需要你理解两者的区别,所以这里需要说明一下.以下是我们给出的定义. Java语言 在"关于本书"中,我们提到Java语言是静态类型.面向对象的语言,希望你对这种说法已经非常熟悉了.Java语言还有一个非常明显的特点,它是(或者说应该是)人类可读的. Java
-
java版十大排序经典算法:完整代码
目录 十大排序算法对比 冒泡排序 完整代码: 测试代码: 运行结果: 快速排序 完整代码: 总结 十大排序算法对比 关于最后一列的稳定性,我稍微解释下,例如对序列:1 2 4 2 6 排序,序列中存在两个2,如果我们把这两个2标记上(让他俩不同),排序之后,前面的2还在前面,那么就称这种排序是稳定的,反之不稳定. 冒泡排序 简单解释: 原理就如算法名字一样,就像水中的气泡一样,每次我都把最大的或最小的放到最后面,这样总共需要n-1趟即可完成排序,这就是第一层循环,第二次循环就是遍历未被固定的那些
-
java版十大排序经典算法:完整代码(4)
目录 计数排序 完整代码: 桶排序 完整代码: 基数排序 完整代码: 完整测试类 总结 计数排序 简单解释:这个排序算法看名字也很好理解,就是就是额外找个数组来计数,然后在这个数组从小到大或从大到小把数取出来即可. 完整代码: package com.keafmd.Sequence; /** * Keafmd * * @ClassName: CountSort * @Description: 计数排序 * @author: 牛哄哄的柯南 * @date: 2021-06-24 11:31 */
随机推荐
- AngularJS学习笔记之表单验证功能实例详解
- JQuery创建DOM节点的方法
- 详解Angular的数据显示优化处理
- canvas时钟效果
- 深入理解PHP中的static和yield关键字
- python 链接和操作 memcache方法
- 在Python的setuptools框架下生成egg的教程
- 解析如何使用反射调用类型成员 方法,字段,属性
- node.js实现端口转发
- Shell脚本中调用、引用、包含另外一个脚本文件的两种方法
- php 团购折扣计算公式
- 第七篇Bootstrap表单布局实例代码详解(三种表单布局)
- Javascript小技能总结(推荐)
- IT世界与金山周末联合预报1225
- java 对象输入输出流读写文件的操作实例
- C#中StringBuilder类的使用总结
- 实现点击列表弹出列表索引的两种方式
- C#中WebClient实现文件下载
- php将图片保存为不同尺寸图片的图片类实例
- Ajax+Servlet实现无刷新下拉联动效果