Java语言概述
发布时间:2023-07-01
java关键字2.jpg

Java语言是由美国SunMicrosystems公司开发的一种面向对象的程序设计语言。Java是从C++程序语言发展而来的,但比C++语言简单。该语言具有简单、高效、健壮、安全、与平台无关、可移植性好和多线程等特点。它是当前网络编程中的首选语言。

Java语言的历史

Java语言是在C++语言已广泛使用,Internet(因特网)发展迅速的历史背景下出现的,因此,Java语言源于C++语言,又与Internet同步发展。1991年,美国Sun Microsystems公司成立了一个开发面向家电(电视机、烤面包箱等)的编程软件小组,项目名称为“Green”,软件名称为“Oak”(一种橡树名)。当时C++语言已经比较成熟,自然成为他们开发软件的首选语言。后来,发现C++语言比较繁琐,并且安全性较差,不能满足要求,于是决定开发一种新的语言,当时取名为“Oak”。

Oak语言刚出世后几经磨难,是WWW挽救了它。Sun公司的一位创始人认为Oak语言的安全性和分布式系统非常适于Internet,于是采用了在Internet上免费使用的策略。后来经过继续发展和完善,1995年,Oak语言改名为Java语言。

Java语言发布后,发展顺利。Sun公司很快公布了完整的Java技术规范,在WWW厂商支持下,用Java编写的Applet小程序在浏览器内部嵌入也获得了成功。不久,又推出一套全新的基于Java语言的开放式多媒体格式和应用程序接口(application program interface,API);1995年底,又推出开放式、与平台无关的对象Java脚本语言(JavaScript),从而为Java语言的进一步推广使用开辟了美好前景。

由于Java语言具有较好的安全性和可移植性及与平台无关等特性,因此,它将为Internet开辟一个新时代;而Internet的发展,又促进了Java语言的开发利用。

        Java语言的特点

Java语言是一种卓越的程序设计语言。它具有下述特点。

1.面向对象

Java语言是一种面向对象的程序设计语言。面向对象是当前软件开发的先进技术和重要方法。面向对象的方法是基于信息隐藏和数据抽象类型的概念,利用类和对象的机制将数据和方法封装在一起,通过统一的接口与外界交互;通过类的继承机制实现代码重用。Java语言只支持单继承,但它却支持多接口。Java语言还支持方法重载和动态调用。总之,Java语言支持面向对象方法中的3个基本特性:封装性、继承性和多态性。面向对象方法反映了客观世界中现实的实体在程序中的独立性和继承性。这种方法有利于提高程序的可维护性和可重用性,还有利于提高软件开发效率和程序的可管理性。虽然,C++语言是面向对象的,但是它为了兼容C语言,不得不保留一些面向过程的成分;而Java语言去掉了C++语言中非面向对象的成分,因此,它是一个完全的面向对象的程序设计语言。

2.简单性

与面向对象程序设计的C++语言相比较,Java语言更加简单、高效,生成的可执行目标代码也短小。Java语言中取消了C++语言中很少使用的、难以理解的、容易混淆的和复杂麻烦的特性和内容。

(1)C++语言中,结构、联合和类的概念重合使用,Java语言中只保留了类的概念。

(2)Java语言中取消了 goto语言,增强结构化,Java语言支持带标号的 break语句和 continue 语句。

(3)运算符重载是C++语言的特点之一,由于它实际使用的少,作用也不大,Java语言不支持运算符重载。

(4)C++语言支持单继承和多继承;Java语言只支持单继承,不支持多继承,但它支持多接口。因为多继承给编程者带来了复杂性,在实际使用中发现多继承难以使用,容易混淆,又浪费资源。因此,取消多继承,使得Java语言更简单。

(5)指针是C语言的特点,在C++语言中指针比C语言使用少了,因为指针使用困难,容易混淆,因此,Java语言中取消了指针。

此外,Java语言还取消了C++语言中的预处理功能和内存空间的动态申请和释放功能,增添了内存空间自动回收功能。这些措施都使 Java 语言更简单、更方便。总之,Java是移除累赘和难以理解的部分之后的C++语言,它是更纯粹的面向对象的程序设计语言。

3.可移植性

与其他语言相比,用Java语言编写的程序可移植性比较高。Java语言为了保证可移植性采用了下述机制。

(1)Java语言规定同一种数据类型在各种不同的实现中,必须占据相同的内存空间。例如,short类型为16位,int型为32位,long类型为64位,它们与硬件平台无关。而C++语言不同,数据类型的长度与硬件环境或操作系统有关。例如,int型数据在Windows3.1中占16位,而在Windows2000中占32位。由于Java语言在数据类型的空间大小方面采用了统一标准,因此就保证了其程序的平台独立性。

(2)Java程序的最终实现需要经过编译和解释两个步骤。Java语言的编译器生成的可执行代码称为字节码,这种代码是由一种称为Java虚拟机(Java virtual machine,JVM)生成的,它与任何硬件平台无关。由于Sun公司规定的JVM规范没有涉及任何硬件平台,因此只要根据JVM规范创建的平台便可以实现Java程序。另外,Java程序生成字节码后,使用Java解释器来解释执行字节码,这意味着只要装有Java解释器的机器Java程序都可以运行。Java语言采用的这种先编译后解释的方法是以牺牲执行速度来换取了与平台无关,从而提高了可移植性。

4.稳定性和安全性

网络上应用程序要求更高度的稳定性和安全性。Java语言在稳定性和安全性方面采取了一些措施。

C++语言在稳定性和安全性方面最大的隐患是指针的使用和缺乏内存的自动管理。

(1)Java语言取消了指针概念。Java语言使用下标表示数组,并加强了下标的检查;使用类和类的方法访问变量,这样就解决了指针在数组和结构方面的应用。由于取消了指针的不安全性,因此增强了系统的健壮性。

(2)Java语言稳定性的另一个原因是自动的内存管理。在C++语言编程中,要经常申请资源和释放资源,稍不小心会造成系统故障或存储空间的浪费。而在Java语言中,增加了一个称为自动垃圾收集器的后台程序,它可用来对内存扫描,自动释放掉不再使用的内存碎片,进而实现了内存的自动管理。

(3)Java语言的运行环境中提供了安全机制的保障。首先,使用Java编译生成的字节码在进入Java解释器时,必须通过字节码校验器的检查,防止字节码在编译或解释期间有意或无意地被破坏,进而增加安全性。其次,Java解释器决定了程序中类的内存布局,使得有意破坏者无法预先知道类的内存布局结构,也就无法利用该信息来破坏系统。最后,用户可以限制从网络上装载的类只能访问某些被允许的系统,如文件和硬盘。另外,在信息传输过程中使用密码算法,增加了传输中的安全性。总之,通过上述种种措施,使得Java语言具有较好的稳定性和安全性,在一定程度上可以防止病毒和黑客的攻击。

5.高性能

Java语言采取了一些软件开发中的先进技术,从而表现出了它的高性能。

(1)结构中立,与平台无关。在设计Java语言时,考虑到该语言能在不同的平台都具有生命力,而采取了一种中性结构方式。主要表现在字节码的中介方式,它的生成与平台无关。另外还表现在类的定义上比较严格。对于类的数据成员在内存中占有空间大小是固定不变的,与系统无关。例如,int型数据占有4个字节。定义的变量都具有默认值(初值),并且类中定义的变量可以直接初始化(C++语言是不允许的)。

(2)高级语言通常分为两种:一种是为面向机器的编译型语言,这种语言执行效率高,但移植性差;另一种是解释性语言,这种语言编程效率高,但执行速度慢。Java语言程序是先编译后解释,介于二者之间。Java 语言编译后生成的字节码与机器语言很接近,从而获得较高的性能。

(3)操作系统中两个重要的概念是进程和线程。进程(process)的特点是在执行过程中拥有自己独立的内存空间和系统资源,不同进程的内存数据和状态是彼此独立的。线程(thread)在执行过程中共享一块内存空间和一组系统资源,线程之间可以直接进行数据交换。因此,线程比进程的开销要小。多个线程并行执行,类似于多个 CPU在同时运行。例如,有两个线程同时工作,一个线程在执行某种复杂的运算,而另一个线程可与用户实现交互。可见多线程可提高程序的运行效率。

Java语言真正的支持多线程。它通过同步关键字(synchronized)来保证多个线程不会同时访问一个被说明为同步的方法,从而使得某些关键操作不被打断。但是,这种做法有时会降低运行效率。

6. 分布性

Java语言是一种面向网络的高级语言。Java语言的应用程序编程接口具有支持超文本传输协议(Hypertext Transfer Protocol,HTTP)和文件传输协议(File TransferProtocol,FTP)等TCP/IP的类库。Java应用程序可以通过统一资源定位器(UniformResourceLocator,URL)地址直接访问Internet上的各种对象,就如同访问本地对象。    Java的小应用程序(applet)是跨平台的网络应用程序,它被嵌入超文本标记语言(Hypertext Markup Language,HTML)文件中,通过主页发布到Internet。用户访问到服务器的Applet程序时,它们将从Internet上传输,然后在支持Java的浏览器中运行。

7.java语言关键字

关键字是一种系统已定义了的标识符,又称保留字。用户不可用关键字作为标识符。

下面列出Java语言所使用的关键字:

java关键字2.jpg

上述关键字都用小写字母。

Java语言与C++语言相比,关键字有些变化。有些关键字是Java语言保留的没有意义的关键字,如cast,const,future,generic,goto,inner,operator, outer, rest, var 等。C++语言中的某些关键字,在Java语言不是关键字,如sizeof。

常用关键字含义

abstract :表明类或者成员方法具有抽象属性

boolean: 基本数据类型之一,布尔类型

break :提前跳出一个块

byte :基本数据类型之一,字节类型

case :用在switch语句之中,表示其中的一个分支

catch :用在异常处理中,用来捕捉异常

char :基本数据类型之一,字符类型

class :声明一个类

const :保留关键字,没有具体含义

continue :回到一个块的开始处

default :默认,例如,用在switch语句中,表明一个默认的分支

do :用在do-while循环结构中

double :基本数据类型之一,双精度浮点数类型

else:用在条件语句中,表明当条件不成立时的分支

enum :枚举

extends :表明一个类型是另一个类型的子类型,这里常见的类型有类和接口

final :用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量

finally :用于处理异常情况,用来声明一个基本肯定会被执行到的语句块

float :基本数据类型之一,单精度浮点数类型

for :一种循环结构的引导词

goto :保留关键字,没有具体含义

if :条件语句的引导词

implements: 表明一个类实现了给定的接口

import :表明要访问指定的类或包

instanceof :用来测试一个对象是否是指定类型的实例对象

int :基本数据类型之一,整数类型

interface: 接口

long :基本数据类型之一,长整数类型

native :用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的

new :用来创建新实例对象

package: 包

private:一种访问控制方式:私用模式

protected: 一种访问控制方式:保护模式

public :一种访问控制方式:共用模式

return :从成员方法中返回数据

short :基本数据类型之一,短整数类型

static :表明具有静态属性

strictfp :用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 [1]

super :表明当前对象的父类型的引用或者父类型的构造方法

switch :分支语句结构的引导词

synchronized: 表明一段代码需要同步执行

this :指向当前实例对象的引用

throw :抛出一个异常

throws :声明在当前定义的成员方法中所有需要抛出的异常

transient :声明不用序列化的成员域

try :尝试一个可能抛出异常的程序块

void :声明当前成员方法没有返回值

volatile :表明两个或者多个变量必须同步地发生变化

while :用在循环结构中


下一篇:我是有底线的