JavaSE基础-第一章

第一章 java前置知识

1.1 Java语言特性

[开源、免费、纯面向对象、跨平台]
1.简单性

相对而言,例如java中不再支持多继承,C++是支持多继承的,多继承比较复杂。C++中有指针的概念,java中屏蔽了指针的概念,因此相对来说java比较简单。

java语言底层是C++实现的,不是C语言。

2.面向对象

java是纯面向对象的,更符合人的思维模式,更容易理解。

3.可移植性

什么是可移植性?

java程序可以做到一次编译,到处运行。也就是说java程序可以在windows操作系统上运行,不做任何修改,同样的程序可以直接放到Linux上运行。这个被称为Java程序的可移植性,或者叫做跨平台。windows和Linux操作系统的内核不同,各自下系统的执行指令也不同,

java可以跨平台运行的原因:

Java程序运行在一台虚拟的计算机当中,这个虚拟的计算机叫做java虚拟机(Java Virtual Machine)简称 JVM。java虚拟机再和底层的操作系统打交道。

4.多线程

5.健壮性

和自动垃圾回收机制有关,自动垃圾回收机制简称GC机制。

Java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。

6.安全性

1.2 Java程序的加载与执行

java程序的运行包括两个非常重要的阶段:

编译阶段

运行阶段

image-20220331113818803
1.2.1编译阶段

编译阶段的主要任务是检查Java源程序是否符合Java语法。
符合Java语法则能够生成正常的字节码文件(xxx.class),不符合语法则无法生成字节码文件
字节码文件不是纯粹的二进制,这种文件无法在操作系统中直接执行。

*编译阶段的过程:

  1. 程序员在硬盘的某个位置<位置随意>新建一个拓展名为 .java 的文件,该文件被称为 Java源文件,源文件中编写的是 Java 源代码/源程序,源程序必须符合 Java 语法

  2. Java程序员需要使用jdk中自带的 javac.exe 命令进行 Java 程序的编译。

    javac怎么用?在哪用?

    • javac的使用规则: javac java源文件的路径

    • 在DOS命令窗口中使用。 javac是一个java编译器工具/命令

​ 3.一个java源文件可以生成多个.class文件。字节码文件.class是最终要执行的文件,所以class文件生成之后,java源文件删除并不会影响 java程序的执行。

​ 4.编译结束之后,可以将 class 文件拷到其他操作系统当中运行【跨平台】

1.2.2运行阶段

编译和运行两个阶段可以在不同的操作系统中进行–跨平台

  • JDK安装之后,除了自带一个javac.exe之外,还有另一个工具/命令,叫做 java.exe, java.exe主要负责运行阶段

    • java.exe在哪里用?

      • 在DOS窗口中使用
    • java.exe怎么用?

      • java 类名 例如:硬盘上有一个A.class,那么 就是 java A

​ 注意不要写成java A.class

*运行阶段的过程

  1. 打开DOS命令窗口
  2. 输入 :java A
  3. java.exe命令会启动Java虚拟机(JVM),JVM会启动类加载器ClassLoader
  4. ClassLoder回去硬盘上搜索 A.class 文件,找到该文件则将该字节码装载到 JVM 中
  5. JVM 将 A.class 字节码文件解释成二进制
  6. 然后操作系统执行二进制和底层硬件平台进行交互

1.3 第一个程序 HelloWorld

1.3.1 JDK JRE JVM 三者之间的关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFrGLnFq-1658301077574)(https://images2018.cnblogs.com/blog/1385666/201804/1385666-20180424195950619-1030096168.jpg)]

1.3.2 JDK目录的介绍

  • JDK/bin:该目录下存放了很多命令,例如 javac.exe和 java.exe

    • javac.exe负责编译

    • java.exe负责运行

1.3.3 开发HelloWorld.java源程序(JDK安装过程略)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-96Ovu5iD-1658301077576)(C:\Users\李\AppData\Roaming\Typora\typora-user-images\image-20220331104332120.png)]

1.3.4 编译HelloWorld.java源程序

通过javac工具进行编译:

  • 首先与要解决的问题是javac命令是否可用。

    打开DOS命令窗口,直接输入javac,然后回车,出现以下:

    ‘javac’ 不是内部或外部命令,也不是可运行程序或批处理文件。

    出现以上问题是因为Windows系统无法找到javac命令文件

    怎么解决以上javac不可用的问题?

    Windows系统是如何搜索硬盘上的某个命令的呢?

    *首先会从当前目录下搜索

    *当前目录下收缩不到的话,会从环境变量path指定的路径中搜索某个命令

    *如果都搜索不到,则会报以上的错误

    ​ 要想使用javac命令,就要将javac命令所在目录的路径配置到系统环境变量path中

  • 配置完毕之后使用javac命令

image-20220331112352687 image-20220331111728715

可以看出编译之后在.java文件的目录下生成了.class文件

1.3.5 运行java程序

java命令使用方式:

java 类名

一定要注意java命令的后面跟的是类的名字,而不是路径

image-20220331165116048
  • 那么,java HelloWorld的执行过程和原理是怎么样的呢?

在命令行敲完 java HelloWorld回车之后,

第一步:会先启动 JVM ( Java虚拟机 )

第二步:JVM 启动后,JVM 回去启动类加载器ClassLoader

类加载器的作用:加载类。本质上类加载器负责去硬盘上寻找“类”对应的“字节码文件”。假设是“java HelloWorld”,那么类加载器会去硬盘上搜索:HelloWorld.class文件。

第三步:类加载器如果在硬盘上找不到对应的字节码文件,就会报错:找不到或无法加载主类

类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装装载到 JVM 中,JVM启动“解释器”将字节码文件解释为二进制码,操作系统执行二进制码与底层硬件交互。

  • classpath

默认情况下,类加载器(classloader)从当前路径加载文件

question:能不能给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件?

可以。但是我们需要设置一个环境变量,叫做classpath,classpath是一个环境变量,是给类加载器指路的。classpath环境不属于windows操作系统,classpath环境变量隶属于java。

classpath环境变量是java特有的

classpath=A路径;B路径;C路径…

image-20220331120633102

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uGuCsRZl-1658301077577)(C:\Users\李\AppData\Roaming\Typora\typora-user-images\image-20220331121124271.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dQ5rGvGn-1658301077578)(C:\Users\李\AppData\Roaming\Typora\typora-user-images\image-20220331121258133.png)]

1.4 注释

什么是注释?注释的作用是什么?

出现在java源程序中当中,对java源代码的解释说明。注释不会被编译到.class字节码当中。一个好的开发习惯是多编写注释,这样程序的可读性比较强。

java中的注释怎么写呢?

  • 单行注释
//注释一行
  • 多行注释
/* 注释多行 */
  • javadoc注释
/**
*   ...
*   ...
*   ...
*/

/** ……*/ 注释若干行,该注释信息会被javadoc.exe工具解析提取并生成帮助文档。

1.5 public class 和 class的区别

一个java源文件中可以定义多个class

一个java源文件中不一定有 public class

一个class会对应生成一个.class字节码文件,若一个.java文件中有多个class就会相应生成若干个.class文件

一个java源文件中定义公开的类的话,public的class只能有一个,并且该类的名称要与java源文件名称一致。

每一个class当中都可以编写main方法,都可以设定程序的入口,比如想执行B.class中的main方法:java B 想执行X.class中的main方法:java X

  • 注意:当在命令窗口中执行java HelloWorld时,必须要求HelloWorld.class当中有主方法。没有主方法会出现运行阶段的错误:

    image-20220331173020993

1.6 小结

  • java的加载与运行

  • 搭建 java的开发环境

  • HelloWorld 程序的编译运行过程

  • 环境变量 path的原理以及如何配置

  • 环境变量 classpath 的原理以及如何配置

  • java中的注释

  • public class 和 class 的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值