需要掌握的内容:
- 理解java的加载与执行
- 能够自己搭建java的开发环境
- 能够独立编写HelloWorld程序,编译并运行
- 掌握环境变量path的原理以及如何配置
- 掌握环境变量classpath的原理以及如何配置
- java中的注释
- public class 和 class 的区别
1、计算机结构:
计算机包括:
- 硬件
- CPU:中央处理器,负责计算机的核心运算,它是计算机的最核心部件,指挥官。 1 + 1 = 2
- 内存:临时存储区域,程序在运行的过程当中,一些数据的临时存储区域。
- 主板:链接各个部件
- 显卡
- 声卡
- 鼠标
- 键盘
- 硬盘【外存】:永久性保存,断电之后再启动,数据仍然存在。
…..
软件
系统软件
windows系列的
winxp
win7
….Linux系列的
Red Hat
Fedora
SUN Solaris
….
应用软件
QQ
百度云管家
Office办公软件
…..
总结:
应用软件是运行在系统软件当中的,系统软件和底层硬盘交互。
Java编程语言可以:完成应用软件的开发。
可以用一个功能比记事本强大的文本编辑器进行java程序的编写。
windows操作系统默认情况下是不显示文件扩展名的,作为程序员必须将文件的扩展名显示出来:
- 计算机 –> 组织 –> 文件夹和搜索选项 –> 查看 –> 隐藏已知文件类型的扩展名【对勾去掉】 win7
- 计算机 –> 查看 –> 隐藏已知文件类型的扩展名【对勾去掉】 win10
2、windows操作系统当中常用的DOS命令:
什么是DOS命令呢?
在DOS命令窗口中才可以输入并执行DOS命令。
在最初的windows计算机中没有图形界面的,只有DOS命令窗口
也就是说通过执行DOS命令窗口可以完全完成文件的新建、编辑、保存、删除等一系列操作。不使用UI界面,使用DOS命令可以完成所有的操作。
在DOS命令窗口中可以执行DOS命令
打开DOS命令窗口:
- 快捷键:win + r,打开运行窗口
- 输入cmd回车
查看IP地址:
- ipconfig
- ipconfig /all 可以查看更详细的IP信息,这种查看方式可以看到网卡的物理地址。
物理地址具有全球唯一性。是在生产网卡的时候,嵌入的编号。
清屏:cls
DOS窗口当中也可以设置字体和屏幕以及文字的颜色。
退出DOS命令窗口:exit
怎么从DOS命令窗口当中复制文本:
-任意位置点击鼠标右键–>标记 –> 选择你要复制的文本 –> 点击鼠标右键 (此时已经到剪贴板当中了)
找一个位置粘贴即可。
-左键选择你要复制的文本 –> ctrl+c进行复制 (此时已经到剪贴板当中了)–> x选择一个位置ctrl+v粘贴即可。查看两台计算机之间是否可以正常通信:
- ping 192.168.27.23 【发送和接收数据包4次】
- ping 192.168.27.23 -t 【一直不停的发送和接收数据包】
- ping www.baidu.com
- 登录百度:http://119.75.218.70
强行终止DOS命令窗口中正在运行的程序:ctrl + c
打开DOS命令窗口默认所在的路径是:C:\Users\Administrator???
创建目录:mkdir abc【表示在当前所在目录下新建一个目录,起名abc】
关于目录切换命令:cd
cd 命令的语法格式:
cd 路径
路径分为:
绝对路径:
C:\Users\Administrator
D:\用户目录\收藏夹
……从硬盘的根路径作为出发点。
相对路径:
从当前所在的位置作为起点的路径。
自动补全:
cd e 【然后按tab键,当前所在的目录下所有以e开始的目录自动补全路径,当这个自动补全的路径不是自己想要的路径,可以继续使用tab键】
回到上级目录:cd .. 【..是一个路径,代表当前路径的上级路径】
cd ../../../直接回到根路径:cd \
查看当前目录下所有的子文件和子目录:dir
del:
删除一个或者多个文件
删除T1.class文件
C:\Users\Administrator>del T1.class
删除所有.class结尾的文件,支持模糊匹配
C:\Users\Administrator>del *.classT1.class
T1.glass
del *ass 这个命令就会将T1.class和T1.glass都删除。
删除的一定是能匹配上的。del *.class 这个命令中的那个“.”不要特殊化,这个“.”其实就是一个普通的字母
不要把相关重要的资料放到桌面上,因为桌面是属于C盘系统盘。
怎么切换盘符:【不需要使用cd命令】
c: 回车
d: 回车
e: 回车
f: 回车打开注册表:regedit
3、关于windows操作系统当中常用的快捷键:
- win + r 打开运行窗口
- win + d 显示桌面
- win + e 打开资源管理器
- win + L 锁屏
- alt + tab 应用之间的切换
4、“通用的”文本编辑快捷键:
- ctrl + a 全选
- ctrl + c 复制
- ctrl + v 粘贴
- ctrl + s 保存
- ctrl + x 剪切
- ctrl + z 撤销
- ctrl + y 重做
- tab 缩进/多行缩进
- shift + tab 取消缩进
- HOME 回到行首
- END 回到行尾
- shift + home 选中一行
- shift + end 选中一行
- ctrl + shift + 向右或者向左的箭头 选中一个单词
- 鼠标双击: 选中一个单词
- 鼠标三击: 选中一行
- ctrl + end 回到文件末尾
- ctrl + home 回到文件头
5、什么是JDK?
Java Development Kits
Java开发工具包【Java开发必备】
可以从Oracle的官网上下载。http://www.oracle.com
下载JDK的时候需要注意:JDK的版本,不同的操作系统需要安装不同版本的JDK。
6、Java分三大块:1999年
J2SE【Java的标准版本】:
基础,无论是以后走EE还是ME,SE是必须要精通的。
J2SE是SUN公司为java程序员准备的一套“基础类库”,这套基础类库学习之后,可以完成最基本的操作,
例如,文件的读写、线程的控制….J2EE【Java的企业版本】:
这是SUN公司为程序员专门准备的一套“类库”,这套类库可以协助程序员完成企业级软件的开发
企业级软件:OA办公系统、进销存系统、超市系统…….J2ME【Java的微型版本】
这是SUN公司为java程序员专门准备的另一套“类库”,这套类库可以协助程序员完成微型设备的嵌入式开发,
Java最初就是做微型设备嵌入式开发的。2005年,java诞生十周年的时候,以上的三大模块改名了:
- JavaSE
- JavaEE
- JavaME
7、关键术语:
- JDK【Java开发工具箱】
- JRE【Java的运行时环境】
- JVM【Java虚拟机】
三者之间的关系:
- JDK 中包含JRE
- JRE中包含JVM
8、Java语言特性:
跨平台/可移植
- 有一种特殊的机制:JVM
- Java程序并没有和底层的操作系统直接交互,java程序实际上运行在jvm当中,JVM屏蔽了操作系统之间的差异。
- 但是有一个前提:不同的操作系统中必须安装不同版本的JVM。
- 在可移植性方面表现非常好,一次编译,到处运行。
- 但是为了达到可移植,必须提前在操作系统中安装JRE,JRE有了之后才会有JVM。【JVM不能单独安装】
这方面体验不是特别好。 - java语言只要编写一次,可以做到到处运行。
例如:java程序编写完之后,可以运行在windows操作系统上,
不需要做任何改动可以直接运行在Linux操作系统上,同样也
可以运行到MaC OS上面。
一次编写,到处运行。(平台改变了,程序不需要改。)
JVM这种机制实现了跨平台,那么这种机制优点和缺点分别是什么?
优点:一次编写到处运行,可以跨平台。
缺点:麻烦。对于运行java程序来说必须先有一个JVM。
就像你要想在网页上看视频,你必须先安装一个flash是一样的。Java语言可以编写病毒吗?
可以,没问题。但是很难让用户中毒。
中毒的一般都是java程序员。所以很少有人编写java的病毒脚本。
Java号称:开源、免费、跨平台、纯面向对象。
开源:开发源代码,SUN公司编写的java类库的源代码普通程序员能看到。众人拾柴火焰高。
这样java程序会很健壮。很少的BUG【漏洞/陷阱】免费
跨平台:依靠JVM机制【java程序不和操作系统交互,java程序运行在JVM中,JVM和操作系统交互。】
不同的操作系统有不同版本的JVM。面向对象:人类在认识现实世界的时候多数是以面向对象的方式认知的。
简单性:
- 这里的简单说的是相对于C语言来说的。
- 例如:C语言当中有指针,C++中多继承
- java取消了指针的概念,取消了多继承,只支持单继承。
…..
java支持多线程
java中还有一种特殊的机制:自动垃圾回收机制。GC机制。
【java运行过程当中有一个“垃圾回收器”一直在守护着。】
9、Java的加载与执行:一个完整的java程序
1、Java开发的整个生命周期,包括两个重要的阶段,分别是:编译阶段和运行阶段
2、编译生成的程序被称为:字节码程序。编译生成的文件是:xxx.class文件
3、编译和运行可以在不同的操作系统中完成。
4、程序员在xxx.java文件中编写源代码,源代码必须符合java的语法,这些源代码就是高级语言。
存放源代码的文件被称为源文件。
5、过程:
编译期:【在windows环境中完成】
安装JDK,配置环境
在硬盘的某个位置创建一个xxx.java源文件
打开源文件,在该文件当中编写符合java语法的源程序,然后保存。
使用JDK中自带的javac.exe命令对以上的java源程序进行编译。
编译通过:说明语法没有问题
在硬盘上生成一个或者多个字节码文件【xxx.class】
编译失败:说明源程序某个位置不符合java语法格式。
编译的语法格式:打开DOS命令窗口,输入:javac 源文件路径
注意:
- 源文件路径可以是绝对路径,也可以是相对路径。
- 编译之后,其实java源文件删除不会影响程序的执行。
- 最好不要将java源文件删除,因为程序最终运行效果不是预期效果的时候,需要重新修改java源代码,然后进行重新编译生成全新的class字节码文件,再重新运行字节码程序。
运行期:【可以不在windows中完成,可以换一个操作系统,但前提是该操作系统中已经安装java的运行时环境】
- 打开命令窗口,在命令窗口中使用java.exe命令运行java程序,语法格式:java 类名
- 注意:java这个命令使用的时候,java命令后面不是文件的路径。必须是一个“类名”。
- 例如:
- java Hello
- java Student
- java User
- java Product
- 例如:
- 以下程序的执行原理:
- java.exe命令执行会启动:JVM
- JVM启动之后,马上启动“类加载器-Class Loader”
- ClassLoader负责去硬盘的“某个位置”上搜索“类名.class”字节码文件。
- 找不到这个.class文件,一定会出现程序异常现象。
- 找到了这个.class文件之后将.class文件转换成”二进制”,操作系统可以直接识别二进制,
操作系统执行二进制码和底层的硬件平台进行交互。
10、什么是类名?
- 假设硬盘上有一个文件,叫做Hello.class,那么类名就叫做:Hello
- 假设硬盘上有一个文件,叫做Student.class,那么类名就叫做:Student
- 假设硬盘上有一个文件,叫做User.class,那么类名就叫做:User
- 假设硬盘上有一个文件,叫做Product.class,那么类名就叫做:Product
11、开始第一个java程序的开发
1、JDK下载
2、JDK安装
- 只安装了JDK,独立的JRE没有安装
3、在硬盘的某个位置上新建一个java源文件:HelloWorld.java
4、在HelloWorld.java文件中编写源代码
5、打开命令窗口,使用javac命令进行编译:
javac 源文件路径
出现以下错误:
C:\Users\Administrator>javac
‘javac’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。怎么解决?
- 第一种方案:切换到javac.exe文件所在的目录,这个时候使用javac.exe不会出问题,但是这种方式比较麻烦。
- 第二种方案:配置环境变量path
原理:windows操作系统在查找某个命令的时候是怎么查找的?
- 首先会从当前目录下找这个命令
- 当前目录下不存在这个命令的话,会去环境变量path指定的路径当中查找该命令。
- 还是找不到则出现错误提示信息。
- path环境变量隶属于windows操作系统,和java无关,这个环境变量主要用来指定命令的搜索路径。
6、配置环境变量
计算机 –> 点击右键 –> 属性 –> 高级系统设置 –> 环境变量
环境变量配置包括用户级别和系统级别
任何一个环境变量都有变量名和变量值,例如path环境变量:
变量名是:path值:路径【多个路径之间必须采用分号隔开,而且要求分号必须是半角分号】path=C:\Program Files (x86)\Java\jdk1.7.0_75\bin;otherpath;otherpath…..
编译1【绝对路径】:D:\course\JavaProjects>javac D:\course\JavaProjects\02-JavaSE\day01\HelloWorld.java
编译2【相对路径】:D:\course\JavaProjects>javac 02-JavaSE\day01\HelloWorld.java
编译3【相对路径】:D:\course\JavaProjects\02-JavaSE\day01>javac HelloWorld.java
7、运行:
必须将路径切换到“D:\course\JavaProjects\02-JavaSE\day01”目录下
执行:java HelloWorld
D:\course\JavaProjects\02-JavaSE\day01>java HelloWorld
Hello World!
12、JDK、JRE、JVM三者之间的关系?
- JDK:Java开发工具箱
- JRE:java运行环境
- JVM:java虚拟机
JDK包括JRE,JRE包括JVM。
JVM是不能独立安装的。
JRE和JDK都是可以独立安装的。
有单独的JDK安装包。
也有单独的JRE安装包。
没有单独的JVM安装包。
安装JDK的时候:JRE就自动安装了,同时JRE内部的JVM也就自动安装了。
安装JRE的时候:JVM也就自动安装了。
13、java程序从开发到最终运行经历了什么?
编译期:(可以在windows上)
- 第一步:在硬盘的某个位置(随意),新建一个xxx.java文件
- 第二步:使用记事本或者其它文本编辑器例如EditPlus打开xxx.java文件
- 第三步:在xxx.java文件中编写“符合java语法规则的”源代码。
- 第四步:保存(一定要将xxx.java文件保存一下)
- 第五步:使用编译器(javac【JDK安装后自带】)对xxx.java文件进行编译。
- 第六步:如果xxx.java文件中编写的源代码是符合语法规则的,编译会通过,如果xxx.java文件中编写的源代码违背了语法规则,那么编译器会报错,编译器报错之后class文件是不会生成的,只有编译通过了才会生成class字节码文件。并且一个java源文件是可以生成多个class文件的。(编译实质上是检查语法)
运行期(JRE在起作用):(可以在windows上,也可以在其他的OS上。)
- 第七步:如果是在Linux上运行,需要将windows上生成的class文件拷贝过去不需要拷贝源代码,真正运行的是字节码。(但是源代码也不要删除,有用)
- 第八步:使用JDK自带的一个命令/工具:java(负责运行的命令/工具)执行字节码
- 第九步:往下的步骤就全部交给JVM了,就不需要程序员干涉了。
JVM会将字节码文件装载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为1010101010..等的二进制) - 第十步:JVM会将生成的二进制码交给OS操作系统,操作系统会执行二进制码和硬件进行交互。
注意:在以上的过程中,需要使用两个非常重要的命令?
- javac 命令,负责编译
- java 命令,负责运行
以上是一个复杂的过程,那么缩减一下,程序员到底要干啥?(编写、编译、运行)
- 新建java文件
- 打开java文件
- 写java源代码
- 保存
- javac命令编译
- java命令运行
14、注释
1、注释是对java源代码的解释说明。
注释可以帮程序员更好的理解程序。
2、注释信息只保存在java源文件当中,java源文件编译生成的字节码class文件,class文件中是没有这些注释信息的。
3、在实际的开发中,一般项目组都要求积极的编写注释。这也是一个java软件工程师的基本素养。
4、注释不是写的越多越好,精简,主线清晰,每个注释都应该是点睛之笔。
5、注释方法(3种):
单行注释
// 这种注释属于单行注释,只注释两个斜杠后面的多行注释
/*
在这里可以编写多行注释
这是第一行注释
这是第二行注释
这是第三行注释
…….
*/javadoc注释
/***javadoc注释
*javadoc注释
*javadoc注释
*javadoc注释
*javadoc注释
*/
注意:这种注释是比较专业的注释,该注释信息会被javadoc.exe工具解析提取并生成帮助文档。
15、HelloWorld程序的执行原理
- java.exe命令会启动JVM
- JVM启动之后会启动类加载器ClassLoader
- ClassLoader会在硬盘上的某个位置搜索HelloWorld.class字节码文件
- 找到该文件则执行
- 找不到该文件则报错
ClassLoader是在哪个位置上搜索HelloWorld.class字节码文件的?
默认情况下,ClassLoader从当前路径下加载xxx.class字节码文件
当然,也可以让ClassLoader去某个指定的路径下加载字节码文件,这时需要配置环境变量classpath
classpath环境变量属于java语言中的环境变量,不属于windows操作系统【PATH环境变量属于操作系统】
classpath是给ClassLoader类加载器指路的。
设置这样的环境变量:classpath=D:\course\JavaProjects\02-JavaSE\day02
打开dos命令窗口在任意位置,都可以执行:java HelloWorld
classpath环境变量没有配置的话,类加载器默认从当前路径下找字节码文件,
当classpath环境变量配置为某个指定的路径之后,类加载器只去指定的路径当中加载字节码文件。
综上所述,环境变量classpath不再配置,这样类加载器会自动从当前路径下加载class字节码文件。
所以,每一次执行.class程序的时候,需要在DOS命令窗口中先切换到.class字节码文件所在的路径下。
然后运行。
当然,classpath也可以这样配置:classpath=.
注意:
- 路径中“..”表示上级目录
- 路径中“.”表示当前目录
对HelloWorld程序进行解释:
需要记忆:
- public
- class
- static
- void
- System.out.println(“”); 向控制台输出消息
- 类体
- 方法体
- 类体中不能直接编写java语句【除声明变量之外】
- 一个java语句必须以“;”结束
- 方法体中可以编写多条java语句
- 主方法是程序的入口,固定写法,SUN规定的。
16、关于java代码的编写
在java中任何有效的代码必须写到“类体”当中,最外层必须是一个类的定义。
public表示公开的,class表示定义一个类,Test是一个类名。类名后面必须是一对大括号,这一对大括号被称为“类体”
括号和引号必须是成对的。并且建议都要成对编写,这样才不会丢掉。
代码缩进:
- 我包着你,你就比我低一级。你就需要缩进。
- 没有合理的缩进,代码可读性很差。
- 或者也可以这样说,大括号里的都需要缩进。
- 缩进就是可读性问题,不缩进也不影响程序的编译和执行。
类体/public static void main(String[] args){}:
- 程序的入口,SUN公司java语言规定的
- 也就是说:JVM在执行程序的时候,会主动去找这样一个方法。没有这个规格的方法,程序是无法执行的。
- main方法也可以叫做主方法。
- 注意:
- 方法必须放到“类体”中,不能放到“类体”外面。
- 类体当中应该是方法,而不是直接的java语句。
- 任何一个程序都要有一个入口,没有入口进不来,无法执行。
- 程序的入口只有一个,若有一个一模一样的入口,编译器会报错。
- 一个程序如果没有入口但是没有语法错误的话,编译器不会报错,但运行会报错。
方法体/System.out.println():
- 注意:
- 方法体由一行一行的“java语句”构成
- 并且非常重要的是:任何一条java语句必须以“;”结尾,并且这个分号还得是英文的,不能用中文分号。
- “;” 代表一条语句的结束。
- 非常非常重要的是:方法体中的代码遵循自上而下的顺序依次逐行执行。
- System.out.println();这行代码的作用是向控制台输出一句话。就是这个作用。
- 注意:如果println后面小括号里的内容是一个“字符串”的话,必须使用英文双引号括起来。
- 双引号也要成对儿写。
注意的小点:
1 | // 这个不加双引号行吗? |
17、public class 和 class的区别:
一个java源文件当中可以定义多个class
一个java源文件当中public的class不是必须的
一个class会定义生成一个xxx.class字节码文件
一个java源文件当中定义公开的类的话,只能有一个,并且该类名称必须和java源文件名称一致。
每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:java B,
想执行X.class当中的main方法:java X注意:
当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法。没有主方法会出现运行
阶段的错误:D:\course\JavaProjects\02-JavaSE\day02>java Hello
错误: 在类 B 中找不到主方法, 请将主方法定义为:
public static void main(String[] args)