Java基础

文章目录

  • Java基础
    • 1. Java概述(第一、二章)
      • 1.1 Java基本介绍
      • 1.2 Java的运行机制及运行过程
      • 1.3 Java环境配置
      • 1.4 Java快速入门
      • 1.5 Java学习方法
      • 1.6 Java转义字符
      • 1.7 Java文档注释
      • 1.8 Java代码规范
      • 1.9 DOS常用命令(了解)
    • 2. 本章作业
      • 2.1 编写Hello World程序
      • 2.2 输出信息-程序
      • 2.3 JDK、JRE、JVM-简答
      • 2.4 环境变量path-简答
      • 2.5 Java编写步骤-简答
      • 2.6 Java编写规范-简答
      • 2.7 易犯错误-简答

学习视频来自于B站 韩顺平 零基础30天学会Java。


1. Java概述(第一、二章)

1.1 Java基本介绍

  先看看 Java诞生的小故事

1990年 Sun公司启动绿色计划;
1992年 创建oak语言-改名->Java
1994年 “开源界大佬”Gosling参加硅谷大会展示Java功能,震惊世界;
1995年* Sun公司正式发行Java的第一个版本;
2009年 甲骨文宣布收购Sun公司(包括Java版权);
2011年 甲骨文正式发布Java7。

  Java拥有7~15的各版本,详见甲骨文Java SE支持路线图。由于Java8和Java11是长期支持版本(Longth-Term-Support, LTS),所以应用广泛。

   Java技术体系平台 包括三个:Java SE、Java EE、Java ME。

  Java学习路线会不断更新。 Java的应用 广泛,举例如下:

   Java的特点 包括:

  1. Java语言是面向对象的(oop);
  2. Java语言是健壮的。Java的强类型机制、异常处理、垃圾自动收集等是Java程序健壮性的重要保证。
  3. Java语言是跨平台的。编译好的.class文件,可以借助对应的JVM运行在不同的操作系统上而不需要重复编译。
  4. Java语言是解释性的。也就是编译后不能被机器直接执行,而需要解释器来执行(编译性语言在编译后就可以直接被机器执行)。
    注:解释型语言有javascript, PHP, java等; 编译性语言有C/C++等。

  Java具有多种开发工具,而我选择VSCode。

#mermaid-svg-QHVTWerDv76CLF79 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QHVTWerDv76CLF79 .error-icon{fill:#552222;}#mermaid-svg-QHVTWerDv76CLF79 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QHVTWerDv76CLF79 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-QHVTWerDv76CLF79 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QHVTWerDv76CLF79 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QHVTWerDv76CLF79 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QHVTWerDv76CLF79 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QHVTWerDv76CLF79 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QHVTWerDv76CLF79 .marker.cross{stroke:#333333;}#mermaid-svg-QHVTWerDv76CLF79 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QHVTWerDv76CLF79 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-QHVTWerDv76CLF79 .cluster-label text{fill:#333;}#mermaid-svg-QHVTWerDv76CLF79 .cluster-label span{color:#333;}#mermaid-svg-QHVTWerDv76CLF79 .label text,#mermaid-svg-QHVTWerDv76CLF79 span{fill:#333;color:#333;}#mermaid-svg-QHVTWerDv76CLF79 .node rect,#mermaid-svg-QHVTWerDv76CLF79 .node circle,#mermaid-svg-QHVTWerDv76CLF79 .node ellipse,#mermaid-svg-QHVTWerDv76CLF79 .node polygon,#mermaid-svg-QHVTWerDv76CLF79 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QHVTWerDv76CLF79 .node .label{text-align:center;}#mermaid-svg-QHVTWerDv76CLF79 .node.clickable{cursor:pointer;}#mermaid-svg-QHVTWerDv76CLF79 .arrowheadPath{fill:#333333;}#mermaid-svg-QHVTWerDv76CLF79 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QHVTWerDv76CLF79 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QHVTWerDv76CLF79 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-QHVTWerDv76CLF79 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-QHVTWerDv76CLF79 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QHVTWerDv76CLF79 .cluster text{fill:#333;}#mermaid-svg-QHVTWerDv76CLF79 .cluster span{color:#333;}#mermaid-svg-QHVTWerDv76CLF79 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QHVTWerDv76CLF79 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Java开发工具
editplus
notepad++禁用
Sublime Text
IDEA
eclipse

1.2 Java的运行机制及运行过程

   JVM (Java Virtual Machine, Java虚拟机) 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在 JDK 中。对于不同的操作系统有不同的JVM。JVM机制屏蔽了底层运行平台的差别,实现了 “一次编译,到处运行”

#mermaid-svg-1IGMMRHscRCKPf6h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1IGMMRHscRCKPf6h .error-icon{fill:#552222;}#mermaid-svg-1IGMMRHscRCKPf6h .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1IGMMRHscRCKPf6h .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-1IGMMRHscRCKPf6h .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1IGMMRHscRCKPf6h .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1IGMMRHscRCKPf6h .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1IGMMRHscRCKPf6h .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1IGMMRHscRCKPf6h .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1IGMMRHscRCKPf6h .marker.cross{stroke:#333333;}#mermaid-svg-1IGMMRHscRCKPf6h svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1IGMMRHscRCKPf6h .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-1IGMMRHscRCKPf6h .cluster-label text{fill:#333;}#mermaid-svg-1IGMMRHscRCKPf6h .cluster-label span{color:#333;}#mermaid-svg-1IGMMRHscRCKPf6h .label text,#mermaid-svg-1IGMMRHscRCKPf6h span{fill:#333;color:#333;}#mermaid-svg-1IGMMRHscRCKPf6h .node rect,#mermaid-svg-1IGMMRHscRCKPf6h .node circle,#mermaid-svg-1IGMMRHscRCKPf6h .node ellipse,#mermaid-svg-1IGMMRHscRCKPf6h .node polygon,#mermaid-svg-1IGMMRHscRCKPf6h .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-1IGMMRHscRCKPf6h .node .label{text-align:center;}#mermaid-svg-1IGMMRHscRCKPf6h .node.clickable{cursor:pointer;}#mermaid-svg-1IGMMRHscRCKPf6h .arrowheadPath{fill:#333333;}#mermaid-svg-1IGMMRHscRCKPf6h .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-1IGMMRHscRCKPf6h .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-1IGMMRHscRCKPf6h .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-1IGMMRHscRCKPf6h .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-1IGMMRHscRCKPf6h .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-1IGMMRHscRCKPf6h .cluster text{fill:#333;}#mermaid-svg-1IGMMRHscRCKPf6h .cluster span{color:#333;}#mermaid-svg-1IGMMRHscRCKPf6h div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-1IGMMRHscRCKPf6h :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

编译 javac
运行 java
运行 java
运行 java
源文件Tset.java
字节码文件Test.class
JVM for Windows
JVM for MacOS
JVM for Linux

   JDK (Java Development Kit, Java开发工具包) 是提供给Java开发人员使用的,其中包含了Java的开发工具和JRE。 JRE (Java Runtime Environment, Java运行环境) 包括JVM和Java程序所需的核心类库等。如果想运行一个编译好的Java程序(.class),计算机只需要安装JRE即可。

JDK = JRE + 开发工具集(java, javac, javadoc, javap等)
JRE = JVM + Java SE标准类库(Java核心类库)
编译过程只需要用到各种Java开发工具;运行.class文件只需要JRE即可。

编译过程 就是通过编译工具javac将java源文件编译成JVM可以识别的字节码文件。 运行过程 就是通过运行工具java.exe对字节码文件进行执行,本质就是将.class装载到JVM机执行。

1.3 Java环境配置

  由于我选择的安装环境为VSCode,所以我就直接查看VSCode的官方文档"在VS Code中开始使用Java"。注意这个安装过程需要三大件:JDK、VSCode、VSCode中对应的Java扩展。可以发现,帮助文档中 Coding Pack for Java 一节提供的程序可以在 Windows / MacOS 系统中一键安装上述三大件,而且是缺啥补啥,非常好用。

常见问题梳理

    1. DOS命令行(win+r->cmd)输入javac会提示javac 不是内部或外部命令,也不是可运行的程序或批处理文件
      原因分析: 没有配置环境变量Path。如果当前执行的程序在当前目录不存在,win10系统就会寻找环境变量Path的所有目录。如果都没有,就会出现上述错误,反之就会看到参数提示信息。
      解决方法 此电脑->属性->搜索“高级系统设置”->“环境变量”->点击Path后“新建”变量值“JAVA_HOME”变量名为JDK路径->点击Path后“编辑”->“新建”“%JAVA_HOME%\bin”。
    1. 在VSCode运行Java程序会显示错误: 编码 GBK 的不可映射字符(8x97)
      原因分析: 这是因为在oracle官网下的在JDK是国际版的,当我们在使用javac编译的时候编译程序首先会获取当前操作系统默认的编码格式GBK,然后JDK就把Java源文件从GBK编码格式转换为Java内部默认的unicode编码格式放入计算机内存中,再然后javac会把转换格式后的文件进行编译成class文件,最后将unicode编码格式的class文件从内存写入到磁盘当中。问题就是出现在这个过程当中,由于vscode默认是utf-8编码格式,而编译的时候认为文件是GBK编码格式,所以出现了错误。
      解决方法: CSDN博文 vscode下解决:“错误: 编码 GBK 的不可映射字符”。
    1. 我忽然发现自己代码的中文注释全变成问号,而且按照上述2的方法还改不过来。
      原因分析: 回忆一下最开始出现了乱码后,很慌,点击了“通过编码保存”后选了GBK,但是还是乱码。此时,保存的文本全是问号,已经寄了,救不回来了。
      解决方法: 我只能重新敲一遍。

1.4 Java快速入门

需求说明:开发一个Hello.java程序,可以输出“Hello Java!”程序。
开发步骤:

1.将代码编写到拓展名为Hello.java文件进行编译。
2.通过javac命令对上述文件进行编译,生成.class文件。
3.通过java命令对生成的class文件进行运行。

编写程序Hello.java

// 程序功能:输出“Hello Java!”
//1.public class Hello 表示Hello是一个public类(公有的类)
//2.Hello{}表示一个类的开始和结束
//3.public static void main(String[] args)表示一个主方法,即程序的入口
//4.main后面的{}表示方法的开始和结束
//5.System.out.println("Hello Java!");表示输出字符串到屏幕
//6.分号表示语句的结束
public class Hello {// 编写一个main方法public static void main(String[] args) {System.out.println("Hello Java!");}
}

然后依次在DOS命令行输如javac Hello.javajava Hello即可看到输出。

  • 可能的问题:
  1. 可以成功编译生成.class文件,但是却无法运行。
    原因分析及解决方法: 环境变量中有一个错误的classpath,删掉即可。
    参考: CSDN博文JDK8版本JAVA运行错误:找不到或无法加载主类 HelloJava的原因及解决方案。
  • Java开发注意事项和细节说明
  1. Java源文件以 .java 为扩展名。源文件的基本组成部分是类(class),如本类中的Hello类。
  2. Java应用程序的执行入口是main()方法。它有固定的书写格式:
    public static void main (String[] args) {...}
  3. Java语言严格区分大小写。
  4. Java方法由一条条语句构成,每个语句以“;”结束。
  5. 大括号都是成对出现的,缺一不可。[习惯,先写 {} 再写代码]
  6. 一个源文件中最多只能有一个public类。其它类的个数不限。且编译后每一个类都会生成对应的.class文件。【示例】
  7. 如果源文件包含一个public类,则文件名必须按该类名命名!
  8. 一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法。【示例】

对于上述注意事项的代码示例:

//本程序用于输出“Hello Java”
public class test {public static void main(String[] args) {System.out.println("Hello Java!");}
}// 6. 一个源文件中最多只能有一个public类。其它类的个数不限。
class Dog {public static void main(String[] args) {System.out.println("Hello 小狗狗~");}
}// 6. 一个源文件中最多只能有一个public类。其它类的个数不限。
class Tiger {public static void main(String[] arg) {System.out.println("Hello 小老虎~");}
}
  • 命令行运行结果(注意保存):
PS C:\Users\liam\Desktop\Java学习\代码> java Dog
Hello 小狗狗~
PS C:\Users\liam\Desktop\Java学习\代码> java Tiger
Hello 小老虎~
PS C:\Users\liam\Desktop\Java学习\代码> java test
Hello Java!

1.5 Java学习方法

要学习一项技术要明确6点:

  1. 需求
  2. 尝试使用传统方法解决
  3. 新技术的优势
  4. 学习基本原理/语法
  5. 做一个基本的程序
  6. 深入研究注意事项、使用规范等。

1.6 Java转义字符

Java中常用的转义字符(Escape character)包括:

  • \t:一个制表位,实现对齐功能
  • \n:换行符
  • \\:一个\
  • \":一个"
  • \':一个’
  • \r:一个回车

代码示例:

//本程序演示转义字符的使用
public class test {public static void main(String[] args) {System.out.println("北京\t天津\t上海");// 制表位System.out.println("Jack\nSmith\nMary");// 换行符System.out.println("C:\\Windows\\System32\\cmd.exe");// 输出地址System.out.println("\\\\n");// 输出\\nSystem.out.println("\"Rorschach said \'Never Compromise!\'\"");// 输出双引号""、单引号''System.out.println("冬奥会吉祥物是\r冰墩墩");// 回车就是光标回到本行最开始System.out.println("冬奥会吉祥物是\r\n冰墩墩");// 回车+换行(回车显得很没用)// 小练习System.out.println("书名\t作者\t价格\t销量\n三国\t罗贯中\t120\t1000\n");}
}

编译后运行结果:

北京    天津    上海
Jack
Smith
Mary
C:\Windows\System32\cmd.exe
\\n
"Rorschach said 'Never Compromise!'"
冰墩墩吉祥物是
冬奥会吉祥物是
冰墩墩
书名    作者    价格    销量
三国    罗贯中  120     1000
  • 小技巧:若文件名过长,控制台输入Tab键可以自动补全文件名。
  • 初学Java易犯错误:
    1. 找不到文件
      解决方法:源文件不存在或写错,或者当前路径错误。
    2. 主类名和文件名不一致
      解决方法:声明为public的主类应与文件名一致,否则编译失败。
    3. 缺少分号
      解决方法:编译失败,注意错误出现的行数,再到源代码中指定位置修改。
    4. 不好修改的错误:逻辑错误、环境错误等,以后再说。

1.7 Java文档注释

  好的注释是一个开发者的必修课。文本注释只可以在代码中查看,但是文档注释可以生成网页API,所以用的非常多。下面看注释的简易示例:

/**
* @author 虎慕
* @version 软件版本1.0
*/
public class test {public static void main(String[] args) {// 这是一个单行注释/** 这是* 一个* 多行注释,这里每一行的星号是自动补全*/}
}

然后运行javadoc -d c:\\Users\\liam\\Desktop\\Java学习 -author -version test.java就会在对应位置生成html文件。

更多javadoc标签查看博客园文章 java文档注释–javadoc标签。

1.8 Java代码规范

下面给出一些常用的编码规范:

  1. 类、方法的注释,要以javadoc的方式来编写。
  2. 非Java Doc的注释,往往是给代码的维护者看的,着重告述读者为什么这样写,如何修改,注意什么问题等。
  3. 使用tab操作实现缩进默认整体向右边移动;用shift+tab整体向左移。
  4. 运算符、‘=’ 两边习惯性各加一个空格。比如:2 + 4 * 5 + 345 -89
  5. 源文件使用utf-8编码(因为要配合DOS命令行,才需要GBK)。
  6. 行宽度不要超过80字符。
  7. 代码编写要遵循 行尾风格次行风格 (指大括号,推荐前者)。

更完整的代码规范可以参考《阿里巴巴Java开发手册终极版(1.3.0)》

1.9 DOS常用命令(了解)

  DOS(Disk Operating System, 磁盘操作系统)可以直接操纵管理硬盘的文件,简单来说就是windows的目录结构。下面是DOS指令基本运行原理:

#mermaid-svg-AaGy5jLKkurrzQ5G {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AaGy5jLKkurrzQ5G .error-icon{fill:#552222;}#mermaid-svg-AaGy5jLKkurrzQ5G .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-AaGy5jLKkurrzQ5G .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-AaGy5jLKkurrzQ5G .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-AaGy5jLKkurrzQ5G .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-AaGy5jLKkurrzQ5G .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-AaGy5jLKkurrzQ5G .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-AaGy5jLKkurrzQ5G .marker{fill:#333333;stroke:#333333;}#mermaid-svg-AaGy5jLKkurrzQ5G .marker.cross{stroke:#333333;}#mermaid-svg-AaGy5jLKkurrzQ5G svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-AaGy5jLKkurrzQ5G .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-AaGy5jLKkurrzQ5G .cluster-label text{fill:#333;}#mermaid-svg-AaGy5jLKkurrzQ5G .cluster-label span{color:#333;}#mermaid-svg-AaGy5jLKkurrzQ5G .label text,#mermaid-svg-AaGy5jLKkurrzQ5G span{fill:#333;color:#333;}#mermaid-svg-AaGy5jLKkurrzQ5G .node rect,#mermaid-svg-AaGy5jLKkurrzQ5G .node circle,#mermaid-svg-AaGy5jLKkurrzQ5G .node ellipse,#mermaid-svg-AaGy5jLKkurrzQ5G .node polygon,#mermaid-svg-AaGy5jLKkurrzQ5G .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-AaGy5jLKkurrzQ5G .node .label{text-align:center;}#mermaid-svg-AaGy5jLKkurrzQ5G .node.clickable{cursor:pointer;}#mermaid-svg-AaGy5jLKkurrzQ5G .arrowheadPath{fill:#333333;}#mermaid-svg-AaGy5jLKkurrzQ5G .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-AaGy5jLKkurrzQ5G .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-AaGy5jLKkurrzQ5G .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-AaGy5jLKkurrzQ5G .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-AaGy5jLKkurrzQ5G .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-AaGy5jLKkurrzQ5G .cluster text{fill:#333;}#mermaid-svg-AaGy5jLKkurrzQ5G .cluster span{color:#333;}#mermaid-svg-AaGy5jLKkurrzQ5G div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-AaGy5jLKkurrzQ5G :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

接收指令
解析指令
执行指令

  下面介绍绝对路径与相对路径。假设现在存在如下目录结构:

#mermaid-svg-hvi2mBtomqRLlpzG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hvi2mBtomqRLlpzG .error-icon{fill:#552222;}#mermaid-svg-hvi2mBtomqRLlpzG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hvi2mBtomqRLlpzG .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hvi2mBtomqRLlpzG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hvi2mBtomqRLlpzG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hvi2mBtomqRLlpzG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hvi2mBtomqRLlpzG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hvi2mBtomqRLlpzG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hvi2mBtomqRLlpzG .marker.cross{stroke:#333333;}#mermaid-svg-hvi2mBtomqRLlpzG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hvi2mBtomqRLlpzG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hvi2mBtomqRLlpzG .cluster-label text{fill:#333;}#mermaid-svg-hvi2mBtomqRLlpzG .cluster-label span{color:#333;}#mermaid-svg-hvi2mBtomqRLlpzG .label text,#mermaid-svg-hvi2mBtomqRLlpzG span{fill:#333;color:#333;}#mermaid-svg-hvi2mBtomqRLlpzG .node rect,#mermaid-svg-hvi2mBtomqRLlpzG .node circle,#mermaid-svg-hvi2mBtomqRLlpzG .node ellipse,#mermaid-svg-hvi2mBtomqRLlpzG .node polygon,#mermaid-svg-hvi2mBtomqRLlpzG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hvi2mBtomqRLlpzG .node .label{text-align:center;}#mermaid-svg-hvi2mBtomqRLlpzG .node.clickable{cursor:pointer;}#mermaid-svg-hvi2mBtomqRLlpzG .arrowheadPath{fill:#333333;}#mermaid-svg-hvi2mBtomqRLlpzG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hvi2mBtomqRLlpzG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hvi2mBtomqRLlpzG .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-hvi2mBtomqRLlpzG .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-hvi2mBtomqRLlpzG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hvi2mBtomqRLlpzG .cluster text{fill:#333;}#mermaid-svg-hvi2mBtomqRLlpzG .cluster span{color:#333;}#mermaid-svg-hvi2mBtomqRLlpzG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hvi2mBtomqRLlpzG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

D盘
abc1文件夹
test100文件夹
test200文件夹
abc2文件夹
test100文件夹
test200文件夹
hello.txt

当前在abc1文件夹的test100文件夹下,要想访问hello.txt文件,那么
绝对路径 就是从顶级目录开始定位,形成的一个路径,如d:\abc2\test200\hello.txt
相对路径 就是从当期路径开始定位,形成的一个路径,如..\..\abc2\test200\hello.txt
上面的..\表示返回上一级目录,到达顶级目录便会自动停止(多写没关系)。

  • 常用的dos命令
  1. cls:clear screen,清屏
  2. help 命令:查看当前命令的帮助
  3. exit:退出DOS
  4. md ADRESS:make directory,创建文件夹,如md c:\新建文件夹
    rd ADRESS:remove directory,移除文件夹,如rd c:\新建文件夹
    cd /D ADRESS:change directory,切换到其他盘下。
    cd ADRESS:切换到当前盘的其他目录下(可以使用相对路径和绝对路径)。
    cd \:直接切换到当前盘的顶级目录。
  5. copy 文件名 路径名:拷贝文件。
    del 文件名:删除文件。
    move 文件名 路径名:剪切文件。
    echo 内容 > 文件名:输入内容到文件,如echo hello > abc.txt
  6. dir ADRESS:查看当前目录是有什么,不加地址就默认当前文件夹,如dir c:\users
    tree ADRESS:查看指定目录下的所有子级目录,无地址默认展示当前盘所有目录。

更多指令可以暂时查看博客园文章 “DOS命令大全”。
进一步学习可以查看B站 Linux课程 “2021韩顺平 一周学会Linux”。


2. 本章作业

2.1 编写Hello World程序

需求:在屏幕上输出 Hello World!

源代码:

public class test {public static void main(String[] arg) {System.out.println("Hello World!");}
}

2.2 输出信息-程序

需求:将个人的基本信息(姓名 身高 体重 年龄)打印到控制台上。每条信息各占一行。

考察知识点:对于转义字符的使用。

源代码:

public class test{public static void main(String[] arg){System.out.println("姓名\t虎慕\n身高\t175cm\n体重\t80kg\n年龄\t22year");}
}

编译后运行结果:

姓名    虎慕
身高    175cm
体重    80kg
年龄    22year

2.3 JDK、JRE、JVM-简答

问:JDK、JRE、JVM三者的关系是什么?
答:

JDK = JRE + Java开发工具
JRE = JVM + 核心类库

2.4 环境变量path-简答

问:环境变量path配置及其作用?
答:

配置过程:先配置JHAVA_HOME指向JDK安装的主目录;再编辑path增加%JAVA_HOME%\bin
作用:环境变量的作用是为了在DOS的任意目录,可以使用java和javac命令。否则,只能在当前目录使用。

2.5 Java编写步骤-简答

问:总结一下Java的编写步骤。
答:

  1. 编写Java的源代码;
  2. javac 编译,得到对应的.class字节码文件;
  3. java 运行,本质就是将字节码文件加载到JVM运行。

2.6 Java编写规范-简答

问:Java编写的7个规范是什么?
答:

  1. 类、方法的注释,使用javadoc的方式,即文档注释。
  2. 非javadoc的注释,往往是对代码的说明(给程序的维护者),说明如何修改、注意事项等。
  3. Tab整体右移,Shift+Tab整体左移。
  4. 运算符和等号两边,要习惯性的空格。
  5. 源码文件使用UTF-8编码。
  6. 行宽的字符不要超过80个。
  7. 编程风格有行位风格和次行风格(建议前者)。

2.7 易犯错误-简答

问:总结初学者易犯错误。
答:

  1. 编译或运行时找不到文件。
  2. 主类名和文件名不一致。
  3. 缺少分号 ; 。
  4. 拼写错误。

Java基础-Java概述(第一、二章)相关推荐

  1. Java基础学习——第十六章 Java8新特性

    Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...

  2. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  3. Java基础----Java编程语言概述

    Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...

  4. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  5. 第一二章(PTA复习)

    第一二章 因为3默认是整形,整形长度大于short型,如果让short型 = short型 + int型,可能会溢出,所以编译报错 例如: 答案:D switch 语句中的变量类型可以是: byte. ...

  6. Java基础-Java中常用的锁机制与使用

    Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...

  7. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...

  8. 『RNN 监督序列标注』笔记-第一/二章 监督序列标注

    『RNN 监督序列标注』笔记-第一/二章 监督序列标注 监督序列标注(Supervised Sequence Labeling)与传统的监督模式分类(supervised pattern classi ...

  9. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...

  10. Java基础——Java多继承的三种实现方式

    Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...

最新文章

  1. srand((unsigned)time(NULL))详解
  2. paperclip的id partition功能还是相当的给力,省得我们实现了,这个功能之前连想都没想到,...
  3. 如何区分SCSI卡和RAID卡?
  4. android textView 替文字添加下划线 删除线
  5. oracle遇到无效lob,sql – ORA-22275错误:指定了无效的LOB定位符
  6. html实现 左图右文_让CSS flex布局最后一行左对齐的N种方法
  7. 论文浅尝 - AAAI2020 | 多通道反向词典模型
  8. 原生js实现类似jq的trigger
  9. Oracle 12.2新特性 | 基于权重的节点驱逐
  10. 判断手机是否支持闪光灯的
  11. ios知识点扩充(1)
  12. java获取音频驱动程序_驱动程序---音频 MDD 和 PDD
  13. VRRP与VLAN综合实验
  14. 控制方法只有相应权限才可执行
  15. 【运动学】基于matlab GUI模拟小球自由落体【含Matlab源码 1630期】
  16. 思科CCNA考试流程-ielab
  17. 全新UI四方聚合支付系统源码/新增USDT提现/最新更新安全升级修复XSS漏洞补单漏洞
  18. Kano模型思考:以QQ第一版为例,如何确定产品优先级
  19. 《#华为云#听从你心,无问西东》及网友跟帖
  20. ZF网络架构深度详解

热门文章

  1. 发票信息提取系统解决方案(纸质发票、电子发票)
  2. 为什么打印还要另存为_为什么打印机一打印就会出现另存为
  3. android fragment横屏,Fragment横竖屏
  4. 大年初五嘉定观影《天将雄师》后点评
  5. openstack compute service list报错(HTTP 503)
  6. Dynamics finance and operation官方虚拟机10.0.24使用私人账号访问
  7. Varscan2 Call snp_indel
  8. 玉米社:单页网站怎么做seo?优化思路?
  9. Qt编写安防视频监控系统61-子模块5设备控制
  10. 使用nodejs + wecharty打造你的个人微信机器人