初识面向对象编程语言Java之Java语言特性

一  简单性

        相对于其他语言而言的,例如java中不再支持多继承,c++是支持多继承的,多继承比较复杂;c/c++中有指针,程序员都是可以直接通过指针操作内存的。在Java中屏蔽了指针的概念,程序员不能直接操作指针,或者说程序员不能直接操作内存。 这种方式有优点也有缺点,优点是不容易导致内存泄漏,缺点是效率问题,包括驾驭感比较差。

        综上所述,相对来说Java是简单的,但值得注意的是Java语言底层是c++实现的,c/c++更灵活,更有驾驭感,可以直接程序员操作内存,但是要求程序员技术精湛。


二  面向对象

       C/C++是面向过程的,而Java是面向对象的。举个栗子来理解面向过程和面向对象:例如写张三打篮球,还要写一个李四踢足球的程序?

  • 面向过程:不得不重新写两个程序 
  • 面向对象:编写三个对象,人的对象,人的运动动作,运动的器械这三个对象。之后针对不同场景,实例化一个张三对象,对象有一个打篮球的动作,器械是篮球;实例化一个李四对象,对象有一个踢足球的动作,器械是足球。      

        人认识现实世界是以面向对象的思维认识的,面向对象更符合人的思维模式,采用面向对象的方式可以让复杂问题简单化,更容易理解,Java是纯面向对象的。Java 中提供了封装、继承、多态等面向对象的机制,在程序实现过程中极大的复用之前的代码,这些是面向过程编程很难实现的。


三  可移植性(跨平台)

        Java程序可以做到一次编译,到处运行,也就是说Java程序可以在Windows操作系统上运行,不做任何修改,同样Java程序可以直接放到Linux操作系统上运行,这个特点被称为Java程序的可移植性,或者叫做跨平台。

        这是如何做到的呢?Windows操作系统内核和Linux操作系统的内核肯定不同,他们这两个操作系统执行指令的方式也不一样的。操作系统原理不同,显然Java程序不能直接和操作系统打交道,因为Java程序只有一份。Sun的团队很聪明,他们想了一个办法,他们让Java程序运行在一台虚拟的计算机中,这个虚拟的计算机叫做Java虚拟机,简称JVM。JVM虚拟机再和底层的操作系统打交道。

        以下图示用以简单理解:

                两个操作系统的Java虚拟机有所不同

            

        可移植性很强大,但也有缺点,缺点就是需要在电脑上先安装JVM,不然Java程序无法运行,就像以前浏览器播放视频需要先安装Flash插件一样。 


四  多线程 

         Java完全/完美支持多线程并发。Java多线程特性使得开发者能够方便地编写并发程序,实现多个线程之间的协同工作,提高程序的性能和效率。同时,Java也提供了多线程环境下的安全机制。


五  健壮性

         与自动垃圾回收机制(GC机制)有关。Java语言运行过程中产生的垃圾是自动回收的,JVM(C++编写的一个虚拟的计算机)负责调度GC机制,不需要程序员关心,不像c/c++一样开辟了内存空间,要程序员自己释放掉,如果没释放掉可能会导致使用率降低,影响程序的执行。Java程序会启动一个单独的程序,时刻监测内存使用情况,在特定时机会回收/释放垃圾数据,整个机制就好像聘请了一个保洁阿姨一样,为我们自动清理垃圾。


六  安全性

Java安全性
内存管理Java提供了自动内存管理机制,即垃圾回收器,可以自动回收不再使用的内存,避免内存泄漏和野指针等问题。
强类型系统Java是一种强类型语言,所有的变量都必须在声明时指定类型,编译器会在编译时检查类型的匹配性,避免类型转换错误。
数组边界检查Java对数组进行边界检查,确保不会访问超出数组范围的元素,避免数组越界访问导致的安全问题。
异常处理Java提供了异常处理机制,开发者可以捕获并处理异常,避免程序崩溃或数据丢失。
安全沙箱Java提供了安全沙箱机制,可以限制程序对系统资源的访问,确保程序只能在受控的环境中运行,避免恶意代码对系统造成破坏。
字节码验证Java虚拟机会对Java字节码进行验证,确保字节码的合法性和安全性,防止恶意代码的执行。
安全管理器Java提供了安全管理器机制,可以通过安全策略文件对程序的访问权限进行控制,确保程序只能执行受信任的操作。

        Java语言的安全性体现在其设计上对内存管理、类型检查、异常处理、安全沙箱、字节码验证和安全管理器等方面的支持,使得Java程序具有较高的安全性和稳定性。


七  关于Java的一些专业术语之JDK JRE JVM 三者的关系

  • JDK:Java开发工具箱
  • JRE:Java运行环境
  • JVM:Java虚拟机

        JDK包括JRE,JRE包括JVM,如下图:

        只有单独的JDK、JRE安装包,所以JVM是不能独立安装的,JRE和JDK都是可以独立安装。        

  • 安装JDK的时候:JRE就自动安装了,同时JRE内部的JVM也就自动安装了。
  • 安装JRE的时候:JVM也就自动安装了。       

        对于上述知识提出的两个小问题: 

  1. 假设你在软件公司开发了一个新的软件,现在要去客户那边给客户把项目部署一下,把项目跑起来,你需要安装JDK吗?

                答:不需要,只需安装JRE就行了,JRE体积很小,安装非常便捷快速。

     2. 为什么安装JDK的时候会自带一个JRE?

                答:因为Java程序员开发完程序之后,要测试这个程序,让这个程序运行起来,需要JRE。所以安装JDK的时候内部自带了一个JRE。            


八   Java程序的加载与执行原理

        Java程序从开发到最终运行经历了什么?

     编译期:

  1. 在硬盘的某个位置,新建一个xxx.java文件
  2. 使用记事本或其他文本编辑器打开xxx.java文件
  3. 在xxx.java文件中编写符合java语法规则的源代码,并保存
  4. 使用编译器(javac命令)对xxx.java文件进行编译。
  5. 如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,否则,编译器就会报错,报错之后是不会生成class字节码文件的,只有编译通过了才会生成class字节码文件 。注意:编译实质是在检查语法;一个java源文件是可以生成多个class文件的。           

     运行期:

  1.  使用JDK自带的一个命令/工具:java(负责运行的命令)执行字节码。
  2. 往下的步骤就全部交给JVM了,不需要程序员干涉了。JVM会将字节码文件装载进去,然后JVM对字节码进行解释为1010...等二进制机器语言。
  3. JVM会将生成的二进制机器语言交给操作系统,操作系统会执行二进制码与硬件进行交互。       

以上是一个复杂的过程,简单总结程序员要做以下事情:

  1. 新建java文件并打开
  2. 写java源代码并保存
  3. javac命令编译
  4. java命令运行

        就是三个阶段:编写、编译、运行 

注意:

        在以上的过程中,需要使用两个非常重要的命令

  • javac 命令,负责编译
  • java   命令,负责运行                        

编译期和运行期这两个阶段是可以运行在不同操作系统上的,也是可移植性的体现。一份Java源代码,到处运行,例如在Windows系统上在编译阶段生成的class字节码文件可以复制拷贝到Linux系统上运行,真正运行的是字节码文件,而不是java源代码。

补充:

       源文件(文本文件)中编写的代码叫源代码

        xxx.java源文件经过编译之后生成了A.class、B.class、C.class等文件,那么我们称A是一个类、B是一个类、C是一个类。其中A、B、C是类的名字。


九  总结

        Java语言特性概括起来,除了以上几大特点外,剩下的就是免费开源(不会收取任何费用,开放底层代码,全球范围内的Java开发人员看底层代码找出Bug并且快速修复Bug,Java经过长期的历练,Java语言发展迅速,健壮安全可靠。正所谓众人拾柴火焰高。),纯面向对象,跨平台(不需要关心电脑的操作系统,无论Windows,Linux,Mac等,Java代码都只需要编写一次,不需要做任何修改,可以在任何操作系统上运行)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值