目录
一、计算机语言发展史
1、什么是计算机编程语言?
计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的、具有一定语法规则的语言。例如:C语言、c++、Java、...
2、计算机语言发展史
第一代语言:机器语言
主要编写二进制码,直接写101010110001这样的二进制。
第二代语言:低级语言
主要以汇编语言为代表,在低级语言中已经引入了一些英语单词。
第三代语言:高级语言
几乎和人类语言完全相同,即使没有学习过计算机编程,只要看到这些代码就知道该代码主要的功能。例如:C语言、c++、Java、.....
二、Java语言发展史
- Java语言诞生于1995年。
- 其实在1995年之前sun公司(太阳微电子公司:该公司现在已经被Oracle公司收购)为了占领智能电子消费市场,派James Gosling领导团队开发了一个Oak语言(1995年Oak改名为Java)。
- 1996年:JDK1.0诞生(JDK是Java软件开发工具包的缩写),需要去Oracle官网(https://www.oracle.com/)下载。
- 目前用的最多的是Java1.8、jdk8。
- Java包括三大块
- JavaSE(Java标准版):Java基础
- JavaEE(Java企业版)
- JavaME(Java微型版)
三、Java语言特性【开源、免费、纯面向对象、跨平台】
- 简单性:相对而言的,例如Java中不再支持多继承,c++是支持多继承的,多继承比较复杂。c++中有指针,Java中屏蔽了指针的概念,所以说Java比较简单。Java底层是c++实现的。
- 面向对象:Java是纯面向对象的。更符合人的思维模式。更容易理解。
- 可移植性
- Java程序可以做到一次编译到处运行。也就是说Java程序可以在Windows操作系统上运行,不做任何修改,同样的Java程序可以直接放到Linux操作系统上运行,这个被称为Java程序的可移植性,或者叫做跨平台。
- Windows操作系统的内核和Linux操作系统的内核肯定不一样,他们两个操作系统执行指令的方式也是不一样的。所以Java程序不能直接和操作系统直接打交道。因为Java程序只有一份,操作系统执行原理不同,于是sun团队想了一个办法,他们让Java程序运行在一台虚拟的计算机当中,这个虚拟的计算机叫做Java虚拟机,简称JVM。JVM再和底层的操作系统打交道。
- 不同的操作系统按安装不同版本的JVM,利用JVM屏蔽了操作系统的差异实现了一次编写到处运行。(在windows平台上编写的Java程序移植到Linux系统上仍可以运行)。
- 多线程
- 健壮性
-
主要是因为Java中有一种机制:自动垃圾回收机制(GC机制—garbage collection)。
-
Java语言是健壮的,相对于C语言来说,C语言没有Java健壮。在C++程序当中的无用数据/垃圾数据需要编程人员手动释放,当忘记释放内存的时候,会导致内存使用率降低,影响程序的执行;在Java 语言当中这种问题得到了解决,因为Java语言引入了自动垃圾回收机制(GC机制),Java程序启动了一个单独的垃圾回收线程,时刻监测内存使用情况,在特定时机会回收/释放垃圾数据,这样会让内存时刻处于最好的状态。
-
JVM(Java虚拟机,用C++语言实现的虚拟的计算机)负责调度GC机制,程序员不需要干涉。(原文链接:https://blog.csdn.net/qq_56052094/article/details/122377302)
-
- 安全性:源代码开源,众人拾柴火焰高,发现漏洞立即完善。
- .........
四、Java程序的加载与执行
- Java程序的运行包括两个非常重要的阶段
- 编译阶段
- 运行阶段
- 编译阶段
- 编译阶段主要的任务是检查Java源程序是否符合Java语法,符合Java语法规则能生成正常的字节码文件(xxx.class)不符合Java语法规则无法生成字节码文件。
- 字节码文件不是纯粹的二进制,这种文件无法在操作系统当中直接执行。(如果是纯粹的二进制文件操作系统就可以直接执行了,就没有JVM的概念了)。
- 编译阶段的过程
- 程序员需要在硬盘的某个位置新建一个.java扩展名的文件,该文件被称为Java源文件,源文件中编写的是Java源代码。而这个源程序是不能随意编写的,必须符合Java语法规则。
- Java程序员需要使用JDK中自带的javac.exe(Java编译器)命令进行Java程序的编译
- 例如:javac java源文件的路径
- 一个Java源文件可以编译生成一个或多个.class文件。
- 运行阶段
- JDK安装之后,自带一个工具java.exe。
- 使用方法:java 类名(注意:这里是类名不要写成路径了)【例如:硬盘上有一个A.class,那么就可以这样用:java A】(首先必须先将DOS窗口中的目录切换到A.class文件所在的目录才能运行)。
- 运行阶段的过程
- 打开DOS命令窗口
- 输入:java A
- java.exe命令会启动JVM,JVM启动类加载器ClassLoader
- ClassLoader会去硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JVM中。【ClassLoader首先搜索当前目录是否存在A.class文件,然后检索系统环境变量classpath指向的路径(默认情况下classpath = .代表当前路径)】。例如下图执行java A这条指令的当前路径就是“C:\Users\XueYingHao”。
- JVM将A.class字节码文件解释成二进制10011001这样的数据。
- 然后操作系统执行执行二进制和底层硬件平台进行交互。
五、开始写第一个Java程序
- 第一步,首先电脑上得安装JDK,JDK-8(企业里最常用的JDK版本)的下载和安装及环境变量配置教程【https://mp.weixin.qq.com/s?__biz=MzA4MjU4MTg2Ng==&mid=2247503652&idx=1&sn=52fce702f15d83ef9ac7fc139a3252ca&chksm=9f810f21a8f686377da98495f31443196b0480dee5829daf68e3e3c59e94c30f84bc45337c78&mpshare=1&scene=23&srcid=0809psvtPxnxTc2zzG4HWcm0&sharer_sharetime=1660007061752&sharer_shareid=477006b6baa369dc990668a6f7c16137#rd】。
- jdk包含jre,jre包含jvm。
- path是给Windows操作系统指路的,classpath是给jvm的ClassLoader指路的。
- 关于Java语言当中的注释?
- 会出在Java的原程序当中,对Java源代码的解释说明。
- 注释不会被编译到.class的字节码文件当中。
- 注释的种类有三种
- 单行注释://只注释双斜杠后面的本行的内容
- 多行注释:/*注释的内容,可以是多行*/
- javadoc注释(块注释):/**块注释,可以用javadoc.exe工具解析生成帮助文档*/,使用方法:javadoc XXX.java
-
/** *public表示公开的 *class表示定义一个类 *HelloWorld表示一个类名 *以下表示定义了一个公开的类,起名为HelloWorld */ public class HelloWorld { /** *类体 *public表示公开的 *static表示静态的 *void表示返回值类型为空 *main表示方法的名是main *以下是主方法,是程序的入口,是sun公司规定的固定的编写方式 *表示定义了一个公开的静态的主方法 */ public static void main (String [] args) { /** *方法体 *java语句以分号(;)结尾 *以下代码的作用是向控制台输出一段消息 */ System.out.println("HelloWorld!"); } }
六、public class与class的区别
- 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,若只有一个非public类,此类可以跟文件名不同。
- 每个class当中都可以编写main方法,都可以设定程序的入口,想执行A.class中的主方法:java A,想执行B.class中的主方法:java B。
- 注意:如上图所示,当在命令窗口中执行java C,那么就要求C.class中必须有主方法,若没有主方法会出现运行阶段的错误。