• [01] Java语言的基本认识



    0、写在前面的话

    我们都知道在计算机的底层,它是识别二进制的,也就是说,计算机只能认识0和1。这主要是因为电路的逻辑只有两种状态,所以只需要0和1两个数字就可以表示低电平和高电平。而计算机是由数不清的逻辑电路组成的,所以根据数不清位数的0和1进行组合来表达信息。

    为了能够和计算机交流,自然需要所谓的计算机语言了:

    机器指令
    • 最早,不就是0和1嘛,拿个纸带在固定位置打孔来区别就可以了,1打孔,0不打孔,再将程序通过纸带机输入计算机运算。这种相当于纯粹由0和1组成的指令,都称不上语言,难以阅读修改,也太过复杂,于是后来出现了汇编语言。

    File:CTR census machine.JPG

    汇编语言
    • 机器语言用0和1表示我们希望计算机执行的一些操作,汇编语言的差别则是在指令的表达方式上,使用了更容易记忆的格式
    • 假设如希望操作 “寄存器BX的内容送到AX中”,机器指令是1000100111011000,汇编指令则是mov ax,bx
    • 但汇编语言是机器指令的符号表示,不同CPU有不同的指令系统,即如果采用不同的CPU,汇编语言也不同,一套代码不能在不同机器上通用
    • 同时,计算机还是只能认识0和1的,所以程序员使用汇编语言写出了源程序,还需要编译器将其转换为机器码,拿给计算机

     
    高级语言
    • 把机器指令转换成人们容易记忆和识别的指令,在汇编语言中已经出现了雏形了,接下来的发展就出现了高级语言
    • 高级语言就是高度封装了机器指令的编程语言,以人类日常语言为基础,有较高的可读性,程序员编写更容易
    • 高级语言在翻译成机器指令时,有 “解释” 和 “编译” 两种方式:
      • 解释 - 编写好的代码,在计算机执行时才进行翻译
      • 编译 - 编写好的代码,会事先翻译成机器语言,计算机在操作时就可以直接使用了
    • 高级语言诸如C、C#、C++、Java、Python、PHP等

     


    1、Java的前世今生

    1991年1月,一个名为“Green Project”的项目启动。该项目旨在为家用电器提供支持,使这些电器智能化并且能够彼此交互,而且这些家电可以由远程客户端控制。

    1991年2月,James Gosling是该项目的软件负责人和架构师。他最初的目标是为“绿色项目”找到一个适合的语言来运行。他选择了C++,并对有需要的地方进行了扩展。但是这些功能不能满足计划的需要,因此建立一门新的语言成为当务之急。他开始夜以继日地忙于新语言的开发,并将其命名为“Oak”,因为他办公室窗外有一棵橡树。
     
    但Oak已被另一种已存在的编程语言使用,因此这个名字不可能再用了。James Gosling开始思考,"我们的新语言需要一个名字。" 于是他通过市场部门,请来了一个命名顾问,召开命名征集会。在会上,大家提出了很多名字,最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。

    排在第一位的是Silk(丝绸)。尽管大家都喜欢这个名字,但遭到James Gosling的坚决反对而作罢。排在第二和第三的都没有通过律师这一关。James Gosling最喜欢的就是排在第三位的Lyric(抒情诗)。只有排在第四位的名字、得到了所有人的认可和律师的通过。这个名字就是Java。

    Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。国外的许多咖啡店用Java来命名或宣传,以彰显其咖啡的品质。

    从此一个即好听又好记、具有强大的生命力的编程语言Java诞生了。

     


    2、Java概述和特点

    Java语言是一种优秀的编程语言。它最大的优点就是与平台无关,在Windows 9x、Windows NT、Solaris、Linux、MacOS以及其它平台上,都可以使用相同的代码。“一次编写,处处运行”的特点,使其在互联网上广泛采用。

    由于Java语言的设计者们十分熟悉C++语言,所以在设计时很好地借鉴了C++语言。可以说,Java语言是一种比C++语言“还面向对象”的一种编程语言。Java语言的语法结构与C++语言的语法结构十分相似,这使得C++程序员学习Java语言更加容易。

    2.1 解释执行

    计算机无法理解高级语言,所以我们使用高级语言完成编程之后,还要将它翻译成机器语言。翻译,有两种方式,即编译和解释,主要是时间上的不同:
    • 编译:在程序没有执行时,就先将高级语言进行翻译,比如windows下的exe文件,之后程序就可以直接运行了;
    • 解释:在程序开始运行的时候才去翻译,而且程序每次执行都要翻译一次

    而Java程序在执行后,首先是生成了class文件,成为字节码,并不是所谓的0101的机器码。在执行时,Java虚拟机的解释器,会根据当前平台的特征,对class文件进行进一步的解释,生成符合当前规范的机器码,得以运行。所以Java到底是属于编译性的语言还是解释性的语言,很难有一个准确的界定。

    2.2 跨平台

    跨平台其实就是建立在解释执行的基础上的,所谓“一次编写,处处运行”,得益于class字节码和Java虚拟机这个中间层。实际上真正跨平台的是Java程序,但是Java虚拟机却不是跨平台的,不同平台下需要安装不同版本的Java虚拟机。


    2.3 面向对象

    Java语言是一门面向对象的语言,具备面向对象语言的三大特征:封装、继承、多态。

    2.4 自动垃圾回收

    在Java中程序员无权回收内存,而是统一由Java虚拟机进行自动管理,对垃圾进行检查和内存释放。

    2.5 鲁棒性

    即是说,Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java也更具健壮性。

    2.6 支持多线程

    支持多线程编程时很多编程语言能够实现的功能,Java当然也不例外。

    2.7 简单性

    Java语言取消了很多容易混淆的概念,比如多继承、goto语句等。Java也没有让人头疼的指针概念,可以说是非常友好了。



    3、Java语言的运行环境

    3.1 JDK

    Java Development Kit:给Java开发人员使用的工具包,包括Java的开发工具,也包括JRE。其中开发工具包括编译工具(javac.exe)、运行工具(java.exe)、打包工具(jar.exe)等。

    JDK = JRE + 开发工具

    3.2 JRE

    Java Runtime Enviroment:Java的运行环境,包括Java虚拟机和Java程序运行所需的核心类库。

    JRE = JVM + 核心类库

    3.3 Java语言的环境配置

    要使用Java语言进行程序开发,必然先要配置Java的使用环境,这个网上一搜一大把,就不具体阐述了,直接丢链接:


  • 相关阅读:
    后缀数组---Milk Patterns
    后缀数组---New Distinct Substrings
    《程序员代码面试指南》第二章 链表问题 单链表的排序
    《程序员代码面试指南》第二章 链表问题 两个单链表相交的一系列问题
    《程序员代码面试指南》第二章 链表问题 按照左右半区的方式重新组合成新链表
    《程序员代码面试指南》第二章 链表问题 合并两个有序的单链表
    《程序员代码面试指南》第二章 链表问题 向有序环形单链表中插入新节点
    《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
    《程序员代码面试指南》第二章 链表问题 在单链表中删除指定值的节点
    《程序员代码面试指南》第二章 链表问题 删除无序链表中值重复的链表
  • 原文地址:https://www.cnblogs.com/deng-cc/p/7454136.html
Copyright © 2020-2023  润新知