按视频的标号来对应小标题,自用学习笔记
文章目录
- 5. 内容梳理
- 6. 程序举例
- 6.1 什么是程序
- 7. Java故事
- 7.1 Java诞生小故事
- 7.2 Java技术体系平台
- 8. Java特性
- 8.1 Java重要特点
- 9. sublime
- 10. jdk介绍
- 10.1 Java运行机制及运行过程
- 10.1.1 Java虚拟机(JVM,Java Virtual Machine)
- 10.2 什么是JDK,JRE
- 10.2.1 JDK
- 10.2.2 JRE
- 10.2.3 总结
- 11. 我的电脑
- 12. JDK安装
- 13. JDK配置
- **13.1 配置环境变量的原因**
- **13.2 配置环境变量的具体步骤**
- 14. 15.是关于WIN7和MAC OS的JDK安装方法,可看视频
- 16.快速入门
- 16.1 环境变量配置的细节
- 16.2 Java快速入门
- 16.3 Hello程序运行原理图
- 16.4 课堂小练习
- 17. 运行机制
- 17.1 Java执行流程分析
- 17.2 什么是编译
- 17.3 什么是运行
- 17.4 java程序开发注意事项
- 18. 开发细节
- 18.1 Java开发注意事项和细节说明
- 19. 学习方法
- 20. 转义字符
- 20.1 Java常用的转义字符
- 20.2 课堂练习
- 21. 易犯错误
- 22. 注释(comment)介绍
- 22.1 介绍
- 22.2 单行注释
- 22.2 Java中的注释类型
- 23. 多行注释
- 23.1 单行注释
- 23.2 多行注释
- 24. 文档注释
- 24.1 进行文档注释
- 24.2 常用的javadoc标签
- 25. 代码规范
- 26. DOS原理
- 27. 路径详解
- 28. DOS指令1
- 29. DOS指令2
- 30. DOS指令3
- 31. 32. 本章作业
5. 内容梳理
回顾上一章内容,可以看视频
6. 程序举例
6.1 什么是程序
程序:计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合,举例说明:
计算机程序执行过程:
最简单的1+1程序举例:
//1+1程序
public class Test{
public static void main(String[] arr){
int res = 1 + 1;
System.out.println("结果=" + res);
}
}
将上述代码保存到Test.java后,进入CMD,第一步,先使用javac命令编译一下,生成Test.class文件
然后输入java Test,按回车就可以执行
7. Java故事
7.1 Java诞生小故事
-
1990 sun公司启动绿色计划
-
1992创建oak(橡树)语言->java
-
1994 gosling参加硅谷大会演示java功能震惊世界。1995 sun 正式发布java第1个版本。
-
2009年,甲骨文公司宣布收购Sun 。
-
2011年,发布java7
-
其他Java版本发布详情:其他版本
【注】公司里最常用的是8和11版本(2024年)
7.2 Java技术体系平台
- Java SE(Java Standard Edition)标准版:支持桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,此版本以前称为J2SE;
- Java EE(Java Enterprise Edition)企业版:是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet、Jsp等,主要针对于Web应用车光绪开发。版本以前称为J2EE;
- Java ME(Java Micro Edition)小型版(安卓出来以后,用的人就比较少了):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME;
8. Java特性
8.1 Java重要特点
-
Java语言是面向对象的(oop);
-
Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证;
-
Java语言是跨平台性的,在不同操作系统中运行不需要重新编译,(即一个编译好的.class
-
Java语言是解释型的,解释型语言还有:javascript,PHP,java;编译型语言:C/C++;
【注】解释型语言和编译型语言的区别是:解释型语言,编译后的代码(如刚才编译后的Test.class文件),不能直接被机器执行,需要解释器来执行;编译型语言,编译后的代码,可以直接被机器执行,如C/C++。
9. sublime
跟着视频内容下载就行,刚开始的时候用sublime,培养代码感。
10. jdk介绍
10.1 Java运行机制及运行过程
- Java语言的特点:跨平台性
做解释工作的执行工作的是JVM(Java虚拟机),不同的操作系统其对应的JVM是不一样的,JVM是包含在JDK中的。
10.1.1 Java虚拟机(JVM,Java Virtual Machine)
- JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK中;(想拥有一个JVM,就需要安装JDK)
- 对于不同的平台,有不同的虚拟机;
- Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
【注】javac是用来编译的命令,java是用来运行的命令。
10.2 什么是JDK,JRE
10.2.1 JDK
- JDK的全称(Java Development Kit,Java开发工具包)
JDK = JRE + Java的开发工具[java, javac, javadoc, javap等] - JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包含了JRE。所以安装了JDK,就不用在单独安装JRE了。
JDK目录如下:
10.2.2 JRE
- JRE(Java Runtime Environment,Java运行环境),JRE = JVM + Java的核心类库[类]
- 包括Java虚拟机(JVM, Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序(普通用户),计算机中只需要安装JRE即可。(比如运行Minecraft Java版,就装JRE就行了),如果是开发者(程序员),就要装JDK。
10.2.3 总结
- JDK = JRE + 开发工具及(例如javac, java编译工具等);
- JRE = JVM + Java SE标准类库;
- JDK = JVM + Java SE标准类库 + 开发者工具集;
- 如果只想运行开发好的.class文件,只需要JRE
11. 我的电脑
基础知识,看视频吧,我跳过了
12. JDK安装
打开网站JDK下载
找到课程对应的Java8:
x64系统(现在新电脑一般都是x64,可以根据视频内容自己判断系统位数),选这个下载安装(这是Windows版),下载会要求你注册一个Oracle账户,注册一个就行,不知道为什么我用谷歌浏览器下载JDK就提示400 Bad Request,换edge浏览器就行:
下面我弄个虚拟机来演示安装过程,JDK的配置是每个新手必要的过程,安装后点开安装包:
公共JRE最好安装一下,方便后续安装IDEA或者其他开发环境,安装位置可以自己改,但是安装路径不要有中文和空格,这里我选择安装到C盘的jdk8文件夹下:
进度条走完后,会弹出下面的窗口,此时JDK已经安装完了,现在来安装公共JRE:
当然你也可以更改安装路径,我这里使用了默认的安装路径,然后JDK就安装好了
13. JDK配置
13.1 配置环境变量的原因
安装完JDK后,我们找到JDK安装的路径:
src就是JDK的代码包,里面有它的源代码,接下来要配置环境变量,如果不配置环境变量,在CMD中敲入javac会出现错误提示:
按windows徽标键(一般在左alt键的左边)+R键输入CMD
输入javac按回车会报错:
错误的原因:当前执行的程序在当前目录下如果不存在,win系统会在系统中已有的一个名为path的环境变量指定的目录中查找。如果仍未找到,会出现以上的错误提示,所以进入到jdk安装路径\bin目录下,执行javac,会看到javac参数提示信息。按上述原因分析,如果通过cd命令切换到jdk8的bin目录下,再执行javac就会有效果:
为了方便我们在任何一个目录都能使用jdk工具的javac,java等命令,所以我们要配置环境变量
13.2 配置环境变量的具体步骤
配置环境变量path的步骤
- 计算机–属性–高级系统设置–环境变量(WIN11)
如果桌面没有此电脑,可以搜一搜相关教程,我这个是虚拟机,我就从资源管理器开始,首先打开资源管理器(随便打开一个文件夹也行)然后找到此电脑:
右键此电脑点“属性”:
在弹出的窗口中往下拉,找到“高级系统设置”:
然后在弹出的窗口中点击“环境变量”:
然后弹出下面的界面:
- 增加JAVA_HOME环境变量,指向jdk的安装目录,在刚才的界面中点击第一排的用户变量对应的“新建”按钮:
在弹出的窗口中,变量名输入框中输入“JAVA_HOME”,变量值输入JDK的安装目录,输入完成后点击“确定”按钮。
- 编辑path环境变量,增加%JAVA_HOME%\bin,这样写完后,win系统要到JAVA_HOME这个指向的目录下边的bin目录去找JDK相关的工具
找到用户变量栏目下的Path(注意不是新建),双击它
在弹出的窗口中点“新建”:
新建后输入%JAVA_HOME%\bin
然后点击“确定”:
点“确定”:
再点“确定”:
这样就配置成功了,我们来测试一下,关掉刚才的CMD窗口,重新启动一个CMD窗口,启动方式还是win+r(参考刚才的),然后(默认是非JDK目录,除非你将JDK安装到用户目录下)在非JDK目录下输入javac:
输入命令javac -version也可以查看版本:
14. 15.是关于WIN7和MAC OS的JDK安装方法,可看视频
16.快速入门
16.1 环境变量配置的细节
如果我们配置环境变量是配置到用户变量,那么该环境变量配置只针对这一个用户(win是一个多用户操作系统),换一个用户就用不了了,如果是配置到系统变量,则这个环境变量可以针对整个系统任何一个用户,如果想让系统中任何一个用户都能用这个环境变量,就按刚才的方法把环境变量重新配置到系统变量(填写的值都是一样的,就是配置到系统变量而已)
16.2 Java快速入门
- 需求说明
要求开发一个Hello.java 程序,可以输出"hello,world!" - 开发步骤
-
将Java代码编写到扩展名为Hello.java的文件中。
2)通过javac命令对该java文件进行编译,生成.class文件。
3)通过java命令对生成的class文件进行运行。 -
打开sublime,然后将untitled命名为Hello.java文件(根据视频来),统一放到你想放的目录下,代码为:
// 演示Java的开发步骤
// 1. public class Hello表示Hello是一个类,是一个public(公有的)类
// 2. Hello{ }表示一个类的开始和结束
// 3. public static void main(String[] args)表示一个主方法,即我们程序的入口
// 4. main() {} 表示放大的开始和结束
// 5. System.out.println("hello,world!");表示输出"hello,world!"到屏幕上
// 6. ;表示语句的结束
public class Hello{
//编写一个main方法
public static void main(String[] args){
System.out.println("hello,world!");
}
}
- 开始编译生成.class文件,找到你锇Hello.java文件存放的目录,然后进入CMD,输入javac Hello.java:
但是并没有生成,因为我们在刚才的代码中写了很多的中文,需要更改文件的编码,回到sublime更改编码(视频中选的GBK编码是因为WIN10系统的CMD默认支持的是GBK编码,在WIN11系统中选UTF-8也可以(似乎WIN11的CMD支持了UTF-8?),至少我这里没问题):
在win10系统中的CMD的标题栏的空白处右键点属性能看到编码是GBK编码:
在win10中如果用UTF-8编码就出现了报错:
在生成了Hello.class文件后,输入java Hello来执行我们刚才的Hello程序,运行的是Hello.class文件,java Hello指的是找到Hello主类来执行,不需要带.class,如果你带上了.class它认为你要运行的是一个名为Hello.class的主类:
正确的运行方式:
16.3 Hello程序运行原理图
16.4 课堂小练习
要求开发一个Hello.java程序,可以输出"xx is studying java!",如果有中文时,如何处理?
【答】如果有中文时,注意CMD的编码类型,设置对应的编码(WIN10下是GBK),代码如下:
public class PrintName{
public static void main(String[] args){
System.out.println("魔理沙 is studying java!");
}
}
运行结果:
17. 运行机制
17.1 Java执行流程分析
把.class文件称为字节码文件,把.java文件称为源文件。
17.2 什么是编译
javac Hello.java
- 有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件;
- 在该源文件目录下,通过iavac编译工具对Hello.java文件进行编译;
- 如果程序没有错误,没有任何提示,但在当前目录下会出现一个Hello.class文件,该文件称为字节码文件,也是可以执行的java的程序。
假如代码写错了,比如语句结束的时候忘了加分号,再编译会弹出错误提示,告诉你需要加一个分号:
17.3 什么是运行
- 有了可执行的java程序(Hello.class字节码文件)
- 通过运行工具java.exe对字节码文件进行执行,本质就是将.class文件装在到jvm虚拟机上执行。
17.4 java程序开发注意事项
对修改后的Hello.java源文件需要重新编译,生成新的class文件后,再进行执行,才能生效。
18. 开发细节
18.1 Java开发注意事项和细节说明
- Java源文件以 .java 为扩展名。源文件的基本组成部分是类(class),如本类中的Hello类。
- Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main(String[] args) {…} - Java语言严格区分大小写,
- Java方法由一条条语句构成,每个语句以“;”结束。
- 大括号都是成对出现的,缺一不可。[习惯,先写{} 后再写代码]
- 一个源文件中最多只能有一个public类。其它类的个数不限。
public class Hello{
//编写一个main方法
public static void main(String[] args){
System.out.println("hello,world!");
}
}
//其他类
//Dog是一个类
class Dog{
}
class Tiger{
}
保存一下,然后编译运行一下:
没有报错,打印内容无变化,但是Hello.java目录下多了Dog.class和Tiger.class:
编译后,每一个类,都对应一个.class文件。
-
如果源文件包含一个public类,则文件名必须按该类名命名!(把Hello.java的类名改成不是Hello,编译会报错,或者把文件名改成Hello2.java,Hello类不动也是一样)
-
一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法,比如在刚才的Dog类和Tiger类中都加入main方法并保存:
public class Hello{
//编写一个main方法
public static void main(String[] args){
System.out.println("hello,world!");
}
}
//其他类
//Dog是一个类
class Dog{
public static void main(String[] args){
System.out.println("hello,dog!");
}
}
class Tiger{
public static void main(String[] args){
System.out.println("hello,tiger!");
}
}
然后再编译,如果想运行Dog类下的主方法,只需要输入命令java Dog,Tiger类似:
19. 学习方法
详情看视频,内容是一些学习上的心得
【注】crud是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。
20. 转义字符
20.1 Java常用的转义字符
转义字符 | 功能 |
---|---|
\t | 一个制表位,实现对齐的功能 |
\n | 换行符 |
|一个| | |
" | 一个" |
’ | 一个’ |
\r | 一个回车 |
测试代码:
public class ChangeChar{
public static void main(String[] args){
//\t
System.out.println("北京\t天津\t上海");
//\n
System.out.println("jack\nsmith\nmary");
// \\
System.out.println("C:\\Windows\\System32\\cmd.exe");
//输入两个\
System.out.println("\\\\");
//\"
System.out.println("xx说:\"hello!\"");
//\'
System.out.println("xx说:\'hello!\'");
//\r
//输出 测试
//\r代表回车
//把测试123换成哈哈123
System.out.println("测试123\r哈哈");
//如果再换行,就不会输出错误
System.out.println("测试123\r\n哈哈");
}
}
输出结果:
【注】在控制台按tab键自动补齐文件名
20.2 课堂练习
要求:请使用一句输出语句,达到输入如下图形的效果:
代码为:
public class PrintItems{
public static void main(String[] args){
System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t1000");
}
}
编译运行后的结果:
21. 易犯错误
详细看视频,不记录了
22. 注释(comment)介绍
22.1 介绍
用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性(可读性):注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
比如Java语言的作者会JDK的源码进行注释:
22.2 单行注释
基本格式:
//注释文字
一个简单的单行注释的例子:
public class PrintItems{
public static void main(String[] args){
//下面代码完成 两个数相加
//定义变量
int n1 = 10;
int n2 = 30;
//求和
int sum = n1 + n2;
//输出结果
System.out.println("结果=" + sum);
}
}
写注释会增加代码的可读性。
22.2 Java中的注释类型
- 单行注释
- 多行注释
- 文档注释
23. 多行注释
23.1 单行注释
基本格式
//注释文字
23.2 多行注释
基本格式
/* 注释文字 */
- 使用细节:
1)被注释的文字,不会被JVM(java虚拟机)解释执行;
2)多行注释里面不允许有多行注释嵌套
演示代码:
//注释演示
public class Comment01{
//编写一个main方法
public static void main(String[] args)
{
//单行注释
/* 多行注释:下面代码完成 两个数相加
定义变量
被注释的文字不会被执行
System.out.println("OK");
*/
int n1 = 10;
int n2 = 30;
//求和
int sum = n1 + n2;
//输出结果
System.out.println("结果=" + sum);
}
}
编译运行结果:
24. 文档注释
24.1 进行文档注释
注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类
- 基本格式
- 如何生成对应的文档注释
- 应用实例
javadoc -d 文件夹名 -xx -yy Demo3.java
演示代码:
/**
* 这是一个测试用的代码
*
* @author 魔理沙
* @version 1.0
*/
public class Comment02{
//编写一个main方法
public static void main(String[] args){
//空的方法
}
}
生成网页文件:
这里的警告问题不大
生成了文档:
打开index.html:
24.2 常用的javadoc标签
标签 | 描述 | 示例 |
---|---|---|
@author | 标识一个类的作者 | @author description |
@deprecated | 指名一个过期的类或成员 | @deprecated description |
{@docRoot} | 指明当前文档根目录的路径 | Directory Path |
@exception | 标志一个类抛出的异常 | @exception exception-name explanation |
{@inheritDoc} | 从直接父类继承的注释 | Inherits a comment from the immediate surperclass. |
{@link} | 插入一个到另一个主题的链接 | {@link name text} |
{@linkplain} | 插入一个到另一个主题的链接,但是该链接显示纯文本字体 | Inserts an in-line link to another topic. |
@param | 说明一个方法的参数 | @param parameter-name explanation |
@return | 说明返回值类型 | @return explanation |
@see | 指定一个到另一个主题的链接 | @see anchor |
@serial | 说明一个序列化属性 | @serial description |
@serialData | 说明通过writeObject( ) 和 writeExternal( )方法写的数据 | @serialData description |
@serialField | 说明一个ObjectStreamField组件 | @serialField name type description |
@since | 标记当引入一个特定的变化时 | @since release |
@throws | 和 @exception标签一样. | The @throws tag has the same meaning as the @exception tag. |
{@value} | 显示常量的值,该常量必须是static属性。 | Displays the value of a constant, which must be a static field. |
@version | 指定类的版本 | @version info |
25. 代码规范
详细看视频演示。
- 类、方法的注释,要以javadoc的方式来写。
- 非Java Doc的注释,往往是给代码的维护者看的,着重告述读者为什么这样写
如何修改,注意什么问题等 - 使用tab操作,实现缩进,默认整体向右边移动,时候用shift+tab整体向左移
- 运算符和 = 两边习惯性各加一个空格。比如:2+4*5+345-89
- 源文件使用utf-8编码
- 行宽度不要超过80字符
- 代码编写次行风格和行尾风格(!!)
【注】老师推荐行尾风格(我也喜欢)
26. DOS原理
DOS:Disk Operation System磁盘操作系统,简单说一下windows的目录结构
md是在当前目录下创建子目录,rd是删除子目录
27. 路径详解
相关的知识补充:相对路径,绝对路径
从test100文件夹访问test200文件夹下的hello.txt,使用相对路径:…\是到abc文件夹,…\是到D盘,然后就可以正常写路径了
…\是进入当前目录的父目录,所以从test100文件夹访问test200文件夹下的hello.txt使用相对路径就如图所示了。
28. DOS指令1
-
查看当前目录是有什么
dir
-
切换到其他盘下:盘符号 cd
切换到C盘:cd /D C:
-
切换到当前盘的其他目录下(使用相对路径和绝对路径演示)…\表示上一级目录(父目录)
d:\abc2\test200 cd…\labc2\test200
-
切换到上一级
cd …
-
切换到根目录
cd \
29. DOS指令2
- 查看指定的目录下所有的子级目录
tree命令
- 清屏
清屏后的效果:
- 退出DOS
执行此命令后DOS窗口关闭
30. DOS指令3
(md[创建目
录],rd[删除目录],copy[拷贝文件],del[删除文件],echo[输入内容到文件],type,move[剪切])
详细看视频
31. 32. 本章作业
- 编写hello, world程序[Homework01.java]
public class Homework01{
public static void main(String[] args)
{
System.out.println("hello,world");
}
}
编译运行结果:
- 将个人的基本信息(姓名、性别、籍贯、住址)打印到控制台上疏忽。各条信息分别占一行。[Homework02.java]
代码:
public class Homework02{
public static void main(String[] args)
{
System.out.println("姓名\t性别\t籍贯\t住址\nXX\t男\t未知\t未知");
}
}
运行结果:
- JDK,JRE,JVM的关系
【答】1) JDK = JRE + Java开发工具
2)JRE = JVM + 核心类库 - 环境变量path配置及其作用
【答】1)环境变量的作用是为了在DOS的任意目录,可以去使用java和javac命令;
2)先配置JAVA_HOME = 指向JDK的安装主目录
3)编辑path环境变量,增加%JAVA_HOME%\bin,%代表引用,这样写的好处是如果改变JAVA_HOME,只改变一个变量 - Java编写步骤
【答】1)编写Java的源代码
2)javac编译,得到对应的.class字节码文件
3)java 运行,本质就是把.class字节码文件加载到JVM运行 - Java编写7个规范
【答】1)类,方法的注释,使用javadoc的方式,即文档注释;
2)非javadoc注释,往往是对代码的说明(给程序的维护者),说明如何修改,注意事项;
3)使用tab键,整体将代码右移,使用shift+tab整体左移;
4)运算符和 = 的两边,给空格,代码看上去清晰,比如:int n = 1 + 4;
5)源码文件使用utf-8编码;
6)行宽字符不要超过80个字符,也就是一行不要写太多;
7)代码编程风格有两种,次行风格和行尾风格(推荐)。 - 初学者Java易犯错误
【答】1) 编译或者运行时,找不到文件,把文件名或者目录找对;
2)主类名和文件名不一致,修改时保持一致即可;
3)语句末尾缺少英文的分号;
4)拼写错误,比如1 -> l; 0-> O, void-> v0id