目录
JDK,JRE,JVM的关系
Java跨平台原理
JAVA的加载与执行
常用的Dos命令
JDK安装和环境变量配置
关于classpath环境变量配置中封号的理解
public class与class区别
JDK包含JRE 和开发工具包
JRE 包含 核心类库和JVM
简而言之:JDK开发完成的Java程序,交给JRE运行,由JRE里面的Java虚拟机保证我们程序的跨平台
平台:指的是操作系统(Windows,Linux,Mac)
跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行
原理:实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine),java虚拟机可以看作是操作系统跟java程序之间的桥梁,只要在需要运行 java 应用程序的操作系统上,先安装一个对应操作系统的Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行,屏蔽底层操作系统的差异
人机交互方式有两种:
1.图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作,普通用户所使用的电脑操作方式。
2.命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令,程序员所使用的和电脑的交互方式。
这些命令指的是命令行交互,而不是图形化界面交互
常见的一些命令行命令:
(这些简写都是英文简称,例如cd是英文简称:为change directory)
d: 切换盘符到D盘(盘符名称+英文冒号)
md :创建文件夹
rd:删除文件夹 (如果文件夹中有文件的话,需先删除文件,才能删除文件夹,所以我们可视化窗口的删除在window系统下是从里往外删的)
cd.. :返回上级目录
cd\ :返回根目录
dir :查询当前目录内容
cd(change directory):后面跟路径,表示切换到那个路径
del(删除文件,如果要删除一堆后缀名一样的,用*.txt,如果删除下面的所有文
件,则del *即可,如果del跟的是文件夹,则它也会默认删除此文件夹下的
所有文件,星号的含义:通配符,通通都能匹配的符号)
echo : 新建文件(例如echo javase>test.doc,所指的意思是将javase的内容写
到新建文件test.doc当中)
cls :清屏
exit:退出命令行窗口
要想知道其他命令:可通过help帮助,或者是help 命令名称即可取得命令用法
像JDK安装和环境变量配置的介绍网上太多,这里不多做介绍:可以访问如下地址
https://jingyan.baidu.com/article/f96699bb163475894e3c1be4.html
我们想要执行某个命令,都要先切换带该命令所在的文件夹下,这样比较有局限性,而像记事本notepad命令却能在任意目录下执行,这是为什么呢?
因为在命令窗口中执行notepad命令系统会去查找两个目录:
1.命令行窗口的当前目录
2.path下配置的路径是否包含notepad命令,而path里面存放的都是系统中应用程序所在的路径
(而我们在Path路径中看到的SystemRoot指的是系统的根目录(C:\Windows))
为了JDK命令能在任意目录下运行,我们需配置环境变量(配置环境变量的意义其实就在于告诉系统我们配置的命令路径在哪,而我们访问这些命令的时候,系统帮我们去找这些命令,而不用每次要执行命令时刻意切换到命令所在目录,原理就像于系统除了查找当前目录,还多找了一个目录,也就是path中配置的目录)
设置环境变量步骤:1.设置JAVA_HOME为JDK根目录,设置path为%JAVA_HOME%\bin,设置classpath为%JAVA_HOME %\lib,如果在首行则是.;% JAVA_HOME%\lib,设置环境变量就是为了让我们在任何窗口下,这些设置的内容都起作用,不用我们去特意目录下寻找,让操作系统帮我们寻找,path是配置命令,classpath是为了让虚拟机找到class文件,找到我们所请求的类
深层次理解:其实配置环境变量的过程就是让系统去找我们配置的盘符路径,分为以下三种情况:
1. 没有配置任何的java环境变量
需将java程序放至bin目录下,管是运行命令还是运行的java文件,系统只会去查找命令行窗口的当前目录,其中之一找不到就无法正常运行。只有将文件放入bin目录,才能正常编译运行因为没配置环境变量系统不
2.配置了path路径(也就是配置了java运行工具的路径)
而当配置了java的path环境变量后,命令就可以在任意目录下使用,但是我们还是要切换目录到java程序目录中,这样才能找到java程序,进而正常运行
3.即配置了path路径也配置的classpath路径
其实两者并没多大关联,path是让系统去查找命令窗口当前目录和配置的path路径下的目录是否有我们所需要的可运行命令,而classpath是让我们除了去找命令窗口当前目录和classpath配置的目录是否有我们所需要的class文件(一般用于当别人直接给你class文件,你直接将他放入你配置的class文件目录路径,这样命令行执行时就不用切换窗口,可直接执行,如果当前目录与配置的classpath路径有相同名称的class文件,优先执行配置的classpath路径下的class文件,当然这种配置的前提是classpath路径结尾有封号,如果结尾没封号,则虚拟机只会去我们配置的classpath路径下找,而不会去找命令窗口的当前目录)
1.假如设置环境变量为E:\,则表示class文件只会在这个目录下寻找
2.如果设置为E:\; 多了封号,则表示除了在E盘目录下寻找class文件还会在命令行窗口当前目录下寻找(E盘优先,然后才是当前目录)
3.假如设置了.; E:\; 后面这个封号加不加效果一样,如果这样配置也会查找E盘和当前目录,不过优先原则是当前目录
HelloWorld案例
一个类前面的public修饰符是可有可无的当在一个类前面使用public修饰符,则文件名必须与类名一致,否则出现编译错误当在一个类中没有使用public修饰符,则文件名可以与类名不一致,当编译成功后会自动生成一个 对应类名的字节码文件,并且可以运行字节码文件(只要有main方法即可)在一个Java源文件中可以编写任意多个类,当编译成功后会自动生成对应类的个数的字节码文件,并且可以运行每个字节码文件(只要有main方法即可)注意:在实际开发中,一般一个Java源文件中只编写一个类在一个Java源文件中最多只能有一个类前面使用public修饰符