小黄鸭系列java基础知识 | 什么是Java
什么是java
用一句话概括的话就是:
Java是一门面向对象的编程语言。为了让没有学过编程的小伙伴也能听明白,我们接下来从以下几个关键字来解释这句话:
- 编程语言
- 面向对象
编程语言
这个名词我想不知道的人很少,但我还是想多补充一点。我们先来看什么是编程:
百度百科给的解释是:
编程(Programming)是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解(understand)人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
编程:设计具备逻辑流动作用的一种“可控体系”【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】
简单来讲,编程就是它的字面意思:编写程序,现在也叫写代码。
所以编程语言就是编写程序的语言,但编写程序是为了让机器帮助人类更好地工作,所以更准确地说法应该是:
编程语言是为了让机器能够明白人的意图和想法,方便人与机器沟通的语言。和我们人类沟通讲的语言一样,java就是一种方便人与机器沟通的语言。
语言分类
我们日常的语言分为汉语、英语、德语……计算机的语言也存在着不同的种类,首先从大的方面来分,主要是三大类:
- 机器语言
- 汇编语言
- 高级语言
机器语言
简单讲,机器语言就是机器直接能够理解的操作指令代码,不需要任何转译。每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。
机器语言使用绝对地址和绝对操作码。不同的计算机都有各自的机器语言,即指令系统。从使用的角度看,机器语言是最低级的语言。
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。
优点
直接执行,速度快,资源占用少
缺点
可读性、可移植性差,编程繁杂
汇编语言(面向机器的程序设计语言)
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
优点
可读性比机器语言好,编程过程也相比机器语言更容易
缺点
同机器语言
高级语言
高级语言简单来说,就是比前两种更高级的语言(好像是废话哈😂),它是面向使用者的语言,能更准确地被程序员所理解,它的表达能力强,功能多,编程效率高,上手速度快, 自动化程度高,因而更受欢迎。在大部分软件开发中,使用者都采用高级语言编程,以提高编程效率。但在要求存储空间小,执行速度快,需直接对硬件进行控制的场合,则应用汇编语言编程,以达到优化程序速度的目的。
像我们日常所听过的c语言、VB、PB、C++、C#、java等都属于高级语言。
优点
形式上接近于算术语言和自然语言,概念上接近于人们通常使用的概念。高级语言的一个命令可以代替几条、几十条甚至几百条汇编语言的指令。程序开发过程更友好,程序移植性更强。
缺点
相比于机器语言和汇编语言,高级语言因为要转译为机器语言,所以效率比如汇编语言和机器语言。
编程语言的迭代
第一代机器语言
机器语言是由二进制 0、1 代码指令构成,不同的 CPU 具有不同的指令系统。机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行分配,编程效率极低。这种语言已经被渐渐淘汰了。
第二代汇编语言
汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系,所以汇编语言同样存在着难学难用、容易出错、维护困难等缺点。但是汇编语言也有自己的优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率高。 从软件工程角度来看,只有在高级语言不能满足设计要求,或不具备支持某种特定功能的技术性能(如特殊的输入输出)时,汇编语言才被使用。
第三代高级语言
也就是我们前面说的高级语言,形式上接近于算术语言和自然语言,概念上接近于人们通常使用的概念。高级语言的一个命令可以代替几条、几十条甚至几百条汇编语言的指令。因此,高级语言易学易用,通用性强,应用广泛。高级语言种类繁多,可以从应用特点和对客观系统的描述两个方面对其进一步分类。
从应用角度分类
从应用角度来看,高级语言可以分为基础语言、结构化语言和专用语言。
从客观系统的描述分类
从描述客观系统来看,程序设计语言可以分为面向过程语言和面向对象语言。其中java就属于面向对象语言。
第四代非过程化语言
非过程化语言,编码时只需说明“做什么”,不需描述算法细节。像我们平时说的sql就属于此类
优点
缩短应用开发过程、降低维护代价、最大限度地减少调试过程中出现的问题以及对用户友好
面向对象
上面我们说了,Java属于面向对象的,不是说写代码的时候对面坐着你的对象,也不是一对象😂(当然java是支持自定义对象的,看你需要腿长的,貌美的,还是性感的😜),而是java本身的一种语言设计理念,在Java中万物皆对象,所以Java是面向对象的编程语言。
因为对象这个词比较抽象,我觉得我有必要解释下。对象是指客观世界中存在的人、事、物体等实体在计算机逻辑中的映射,这样说还是太抽象,这样讲吧:凡是可以被描述的一切事务都可以被称为对象,比如一个人、一本书、一个想法、一缕阳光等等。
所以Java的面向对象可以这样来描述:具备描述一切事物的能力和特性,在java的世界中,你可以把其中的任何事物当作对象来操作。
下面我们放出java自定义对象的代码,没有的小伙伴感觉来领取:
public class DuiXiang {
// 名字
private String name;
// 颜值 : 颜值自定义
private double yanZhi;
// 大长腿:腿长自定义
private double daChaTui;
// 其他自定义
...
public DuiXiang() {
}
public DuiXiang(String name, double yanZhi, double daChaTui) {
this.name = name;
this.yanZhi = yanZhi;
this.daChaTui = daChaTui;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getYanZhi() {
return yanZhi;
}
public void setYanZhi(double yanZhi) {
this.yanZhi = yanZhi;
}
public double getDaChaTui() {
return daChaTui;
}
public void setDaChaTui(double daChaTui) {
this.daChaTui = daChaTui;
}
}
结语
今天全篇就讨论了一个问题——什么是Java,不知道我又没有讲清楚呢?如果不清楚,我们评论区见☺