一、Java语言是什么?
Java语言是一门拥有跨平台特性、面向对象编程的语言。由sun公司开发的语言,现在被oracle收购。
二、Java语言为什么是面向对象(OOP)
- 2.1 OOP的思想
OOP是Object Oriented Programming的缩写,可翻译为面向对象编程。面向对象其实就是使用了”万物皆对象”的编程思想,以对象为中心,每个对象都具有各自的状态特征(也可以称为属性)及行为特征(方法)。
- 2.2 面向对象和面向过程的区别
面向过程:注重的是完成一件事需要什么步骤,注重的是事情完成的步骤,事情是怎么样完成的。
面向对象:注重的是这个对象具有什么行为和特征,能干什么事。
举个最简单点的例子来区分面向过程和面向对象
有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择
1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。
2、去饭店,张开嘴:老板!来一份鱼香肉丝!
看出来区别了吗?1是面向过程,2是面向对象。
面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。如果你突然不想吃鱼香肉丝了,想吃洛阳白菜,对于1你可能不太容易了,还需要重新买菜,买调料什么的。对于2,太容易了,大喊:老板!那个鱼香肉丝换成洛阳白菜吧,提高了可维护性。总的来说就是降低耦合,提高维护性!
面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。
面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,关我们什么事?我们会用就可以了
- 2.3 JAVA为什么是面向对象的
java就是使用了”万物皆对象”的编程思想,以对象为中心,通过对象之间行为的交互来解决问题的。
具体可以看JAVA中的类和对象。
首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的、红色的、白色的... 这里,汽车设计图就是我们说的类(class),生产车间就是new出来的对象。
简单的理解是:类是一个模板,而对象是这个类的一个具体实例,对象是按照这个类的模板制造出来的,每个对象拥有自己的行为和特征。
- 2.4 简单理解面向对象的三大特征
面向对象有三大特性:封装、继承、多态。
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,从而避免了外界对对象内部属性的破坏,提高安全性。
继承:子类能调用父类的非private修饰的成员,同时还可以自己添加一些新的成员,扩充功能,提高代码复用性;继承是多态的前提。
多态:子类继承父类,然后进行方法的重写、重载体现出了多态,这样可以实现子类与表现出不一样的行为特征。
三、Java语言跨平台原理
- JAVA语言是一门跨平台的语言,即实现一次编译,到处执行,而C/C++却不行?
对于计算机而言,只认识一种语言,就是由0,1代码组成的机器语言。所以我们使用C/C++编写的程序计算机是看不懂的,因此必须将C/C++高级语言翻译成由0,1代码组成的机器语言,担任翻译工作的就是编译程序。又因为不同的操作系统对0,1序列的认识不一样,如某个指令在windows平台上是0101,但在Linux或其他平台下可能就成了1010,所以windows平台编译好的程序不能直接拿到Linux等其他平台上运行。
java语言也是一样的,计算机也是看不懂的,因此它也必须经过编译器翻译,但此时与C/C++程序的编译不同,他不是直接编译为专属某平台的0,1机器语言,而是编译为中介格式的字节码文件即.class文件,然后再由各个系统的JVM执行.class文件,再将其翻译为专属某平台的机器语言。
java代码并不是直接运行在CPU上,而是运行在java虚拟机(JVM)上的。Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)。
Java跨平台原理:
源文件(.java)---编译器-->字节码文件(.class)(二进制文件)--- JVM--> Unix,Win,Linux等机器码。
注意:编译的结果不是生成机器码,而是生成字节码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行。不同平台下编译生成的字节码是一样的,但是由JVM翻译成的机器码却不一样。跨平台的是Java程序,不是JVM。JVM是用C/C++开发的,与各个平台是相关的。JVM编译后的机器码是不能跨平台的。