Java自我学习路线
- 一、常用DOS命令
- 1.1 怎么打开DOS命令窗口
- 1.2 什么是DOS命令?
- 1.3 DOS命令窗口复制
- 1.4 切换盘符
- 1.5 切换目录
- 1.6 路径
- 二、文本编辑快捷键
- 三、计算机编程语言(固定语法规则)发展史
- 四、Java语言的概述
- 五、Java语言特性
- 5.1 简单性(相对而言)
- 5.2 面向对象
- 5.3 健壮性
- 5.4 完全支持多线程并发
- 5.5 可移植性/跨平台
- 六、JDK、JRE、JVM三者之间的关系
- 七、Java的加载与执行
- 7.1 Java两个重要阶段:编译、运行
- 7.2 Java程序从编写到最终运行经历的过程
- 7.3 程序员工作:编写、编译、运行
- 八、编写Java中的第一个Java程序:HelloWorld(搭建环境、测试环境)
- 8.1 安装文本编译器
- 8.2 安装JDK
- 8.3 写代码
- 8.4 编译
- 8.5 运行
- 8.6 JDK新特性
- 补充
一、常用DOS命令
1.1 怎么打开DOS命令窗口
win+r
1.2 什么是DOS命令?
一种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令:
mkdir创建目录、cls清屏、dir查看当前目录下所有子文件或子目录、exit退出DOS命令窗口、tab自动补全、del删除文件或目录(支持模糊匹配)、ipconfig查看IP地址配置等信息(/all)、ping(-t一直ping查看网络是否稳定,域名底层最终会解析成IP地址的形式;ctrl+c终止)…
1.3 DOS命令窗口复制
win7 标记、右键
win10左键选中,右键单击
1.4 切换盘符
- 语法格式:
盘符 + “:”
如: D:回车
“当前路径是当前所在路径”
1.5 切换目录
使用cd命令(change directory改变目录)
- 语法格式:
cd 路径
cd …(回到上级路径)一个.代表当前路径
cd \(回到根路径)
1.6 路径
相对路径、绝对路径
相对路径:从路径形式看,相对路径一定不以盘符开始,一定是相对于当前所在“位置”而言,从当前所在位置作为起点
绝对路径:在Windows中凡是路径起点是盘符的都是绝对路径
二、文本编辑快捷键
- 提升开发效率(强迫使用)
- 常用快捷键
重做:ctrl+y
查找:ctrl+f
回到行首/尾:home键、end键
当光标在行尾/首选中一行:shift+home/end
回到文件头/尾:ctrl+home/end
选中一个单词:鼠标双击;ctrl+shift+⬅/➡
选中一行:鼠标三击
…
三、计算机编程语言(固定语法规则)发展史
- 第一代语言:机器语言。直接编写二进制
- 第二代语言:低级语言。汇编语言,比机器语言更接近人类自然语言
- 第三代语言:高级语言
c(面向过程)
c++(一半面向过程,一半面向对象)
Java(完全面向对象)Java语言底层实际上是c++实现的
python(面向对象)
四、Java语言的概述
JDK:Java开发工具箱,做Java开发必须安装的,是Java最核心的库,JDK不是集成开发环境
1998年,Java升级到JDK1.2,Java被分为三大块:
J2SE(JavaSE):标准版(基础,学Java必学,基础语法+基础库)
J2EE(JavaEE):企业版(专门为企业开发软件,为企业提供解决方案。eg:OA办公系统、金融系统、医院系统)
J2ME(JavaME):微型版(专门为微型设备做嵌入式开发)
五、Java语言特性
5.1 简单性(相对而言)
在Java语言中真正操作内存的是JVM(Java虚拟机:用c++语言写好的虚拟计算机,安装了JDK之后,JVM就代表安装好了)所有的Java程序都是运行在Java虚拟机中的,Java虚拟机执行过程中再去操作内存。对于c/c++来说,程序员都是可以直接通过指针操作内存的,Java屏蔽了指针概念,程序员不能直接操作指针、内存。
优点:不容易导致内存泄漏;缺点:效率问题
5.2 面向对象
面向对象更容易让人理解,使复杂问题简单化
面向对象
5.3 健壮性
自动垃圾回收机制(GC机制)JVM负责调度GC机制,程序员不需要干涉
5.4 完全支持多线程并发
5.5 可移植性/跨平台
Java语言编写一次,可以做到到处运行(windows、linux、mac os)Java语言实际上并没有直接和操作系统打交道,而是通过JVM(JVM不一样,分版本)。JVM屏蔽了操作系统之间的差异,实现了跨平台,但比较麻烦,因为运行Java程序必须先有一个JVM。
Java语言可以编写病毒,但很难让用户中毒,中毒的一般都是Java程序员,所以很少编写Java的病毒脚本
六、JDK、JRE、JVM三者之间的关系
JDK:Java开发工具箱(Java Development Kit)
JRE:Java运行环境(Java Runtime Environment)
JVM:Java虚拟机(Java Virtual Machine)
- JDK包括JRE,JRE包括JVM;JVM不能独立安装,JRE和JDK可以独立安装;安装JDK的时候,JRE就自动安装了,同时JRE内部的JVM也就自动安装了;安装JRE的时候,JVM也就自动安装了
- 假设你在软件公司开发了一个新的软件,现在要去客户那边给客户把项目部署一下,把项目跑起来,你需要安装JDK吗?
不需要,只需要安装JRE即可(JRE体积很小,安装便捷快速)
七、Java的加载与执行
7.1 Java两个重要阶段:编译、运行
- 编译:Java程序员直接编写的Java源代码(普通文本)是无法直接执行与被JVM识别的,必须经过一个编译,将普通文本代码变成“字节码”,JVM能够识别“字节码”。转变的过程称为编译
- 编译阶段与运行阶段可以在不同的操作系统上完成(跨平台)
- Java源代码一旦编译之后,源代码可以删除吗?只留下字节码可以执行吗?
完全可以执行,因为源代码不参与程序的执行过程,参与程序执行过程的是字节码。但是最好不要删除源代码,因为有可能执行结果不是你需要的,你可以直接打开源代码进行修改,重新编译,重新执行,会有新的执行效果 - 放源代码的文件扩展名必须是:xxx.java(源文件)
- 编译生成字节码文件的扩展名是:xxx.class(字节码文件,字节码文件不是二进制文件,JVM将字节码文件解释为二进制文件供操作系统识别执行,与硬件平台交互)
一个.java源文件是可以编译生成多个.class文件的,最终运行的是.class文件
7.2 Java程序从编写到最终运行经历的过程
- 编译期
- 在硬盘的某个位置,新建一个xxx.java文件
- 使用记事本或者其他文本编辑器打开xxx.java文件
- 在xxx.java文件中编写“符合Java语法规则”的源代码
- 保存xxx.java文件
- 使用编译器(javac[JDK安装后自带])对xxx.java文件进行编译
- 若xxx.java文件中编写的源代码是符合语法规范的,编译会通过,若违背语法规则,则编译器会报错,.class文件不会生成,编译实质上检查语法的
- 运行期
- 若是在Linux上运行,需要将Windows上生成的.class文件拷贝过去,不需要拷贝源代码,真正运行的是字节码(但是不删除源码)
- 使用JDK自带的一个命令/工具:java(负责运行的命令/工具)执行字节码
- 以下步骤交给JVM,不需要程序员干涉:JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为二进制数)
- JVM会将生成的二进制码交给OS操作系统,操作系统会将二进制码和硬件进行交互
- 在以上的过程中,两个非常重要的命令:
javac命令,负责编译
java命令,负责运行
7.3 程序员工作:编写、编译、运行
- 新建Java文件
- 打开Java文件
- 写Java源代码
- 保存
- javac命令编译
- java命令运行
八、编写Java中的第一个Java程序:HelloWorld(搭建环境、测试环境)
8.1 安装文本编译器
8.2 安装JDK
低版本的时候,JRE实际上有两个,一个是JDK内置的,一个是独立于JDK之外的;高版本安装的时候内置了一个JRE,独立于JDK之外的JRE没有生成,想生成需要执行特殊的命令
JDK的bin目录下有:javac.exe负责编译;java.exe负责运行
8.3 写代码
程序写完之后ctrl+s保存;Java源代码只要修改,必须重新编译生成新的字节码文件
8.4 编译
- 使用的命令:C:\Program Files\Java\jdk1.8.0_241\bin\javac.exe
先测试此命令,打开DOS窗口,看javac是否可用
报错:‘javac’ 不是内部或外部命令,也不是可运行的程序或批处理文件
这说明Windows操作系统没有发现“javac.exe”命令(文件)在哪里,Windows操作系统中有一个这样的环境变量:Path
修改完环境变量之后,DOS命令窗口必须关闭程序打开才会起作用 - 配置环境变量Path的步骤:计算机右键–>属性–>高级系统设置–>环境变量,将C:\Program Files\Java\jdk1.8.0_241\bin配置到Path中
- 环境变量包括“系统变量”和“用户变量”
系统变量:范围比较大,系统变量会让计算机所有用户都起作用
用户变量:范围比较小,用户变量只是作用于当前用户
Path环境变量的作用就是告诉Windows操作系统去哪里找命令文件;Path环境变量中可指定多个路径,路径与路径之间用英文“;”隔开 - javac命令怎么用?
语法格式:javac java源文件的路径 - 什么是java源文件?
java源文件的名字以“.java”结尾,该文件中写了java源代码 - java源文件的路径是什么意思?
路径永远包括绝对路径和相对路径
以下的四种方式使用javac命令编译,第一种方式是绝对路径,剩下三种方式都是相对路径
C:\Users\lzj>javac D:\Users\lzj\Desktop\HelloWorld.java
D:>javac Users\lzj\Desktop\HelloWorld.java
D:\Users\lzj>javac Desktop\HelloWorld.java
D:\Users\lzj>Desktop\javac HelloWorld.java
错误示范1:
C:\Users\lzj>javac Users\lzj\Desktop\HelloWorld.java
javac: 找不到文件: Users\lzj\Desktop\HelloWorld.java
用法: javac
-help 用于列出可能的选项
以上报错的原因是:java源文件的路径写错了 - 怎么在DOS命令窗口中快速定位到某个路径呢?
打开计算机–>打开文件夹–>在地址栏上直接输入cmd回车,这样直接就过去了
编译报错的时候不会生成class字节码文件!
8.5 运行
运行的前提是:.class文件(字节码)生成了,没有字节码文件程序是无法运行的
- 怎么运行,使用哪个命令?
使用JDK的bin目录下的:java.exe命令来运行。
先在DOS命令窗口中测试java.exe这个命令是否可用:java -version - "java.exe"这个命令怎么用,语法格式是什么?
语法格式:java 类名 - java HelloWorld.class 对不对?
不对!
正确的写法是:
java HelloWorld
千万千万要注意:java这个命令,后面跟的是“类名”,而绝对不能跟“文件路径”
对于这个字节码:Test.class,应该为:java Test
对于这个字节码:A.class ,应该为:java A
对于这个字节码:Hello.class,应该为:java Hello… - 运行java程序需要哪些步骤呢?
- 先使用cd命令切换到xxx.class文件所在的路径(当前路径)
- 执行java xxx
切记:java命令后面只要是跟路径,就一定不行。java命令后面只能跟类名
- 到目前为止一共配置了哪些环境变量?
目前只配置了一个环境变量path,并且这个环境变量path和java实际上没关系,是windows操作系统的机制。 - JAVA_HOME:
对于Java的JDK所属的环境变量,有一个叫做:JAVA_HOME
这个JAVA_HOME目前我们不需要,不配置这个环境变量也不会影响当前java程序的运行。但是后期学习到JavaWEB的时候需要安装Tomcat服务器,那个时候JAVA_HOME就必须配置了。
除了JAVA_HOME环境变量之外,JDK还有其他相关的环境变量 - "java HelloWorld"的执行过程以及原理
- 会先启动JVM(Java虚拟机)
- JVM启动之后,JVM会去启动“类加载器classloader”
类加载器的作用:加载类。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件。假设是“java HelloWorld”,那么类加载器会去硬盘上搜索:HelloWorld.class文件。假设是“java Test”,那么类加载器会去硬盘上搜索:Test.class文件… - 类加载器如果在硬盘上找不到对应的字节码文件,会报错,报什么错?
错误: 找不到或无法加载主类
类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装载到JVM当中,JVM启动“解释器”将字节码解释为“101010000…”类似的二进制码,操作系统执行二进制码和硬件交互。默认情况下,类加载器去硬盘上找“字节码”文件的时候,类加载器(classloader)会从当前路径下查找
- 能不能给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件?
可以。但是我们需要设置一个环境变量,叫做:classpath。classpath是一个环境变量,是给“类加载器”指路的。classpath环境变量不属于windows操作系统,classpath环境变量隶属于Java,是Java特有的。
classpath=A路径;B路径;C路径…
classpath是一个变量名
A路径;B路径;C路径…是变量值 - 配置classpath,这个环境变量在windows中没有,需要新建:计算机–>右键–>属性–>高级系统设置–>环境变量–>新建…
- 变量名不能随意写(大小写无所谓),但必须叫做:classpath
如:CLASSPATH
ClassPath
Classpath
classpath
到目前为止:classpath环境变量不需要配置,但必须理解classpath环境变量的作用 - 配置了classpath环境变量后,类加载器不再从当前路径下找,而是从指定路径下找,所以到目前为止classpath环境变量不需要配置
8.6 JDK新特性
- 在高版本的JDK当中,有这样的一个新特性,可以直接这样一步到位:
java x/y/z/xxx.java
即java后面直接加java源文件的路径
这个特性是为了简化开发而提出,但实际上底层的实现原理还是和以前一样的,以上命令在执行过程中,还是会先进行编译,然后再运行,并且此运行方式,编译生成的.class文件在硬盘上不存在,看不到 - 注释
注释信息只保存在Java源文件中,Java源文件编译生成的字节码.class文件中没有注释信息
// 单行注释
/*
多行注释
*/
/**
* javadoc注释:这里的注释信息可以自动被javadoc.exe命令解析提取并生成到帮助文档当中
*/
补充
- Java中可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。