java基础

283 阅读5分钟

1、java语言特性

  • 跨平台/可移植 (JVM机制)

    • Java程序并没有和底层的操作系统直接交互,java程序实际上运行在JVM当中,JVM与操作系统交互,不同的操作系统中必须安装不同版本的JVM。
    • 在可移植性方面表现非常好,一次编译,到处运行。
    • 但是为了达到可移植,必须提前在操作系统中安装JRE,JRE有了之后才会有JVM。(JVM不能单独安装)
  • 开源、免费、纯面向对象

  • java支持多线程

  • 自动垃圾回收机制(GC机制)

2、JDK、JRE、JVM

  • JDK【Java开发工具箱】

  • JRE【Java的运行时环境】

  • JVM【Java虚拟机】

    三者之间的关系: JDK 中包含JRE,JRE中包含JVM。

3、java分为3大块

  • JavaSE(J2SE)【Java标准版】:

    基础,无论是以后走EE还是ME,SE是必须要精通的。 J2SE是SUN公司为java程序员准备的一套“基础类库”,这套基础类库学习之后,可以完成最基本的操作, 例如,文件的读写、线程的控制....

  • JavaEE(J2EE)【Java企业版】:

    这是SUN公司为程序员专门准备的一套“类库”,这套类库可以协助程序员完成企业级软件的开发 企业级软件:OA办公系统、进销存系统、超市系统.......

  • JavaME(J2ME)【Java微型版】

    这是SUN公司为java程序员专门准备的另一套“类库”,这套类库可以协助程序员完成微型设备的嵌入式开发, Java最初就是做微型设备嵌入式开发的。

4、java命令

  • javac 源文件路径:编译文件
  • java 类名:运行文件
  • native2ascii 回车 输入文字:将文字转换成unicode编码形式

5、java的编译与运行

  • 编译阶段

    • 在硬盘的某个位置创建一个xxx.java源文件

    • 打开源文件,在该文件当中编写符合java语法的源程序,然后保存。

    • 使用javac命令对java源程序进行编译(编译语法格式:打开DOS命令窗口,输入:javac 源文件路径

      • 编译通过:在硬盘上生成一个或者多个字节码文件【xxx.class】
      • 编译失败:说明源程序某个位置不符合java语法格式。

      注意

      • 源文件路径可以是绝对路径,也可以是相对路径。
      • 编译之后,其实java源文件删除不会影响程序的执行。
  • 运行阶段

    • 打开命令窗口,在命令窗口中使用java命令运行java程序,语法格式:java 类名(类名不是路径)

    执行原理

    • java命令执行会启动:JVM
    • JVM启动之后,马上启动“类加载器-Class Loader
    • ClassLoader负责去硬盘的“某个位置”上搜索“类名.class”字节码文件。
    • 找到了这个.class文件之后将.class文件转换成"二进制",操作系统可以直接识别二进制, 操作系统执行二进制码和底层的硬件平台进行交互。(若找不到这个.class文件,则报错)

​ 注意:java命令必须在.class文件目录下执行

编译和运行可以在不同的操作系统中完成

6、java的类

假设硬盘上有一个文件,叫做Hello.class,那么类名就叫做:Hello 假设硬盘上有一个文件,叫做Student.class,那么类名就叫做:Student 假设硬盘上有一个文件,叫做User.class,那么类名就叫做:User 假设硬盘上有一个文件,叫做Product.class,那么类名就叫做:Product

7、java的注释

  • 单行注释

    // 注释内容
    
  • 多行注释:

    /*
    注释内容
    */
    
  • javadoc注释:会被javadoc.exe工具提取解析并生成帮助文档

    /**
    *注释内容
    *注释内容
    */
    

注释不会被编译到.class字节码文件中

8、classpath的配置

默认情况下,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=.

9、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)

10、java的SE类库

java程序中SUN提供了一套庞大的类库,java程序是基于这套基础的类库来进行开发的。

SE类库的字节码路径:D:\JDK\jdk1.8.0_181\jre\lib\rt.jar\java\lang

SE类库源码路径:D:\JDK\jdk1.8.0_181\src.zip\java\lang