Java基础——Java语言与面向对象

最近想回过头来梳理一下Java的基本知识,包括Java基本语法、Java重要的几个类库、希望通过本次分析Java源码与示例代码的过程,深入理解Java语言的设计思想和重要特性。这是第一篇博客,继续加油哇~~

一、Java语言简介

(1)Java语言的发展历程

1.Java语言的前身——Oak

20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意,因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度。Sun公司为了抢占市场先机,在1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用
由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大。另外由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,如何让编写的程序跨平台运行也是个难题。为了解决困难,他们首先着眼于语言的开发,假设了一种结构简单、符合嵌入式应用需要的硬件平台体系结构并为其制定了相应的规范,其中就定义了这种硬件平台的二进制机器码指令系统(即后来成为“字节码”的指令系统),以待语言开发成功后,能有半导体芯片生产商开发和生产这种硬件平台。对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。

2.Oak搁置原因

由于在开发Oak语言时,尚且不存在运行字节码的硬件平台,所以为了在开发时可以对这种语言进行实验研究,他们就在已有的硬件和软件平台基础上,按照自己所指定的规范,用软件建设了一个运行平台,整个系统除了比C++更加简单之外,没有什么大的区别。1992年的夏天,当Oak语言开发成功后,研究者们向硬件生产商进行演示了Green操作系统、Oak的程序设计语言、类库和其硬件,以说服他们使用Oak语言生产硬件芯片,但是,硬件生产商并未对此产生极大的热情。因为他们认为,在所有人对Oak语言还一无所知的情况下,就生产硬件产品的风险实在太大了,所以Oak语言也就因为缺乏硬件的支持而无法进入市场,从而被搁置了下来

3.互联网兴起为Java语言带来了生机

在这里插入图片描述

1994年6、7月间,在经历了一场历时三天的讨论之后,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器WebRunner。
1995年,互联网的蓬勃发展给了Oak机会。业界为了使死板、单调的静态网页能够“灵活”起来,急需一种软件技术来开发一种程序,这种程序可以通过网络传播并且能够跨平台运行。于是,世界各大IT企业为此纷纷投入了大量的人力、物力和财力。这个时候,Sun公司想起了那个被搁置起来很久的Oak,并且重新审视了那个用软件编写的试验平台,由于它是按照嵌入式系统硬件平台体系结构进行编写的,所以非常小,特别适用于网络上的传输系统,而Oak也是一种精简的语言,程序非常小,适合在网络上传输。Sun公司首先推出了可以嵌入网页并且可以随同网页在网络上传输的Applet(Applet是一种将小程序嵌入到网页中进行执行的技术),并将Oak更名为Java。5月23日,Sun公司在Sun world会议上正式发布Java和HotJava浏览器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微软等各大公司都纷纷停止了自己的相关开发项目,竞相购买了Java使用许可证,并为自己的产品开发了相应的Java平台。

(2)JDK说明

1.Java说明(jdk,jre,java关系)

在这里插入图片描述

什么是jdk?
Java Development Kit(JDK)是太阳微系统针对Java开发人员发布的免费软件开发工具包(SDK,Software development kit)。
什么是jre?
运行一个Java程序,普通用户不需要安装JDK来运行java程序,只需要安装JRE(Java Runtime Environment),而程序员必须安装JDK来进行编译调试运行。
Java版本选择
Java的jdk版本很多,命名方式也很多,若有兴趣去了解版本之间的关系的,可以参考其他资料。这里推荐使用jdk1.8版本,当然最新的版本也是可以的。
在这里插入图片描述

(3)Java语言的优势

  1. 简单: Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持goto语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上
  2. 面向对象: Java是完全面向对象的语言,所有的类都继承自一个共同的父类,也就是object类,Java语言的继承是单根继承,这样做的好处可以使垃圾回收器的实现更加容易。
  3. 编译和解释性 :java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行
    在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
  4. 可靠性: 可靠性方面最重要的增强之一是Java的存储模型。**Java不支持指针,它消除重写存储和讹误数据的可能性。**类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。
    **异常处理是Java中使得程序更稳健的另一个特征。**异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
  5. 可移植性: Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。
    Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。

二、面向对象的编程

(1)面向对象编程的发展

面向对象程序设计(Object-oriented Programming,OOP)同所有的程序语言发展相同,都是对某个问题进行抽象,汇编语言对底层机器的轻微抽象,而命令式的语言(如C等)则是对汇编语言的抽象,但这样的抽象过程始终是基于计算机体系结构的。我们将机器作为解决问题的“解空间”,问题业务作为问题空间,那么前面所说的抽象过程就是基于解空间的抽象,但是对于实际待解决的问题,仍然不能很好的表达出来。还有的语言只针对问题进行了抽象,如“LISP”和“ALP”等,但实际问题是非常多的,这类语言有着很强的局限性。于是面向对象的程序设计就出现了。我们将每一个对象看做是一个微型计算机,它具备处理某些事物的能力,而面对新的业务问题,我们只需要添加新的对象(就像增加一台新的微型计算机来解决问题),这样,我们既保证了与计算机体系结构的联系,程序员又可通过对象来进行业务的设计和处理,因此,当你阅读一个面向对象的程序的时候,你更像是在阅读一件事情,由不同的个体来解决这个问题。

(2)万物皆对象

将一个对象可以看做一个独立的个体,它可以提供很多的服务,以及它本身可以存储一定的数据,就像一个人,除了具备自己本身的一个属性之外,还可以具有这个人特有的行为和能力。而一个程序,则是由许多的对象组成的,它们通过发送消息来告知彼此所要做的事情。一个程序,就是要去解决一件事情,而所有的对象都要去解决这个问题,它们相互协作,完成这个任务

(3)所有对象都有一个接口

对象之间要互相通信告知对方要做什么,怎么交流呢?每一个对象都对外有一个接口,去告知对方:“我可以做。。。”而其他对象就可以通过它可以做的事来通知它完成任务。而在类中,这样的接口就是成员函数,不需要外部知道我怎么做的,只需要知道可以做些什么事就行了。

(4)面向对象的代码复用

面向对象最了不起的优点之一就是程序代码的复用,类写好了便可以通过通过创建这个类的对象来使用它,并且类中也可以创建成员对象,新的类可以有任意数量的其他类的对象组成,形成一个具有新的功能的类,这样,我们在书写新的类的时候,就不用从底层开始设计类了,可以基于之前所写的类来进行快速开发,Java提供了非常多的类,这些类都是写好的,可以直接用的类,这些丰富的类,也是Java保持长久生命力的一个重要因素。

(5)继承与多态

这个内容会在后面的章节具体讲解

参考文献:百度百科

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值