_little-star_

学习的博客

0%

01关于java

需要掌握的内容:

  • 理解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
  • 强行终止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 *.class

    T1.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程序的执行原理

  1. java.exe命令会启动JVM
  2. JVM启动之后会启动类加载器ClassLoader
  3. ClassLoader会在硬盘上的某个位置搜索HelloWorld.class字节码文件
  4. 找到该文件则执行
  5. 找不到该文件则报错

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 这个不加双引号行吗?
// 可以,因为它是数字。
System.out.println(100);

// 是数字,加双引号行吗?
System.out.println("100");

// 以上性质一样吗?
// 不一样:一个是字符串,一个是数字。
// 但最终输出到控制台上一个样子,没啥区别。

// 这里扩展一下:对于数字来说能进行加减乘除吗?
// + 能用吗?
// - 能用吗?
// / 能用吗?
// * 能用吗?
// 可以
System.out.println(100 + 200); // 300
System.out.println(200 - 100); // 100
System.out.println(200 * 100); // 20000
System.out.println(200 / 100); // 2

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)