目录
一、DOS命令
1.1.为什么需要DOS命令?
在最初的时候,电脑跟我们现在所使用的电脑是不一样的,最初的电脑的显示,是没有现在的图形化界面的,无论是创建新的文件夹还是进行其他的操作,都需要通过DOS命令来实现。
我们需要掌握最基本的windows常用的DOS命令。
1.2.DOS命令的分类
1.2.1.内部命令
windows内部本身就已经存在的命令,在windows的任何目录下都可以使用
1.2.2.外部命令
我们外部自行安装的命令,比如javac、java等,需要我们在命令的安装目录下打开DOS窗口才可以使用。
1.2.3.脚本命令
.bat
1.3.DOS命令的使用
1.3.1.DOS命令的编写地址
DOS命令需要在DOS命令窗口来进行编写。
1.3.2.DOS命令窗口
我们打开DOS命令窗口只需要在电脑左下角的开始菜单->输入cmd->点击回车,此时,会弹出来一个黑色的窗口,这个窗口就是我们的DOS命令窗口。
注意:
我们打开DOS窗口时,所打开的默认位置就是我们的C:\Users\用户名>
1.4.DOS命令的寻址方向
当我们使用DOS命令窗口中的命令时,windows系统会首先从当前目录下寻找,当前目录下没有该命令时,就会去环境变量中寻找;环境变量中,先在用户变量中的Path寻找;找不到,才会去系统变量中的path寻找。
找到,就执行该命令;找不到,则报错,不是内部或外部命令
1.4.常见的DOS命令
1.4.0.必须记住的
在DOS命令中,我们必须记住的命令有两个:help、dir、
help 我们可以通过help找到我们需要使用的命令,或是了解我们想要使用的命令的用法
dir dir命令是查询指定目录的命令,它会把指定目录中的所有子目录展示出来并排序
注意:
1.在DOS命令窗口中,我们可以通过↑和↓来快速使用我们刚刚输入的重复命令
1.4.1.exit
退出当前DOS命令窗口
注意:
既然是退出当前DOS命令窗口,也就是说,我们可以通过开启多个DOS命令窗口
1.4.2.clear
清除屏幕
解释:
当我们在一个DOS命令窗口中书写了很多命令并执行后,我们的DOS命令窗口显示的内容就会越来越多,而其中我们很久之前输入的命令其实是不会再回去查看的。
此时,我们就可以通过clear命令来让我们的DOS命令窗口重新变得整洁。
注意:
我们使用clear命令的时候要保证前面的输出都已经失效或是有备份。
1.4.3.DOS窗口内容复制
1.在DOS窗口中的任意位置点击鼠标右键,选中标记;
2.选中要复制的内容即可,此时,我们要复制的内容就已经复制到剪切板了;
3.在需要粘贴的位置粘贴即可
1.4.4.dir
列出当前目录下的所有子文件/子目录
解释:
dir命令列出的是当前目录的所有子文件,也就是说,但凡是当前目录下的文件都会被列出。
1.4.5.cd
cd表示 change directory【改变目录】
可以进入当前目录下的子目录中
cd命令的使用:
cd 目录的路径
路径包括绝对路径和相对路径
绝对路径:表示该路径从某个磁盘的盘符下作为出发点
相对路径:表示该路径从当前所在的路径下作为出发点
特殊使用
cd .. 回到上级目录
cd \ 回到根目录
切换盘符
c: 切换到C盘目录下
d: 切换到D盘目录下
e: 切换到E盘目录下
f: 切换到F盘目录下
二、window设置
2.1.显示文件扩展名
2.1.1.为什么要显示文件扩展名?
我们在开发过程中,我们可能有很多同名但是扩展名不同的情况,此时,在没有扩展名的情况下,我们很难看出哪个是我们需要的文件。
不仅如此,假设我们创建一个txt文件名字是a.java,那么我们也很有可能会把这个txt文件当作java文件来看待。
2.1.2.用法
此电脑->组织->文件夹和搜索选项->显示->隐藏文件扩展名(取消该对勾)
三、Java语言特性
开源、免费、纯面向对象、跨平台
Java是开源的,因此所有人都可以看到Java的源代码,正因为如此,每当我们发现一个Java语言的漏洞,就可以立即更改,而很多人可以看到,也就是说,Java会变得越来越完善,同时,这也导致Java具备一定的健壮性。
开源,也就是说,所有人都可以在Java的基础上进行更符合自己的使用习惯或使用要求的更改,所以,Java也有不小的安全性。
跨平台也就是我们所说的可移植性。这是通过我们的JVM来实现的,也就是Java虚拟机。实际上就是把Java程序运行在一台Java虚拟机上,由虚拟机来和操作系统来交流。
本质上,就是在windows和linux系统中各自安装了对应版本的JVM,此时我们是相同的Java代码,但是我们是在不同版本的JVM中运行的,JVM是Java所在公司自行开发的。
有没有想到什么? JDK
但是其实跨平台也有缺点,也就是我们必须安装有对应的JVM才能做到跨平台。
本质上,JVM是一套标准,只要我们可以达成一样的效果,那么我们缩写的程序也可以叫做JVM
3.1.简单性
简单和复杂是相对而言的,而之所以说我们的Java简单,只因为Java相对于其他语言,减少了很多东西。
比如,Java不再支持多继承,而C++是支持的,很复杂;C++中有指针,Java中则是把指针的改变移除了,所以来说,Java是简单的。
Java语言的底层是C++。
3.2.面向对象
Java是纯面向对象的们更符合人的思维模式,更容易理解。
3.3.可移植性
一次编译,到处运行
Java语言编写的代码在不同的电脑系统上都可以执行,并不是说,在windows编写的程序就只能在windows上运行。
也就是说,java语言编写的程序,不做修改就可以在多平台上无差别运行。
3.4.多线程
单线程和多线程
单线程就是指一个事物从开始一直执行到结束,不允许分开运行;
多线程是指,将多个线程尽可能独立的分开并发执行,在根据执行结果得到最后想要的结果。
3.5.健壮性
自动垃圾回收机制,简称GC机制
3.6.安全性
3.7.高版本java的新特性
可以直接使用java命令来代替javac和java命令,实际上,还是先编译在运行,但是我们少写了一个命令。使用这种当时编译生成的class文件在硬盘中不会存储。
四、计算机的组成
4.1.CPU
中央处理器,相当于人类的大脑,负责发送并执行指令。
是整个计算机的指挥官,负责运算。
4.2.内存
程序运行过程中的临时i数据存储空间,断电或关机,数据丢失
4.3.硬盘
持久化存储设备,断电,关机,数据不丢失
4.4.主板
相当于人类躯干,是一个载体:CPU、内存条、硬盘等都是放在主板上的
4.5显卡
相当于人类的颜值
五、Java的编译和运行
Java程序的执行分为编译阶段和运行阶段。
我们在Java文件中编写的源代码是不会直接在Java虚拟机(JVM)中执行的,Java规定了Java文件需要通过编译生成一个字节码文件(.class),最终我们执行的是这个字节码文件,而不是我们所编写的源代码。
5.1.编译
本质上,编译就是检查我们的Java文件中的源代码是否符合Java语法,符合语法,生成字节码文件;不符合就不生成字节码文件。
在字节码文件中并不是纯粹的二进制,是不能在操作系统中执行的。
5.1.1.编译过程
1.程序员需要在硬盘的某个位置新建.java文件,该文件被称为源文件;在源文件中编写的代码就被称为Java源代码/源程序。源程序的编写必须符合我们的Java语法规则
2.Java程序员需要使用JDK中自带的javac.exe命令进行java程序的编译。
javac的使用:
1.在DOS窗口中使用
2.语法规则:
javac java源文件的路径(相对路径)
javac text.java
javac是一个java编译器执行工具/命令
注意:
1.一个java源文件可以编译生成多个.class字节码文件
2.字节码文件/class文件才是我们最终要执行的文件,因此class文件生成后,删除java源文件并不影响java程序的执行,但是一般我们不删除。(因为删除后,当我们需要修改代码时,就会很麻烦)
3.我们编译完成后生成的class文件,是可以原封不动地复制到其他操作系统平台上执行的。跨平台
5.2.运行
运行阶段是可以在其他的操作系统 中的,是跨平台的。
我们生成class字节码文件之后,我们还需要通过java.exe命令来开始运行。
在JDK中,除了自带的javac.exe之外,还有另一个工具/命令,就是java.exe,该命令负责运行阶段
5.2.1.运行流程
1.打开DOS命令窗口,输入java 类名。此时,java.exe命令会启动Java虚拟机(JVM),JVM会启动类加载器ClassLoader
2.此时类加载器ClassLoader会去硬盘上搜索 类名.class 文件,找到该文件后,将该文件装载到JVM中
3.JVM将字节码文件解释成二进制数据,然后操作系统执行二进制和底层的硬件进行交互
java.exe的使用:
1.在DOS命令窗口中使用
2.语法规则:
java 类名(所谓类名就是我们生成的字节码文件的文件名,不带后缀)
java test01
类加载器ClassLoader的运行流程:
默认情况下,我们的ClassLoader会从当前路径下加载xxx.class字节码文件的,但是,也可以通过配合classpath来让ClassLoader去某个指定的路径下加载字节码文件。
什么是classpath?
当我们给一个classpath配置了环境变量后,我们的ClassLoader以后就只会在这个指定的路径中加载字节码文件。
也就是说,我们以后生成的class文件也必须指定目录生成到该路径下,否则,我们就需要手动移动。
当然了,如果我们手动的设置classpath的路径为当前目录,那就和默认情况下一致了,因此,我们也可以配置classpath的值为当前目录,如果将来其他人的代码的class文件不是当前目录下,我们也可以通过添加第二个classpath值来指定。
六、第一个Java程序
6.1.前期准备
6.1.1.JDK下载
下载地址:Oracle | Integrated Cloud Applications and Platform Services
6.1.2.JDK安装
1.JDK在安装过程中同时会安装一个jre,jre一般安装到和jdk的同级目录下
jdk: Java开发工具包(仅java开发过程中使用 ,运行时就不需要了)
jre: Java运行时环境(包括java虚拟机【JVM】)(在程序运行时使用)
2.注意安装位置,选择自己想要安装的位置。
总结:
我们发现jdk仅在开发时使用,而jre则是运行时使用,那么我们身为开发人员为什么要安装jre呢?这是因为,我们开发出来的程序最终是要交给用户的,而用户的电脑上则只需要安装jre就可以了,并不需要安装jdk。
当然,这并没有解决为什么我们开发人员需要安装jre,这是因为,程序开发过程中,我们时需要经常运行程序来看到程序的实际运行效果来进行修改的,而不是全部凭借自己的想象。因此,我们也需要jre。
实际上,我们安装的jdk本身自带jre的安装,在jdk的目录下;后面弹出来的jre是不需要安装的,当然了,安装也不会影响什么
6.2.HelloWorld
6.2.1.创建文件
创建一个文件,文件名为HelloWorld,文件后缀名为.java。
6.2.2.在文件中编写代码
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
6.2.3.编译运行
通过javac编译源文件和java命令运行class字节码文件(我这里是在idea编辑器中运行的)
七、环境配置
当我们直接在DOS命令窗口使用javac和java命令的时候,显示,javac不是内部命令或....,这是因为我们的windows找不到我们使用的javac和java命令。
配置环境变量的目的,就是为了在DOS命令窗口中寻找命令的时候可以方便寻找到对应的可执行文件。
Windows寻找命令的方式:
1.首先从当前目录下搜索
2.当前目录搜索不到,就会从环境变量path指定的路径中搜索某个命令
3.搜索不到,就会报以上错误
也就是说,当我们没有配置环境变量的时候,我们的命令只能在jdk的安装目录下来使用我们javac命令才可以,这样无疑是不符合我们的使用习惯的。
windows中命令执行时寻找文件的方式:
在当前目录下寻找,找不到,告知找不到指定的文件;找到,直接执行命令。
7.1.打开环境变量配置面板
打开此电脑->在左侧选中此电脑右击->属性->高级系统设置->环境变量
7.2.配置系统变量
新建一个系统变量,变量名为“JAVA_HOME”,变量的值是jdk的安装路径,点击确定即可。
我们配置“JAVA_HOME”是为了让我们将来修改jdk的路径的时候,可以直接在“JAVA_HOME”中修改,而不必要去path中寻找。
7.3.配置用户变量
在用户变量的path中新建两条路径,路径分别为%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin
此时我们就可以在DOS命令窗口中直接使用javac命令和java命令了。
八、注释
注释就是出现在java的源程序中,对java源代码进行解释性说明。
注释不会被编译到class字节码文件中
注释会让我们程序代码的可读性大大提升
8.1.单行注释//
单行注释:注释当前行,//后面的内容就是注释内容
8.2.多行注释/**/
多行注释:注释多行,在/*和*/直接的内容就是注释内容
8.3.javadoc注释/** */
这种注释是较为专业的注释,该注释信息会被javadoc.exe工具解析提取并生成帮助文档
8.3.HelloWorld注释
参考,知道就好。
//public表示公开的
//class表示定义一个类
//HelloWorld表示一个类型
public class HelloWorld {//表示定义一个公开的类,起名为HelloWorld
//类体
//类体中不允许直接编写java语句(除声明变量以外)
/*
public表示公开的
static表示静态的
void表示空
main表示方法名是main
(String[] args)是一个main方法的形参列表
需要记住的是:一下的方法是一个程序的主方法,是程序的执行入口
是SUN公司规定的,固定编写方式
注意:下面的args是可以随便写的,但是一般我们写args
*/
public static void main(String[] args) {//表示定义一个公开的静态的主方法
//方法体
System.out.println("Hello World!");
}
}
总结
1.pubilc 公共的
2.class 类
在java中称class是一个类,类是java中的最小单位
3.static 静态的
4.void 空
5.System.out.println(""); 向控制台输出
这是一个方法:该方法用来向控制台输出()中的内容
6.类体 在一个类中编写的代码都是被包含在该类的类体中的
在java中任何有效的代码必须写到类体中,最外层必须是一个类的定义
类体中不能直接编写java代码,除了声明变量以外
7.public static void main(String[] args) 主方法,每一个class中都必须要有一个属于自己的主方法,否则不能执行,是程序的入口。
主方法是程序的入口,固定写法
主方法中,只有args(变量名)可以更改,其他地方都不可以更改,一旦更改就不再是
主方法了
方法体中可以编写多条java语句,所有的java语句都必须以;结尾,必须是英文的
8.方法体 在一个方法中编写的代码都是被包含在该方法的方法体中的
9.一条java语句必须以英文的;结尾
结论(重点)
[ ] 数组
() 方法(多行语句组成的一个特定功能的集合)
{} 在大括号中包括的要不就是一个功能,要不就是类的主体
System.out.println("Hello World!"); 遇见()所以,他是一个方法;这种方式被称为调用。
public static void main(String[] args) 主方法,每一个class中都必须要有一个属于自己的主方法,否则不能执行,是程序的入口。
九、public class和class的区别
1.一个java源文件中可以定义多个class;所有类的类名不允许重复
2.一个java源文件中pubilc class不是必须的
3.一个class会对应生成一个xxx.class字节码文件
4.当一个java源文件中定义了pubilc class,那么这个pubilc class只有一个,并且该类名称必须和java源文件名称一致
5.每一个class中都可以编写main方法,都可以设定程序的入口,想要执行B.class文件中的main方法:执行java B(当我们的的类B中没有主方法的时候,可以编译通过,但是不能运行,会报错,找不到主方法)
6.每一个类只能由一个main方法。即使我们类中有两个方法,两个方法只有方法名不同,那也只有main方法被认为时main方法