Java学习前必须知道的重点知识【重点基础】

一、高级语言的运行机制

        我们编程都是用的高级语言计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。

        翻译的方式有两种,一是编译,另一种是解释。两种方式只是翻译的时间不同。

 

二、编译型语言(如C、C++、Objective-C

        使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性”翻译“成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式。

        优点: 运行效率较高

        缺点:编译生成的程序无法移植

 

三、解释型语言(如Ruby、Python)

        使用专门的解释器针对源程序逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会整体性的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。

        优点:跨平台较容易

        缺点:效率较低,不能脱离解释器独立运行

 

四、Java语言的运行机制

        Java是编译型和解释型语言的结合体。

        ①首先采用通用的java编译器将java源程序编译成为与平台无关的字节码文件(class文件)

        ②然后由java虚拟机(JVM)对字节码文件解释执行。

        注意:java字节码具有平台无关性、可以在各种不同系统平台中运行,但是需要有不同版本的java虚拟机,不同系统平台的java运行环境其java虚拟机是不一样的。

 

五、JVM(Java Virtual Machine Java虚拟机)

        ①、JVM是java字节码执行的引擎。为java程序的执行提供必要的支持,还能优化java字节码,使之转换成效率更高的机器指令。程序员编写的程序最终都要在JVM上执行,JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的。  

        ②、ClassLoader是java运行时一个重要的系统组件,负责在运行时查找并加载.class文件到内存中的类。

        ③、JVM屏蔽了与具体操作系统平台相关的信息,从而实现了java程序只需生成在JVM上运行的字节码文件(class文件),就可以在多种平台上不加修改地运行。不同平台对应着不同的JVM,在执行字节码时,JVM负责将每一条要执行的字节码送给解释器,解释器再将其翻译成特定平台环境的机器指令并执行。Java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台运行。

        Java虚拟机(JVM),主要负责运行Java编译器编译后的字节码文件class文件把字节码解释成具体平台上的机器码执行JVM存在于内存中,与内存打交道,它运行在操作系统之上,与硬件没有直接交互。JVM是一种抽象&虚拟出来的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据,内存和寄存器,指令集,寄存器,类文件的格式,栈,垃圾回收堆,存储区等。

        JVM自己无法执行,必须要联合JRE中的Java基础&核心类库才能使用。

 

六、ClassLoader介绍

        当我们编写好一个Java程序之后,不管是C/S还是B/S应用,都是由若干个.class文件组织而成的一个完整Java应用程序。当程序在运行时,会调用该程序的一个入口函数来调用系统的相关功能,而这些功能被封装在不同的class文件中。所以,程序就要从这个class文件中调用另一个class文件中的方法。如果文件不存在,则会引发系统异常。

        程序在启动的时候并不会一次性加载程序所有的class文件,而是根据程序的需要,通过java的类加载机制(ClassLoader)来动态加载某个class文件到内存中。所以,只有class文件被加载到了内存之后,才能被其他class文件所引用。所以ClassLoader就是用来动态加载class文件到内存当中。

七、Java开发环境JDK 和运行环境JRE

        JDK全称Java Development Kit简称Java开发工具包JDK是Java的核心,它包括Java运行环境Java开发工具(例如:jconsole、javac、java等)。主流的JDK是Sun公司发布的,但还有很多公司和组织都开发了自己的JDK。

        JDK1.8目录包含:

        ①、bin  存放一堆exe文件,可执行的开发工具,最主要的是javac。

        ②、db  JDK1.6之后内置了Derby数据库,它是一个纯用Java实现的内存数据库所以可以在任何平台上运行。另外一个特点时体积小,免安装。

        ③、include  Java和JVM交互用的头文件。

        ④、jre  存放Java的运行环境,包括JVM + JAVA基础&核心类库。

        ⑤、lib  存放dt.jar和tools.jar等常用类库的开发依赖包。

        JRE全称Java Runtime Environment简称Java运行环境。它时Java程序运行时的环境集合,包括了Java虚拟机(JVM)、Java基础&核心类库。

        JRE1.8目录包含:

        ①、bin  有java.exe但没有javac.exe,只能运行Java程序,可以把这个bin目录理解成JVM。

        ②、lib  Java基础&核心类库。如rt.jar,也包含JVM运行时需要的类库。

 

        所以,JDK = JRE + Java开发工具(编译器、调试器等);JRE = JVM + Java基础&核心类库JRE自带的基础类库主要在lib\rt.jar文件中。在程序运行时,JRE由ClassLoader(类加载器)负责查找和加载程序引用到的基类库和其他类库。JDK、JRE和JVM三者之间的包含关系是JDK > JRE > JVM。

        衍生下JDK的lib包中的tools.jar、dt.jarJRE的lib包中的rt.jar的关系和区别


        总结,JDK是个开发环境,JRE是个运行环境。因此遍写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。JDK里面已经包含了JRE,因此只要安装了JDK,就可以开发Java程序,也可以正常运行Java程序。 

        由于JDK包含了许多与运行无关的内容,例如编译器、调试器等,占用的空间较大。因此运行普通的Java程序无须安装JDK,而只需要安装JRE(例如服务器中运行Java程序)。

        正常运行流程:编译时,JDK中的编译程序(javac)将Java源文件(java文件)编译成Java字节码(class文件)。运行时,JRE中的JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

 

八、Java特点介绍

        所有面向对象编程语言都支持三个概念:封装、多态性和继承Java也不例外。现实世界中的对象均有属性和行为映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言以过程为中心,以算法为驱动的话,面向对象的编程语言则是以对象为中心,以消息为驱动

        继承,是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把车看成一个实体,它可以分成多个子实体,如:卡车、公共汽车等。这些子实体都具有汽车的特性,因此,车是它们的“父亲”,而这些子实体则是汽车的“孩子”。Java提供给用户一系列类(class),Java的类有层次结构,子类可以继承父类的属性和方法与别的面向对象编程语言不同,Java只支持单一继承。 

    

        封装,顾名思义就是将重要的内容封装在类的内部,不能让外面的类随意修改封装内部的数据在定义一个类的成员,往往使用private等关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用 

      一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据设计追求强内聚,弱耦合


        多态性,就是多种表现形式,具体来说,可以用“一个对外接口,多个内在实现方法”表示。指允许不同类的对象对同一消息做出响应。即同一消息可以根据对象的类型不同,而采用多种不同的行为方式。例如,在CS1.6中W键默认是向前走,而在LOL中W键是释放技能。相同的事件(按下W键)却在不同的对象类型中(CS1.6和LOL)发生了不同的行为,这就是所谓的多态性。

猜你喜欢

转载自blog.csdn.net/rao_limon/article/details/80308692
今日推荐