本篇参考https://www.cnblogs.com/jmsjh/p/7808764.html,关于C语言为什么不能跨平台的细节
1、常用的DOS命令
(1)打开DOS窗口
①win + r + cmd ,一般来说打开命令行以后,就进入了当前用户的用户目录
②在导航栏直接输入cmd回车
③在目录中按住shift键点右键,在此打开命令窗口
注:window下dos命令不区分大小写,文件夹、文件名称也不区分大小写
可以用Tab键补全
(2)常用命令
<1>dir //显示当前目录中的内容
>dir > filelist.txt //将dir出来的内容,写入到一个名为filelist的文件里
<2>cd //切换目录
<3>ping //测试网络
<4>ipconfig //查看ip,在Linux下ifconfig
<5>cls //清屏
<6>md //建目录,在Linux下mkdir
<7>rd //删除目录,在Linux下是rmdir
删除目录时,这个目录必须是空的,里面不能有文件或目录
<8>del //删除文件,在Linux下是rm
<9>echo //可以用来创建文件
echo aaa>d:/a.txt
<10>type //可以查看文件的内容,在Linux下是cat
type a.txt
<11>tree //查看文件树,Linux下需要安装一下
<12>whoami //查看当前登录的用户是谁
<13>tasklist //查看当前系统进程,在Linux下有ps
<14>set //查看系统中的环境变量
set 查看系统中的所有环境变量
set 环境变量名,就是查看某个环境变量
set Path 查看Path这个环境变量的值
set JAVA_HOME 查看JAVA_HOME这个环境变量的值
(3)几个常用的工具
<1> notepad 记事本
<2> mspaint 画板
<3> calc 计算器
<4> winvar 查看操作系统的版本
<5> mstsc 打开远程服务器连接
<6> services.msc 打开服务管理器
<7> control 打开控制面板
2、Java语言简介
java之父,吉姆斯.高斯林(James Gosling)在1990年初开发出的java语言模型,最初明明为Oak(橡树),SUN看到了Oak在互联网上的应用前景,于是改造了Oak,在1995年以java的名称正式发布
1996年1月 第一个jdk--jdk1.0诞生
2004年9月 javase1.5发布,这是一个里程碑版本,并命名为JAVASE 5.0
2014年3月 Oracle发布了JAVASE 8
2021年9月 JAVA17发布
按领域分:
①JAVASE :标准版,主要定位在客户端,可以用于一些桌面程序的开发
②JAVAME :微型版
③JAVAEE :企业版,定位在服务端,主要用于开发大型的企业级应用系统,WEB系统,电子商务系统,分布式应用等等
3、安装jdk
(1)运行jdk可执行文件
(2)配置环境变量
①新增变量JAVA_HOME,值为jdk安装目录路径
②把JAVA_HOME\bin 放到环境变量Path中,并上移到最上面
4、Java环境的安装
查看本几有没有Java环境,是否配置好了环境变量
方法一:java -version
C:\Users\Lenovo>java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)
方法二:set Path
知识点:
Path是用来描述可执行文件可能存在的目录。在window中,我们在命令窗口里输入一个命令的时候,会按照如下顺序搜索:
① :先看看这个命令是不是内部命令,如果是就直接执行。
② :如果不是内部命令
先看看当前目录下有没有这个命令对应的文件,如果有就执行
如果当前目录下没有这个文件,就去path指定的路径中找,找到就执行
如果还找不到,就会报错
C:\Users\Lenovo>set Path
Path=E:\Oracle\dbhome\bin;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;F:\Scripts\;F:\;D:\java\jdk-8\bin;D:\java\jdk-8\jre\bin;C:\Program Files\mysql-5.6.27-winx64\mysql-5.6.27-winx64\bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;";D:\apache-tomcat-8.5.96\apache-tomcat-8.5.96\bin";E:\Git\cmd;E:\apache-maven-3.9.6-bin\apache-maven-3.9.6\bin;F:\迅雷下载\hadoop-2.10.2\hadoop-2.10.2\bin;E:\微信web开发者工具\dll;E:\sonar-scanner-cli-6.1.0.4477-windows-x64\sonar-scanner-6.1.0.4477-windows-x64\bin;C:\Users\Lenovo\AppData\Local\Google\Chrome\Application;E:\anaconda3;E:\anaconda3\Library\mingw-w64\bin;E:\anaconda3\Library\usr\bin;E:\anaconda3\Library\bin;E:\anaconda3\Scripts;C:\Users\Lenovo\AppData\Local\Microsoft\WindowsApps;F:\PyCharm Community Edition 2023.1.1\bin;;F:\IntelliJ IDEA Community Edition 2023.1.2\bin;;E:\Microsoft VS Code\bin;F:\IntelliJ IDEA 2024.1.4\bin;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
方法三:set JAVA_HOME
这里我有三个版本的jdk,当前使用的版本为1.8
C:\Users\Lenovo>set JAVA_HOME
JAVA_HOME=D:\java\jdk-8
JAVA_HOME11=D:\java-11
JAVA_HOME17=D:\java-17
JAVA_HOME8=D:\java\jdk-8
注意:当修改了环境变量相关的配置以后,一定要新开一个命令行窗口进行测试
5、Java语言跨平台原理
(1)知识点:
什么是可执行文件?
可执行文件就是可以由操作系统直接加载执行的文件,装的是一些能被操作系统直接执行的指令、机器码。Windows系统中通常为.exe、.sys、.com拓展名的文件,Mac系统中通常为.dmg、.app拓展名的文件
什么是汇编语言?
汇编语言是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。
几个概念:
JVM :java虚拟机,作用就是把字节码翻译成不同平台能执行的指令
JRE :java运行时环境 = JVM+一些系统运行时必须的核心类库,试运行java程序最少的需求
JDK :java开发工具集 = JRE+一些开发工具,比如javac(编译工具),javadoc(生成文档的工具)、jar(打jar包的工具)、jvisualvm(性能监控方面的工具)等
(2)比较:
C语言:c语言文件的拓展名一般有.c、.cpp、.h等,运行需要通过编译链接形成可执行文件,c程序编译需要经过预处理阶段、编译阶段、汇编阶段、链接阶段,最后转化为二进制执行。而直接二进制格式的程序,我们称之为本地机器码(native code)。而类似那些 add
之类的 助记符,以及汇编的编写格式或标准,我们称之为 指令集。不同公司所生产的 cpu芯片。他们所使用的指令集不同,对于同一个二进制文件不同的CPU识别起来是不同的,所以C语言不能实现跨平台运行。
Java语言:java语言的文件的拓展名为.java,只需要编译(javac 源文件名)形成.class字节码文件(byte code),然后虚拟机JVM把.class文件转化成不同系统可以识别的机器指令,从而实现跨平台。
注:现在有很多其他语言也可以生成字节码文件,只要符合字节码文件的约束都可以运行在JVM虚拟机上,因此JVM已经从跨平台虚拟机发展成跨语言虚拟机。
6、第一个入门程序
class Hello{
public static void main(String [] args){
System.out.println("Hello World,this is my first program");
}
}
使用记事本编写进行编译运行
javac Hello.java //编译
java Hello //运行
注:同一个源文件中可以声明多个类,编译后每个类都会生成一个字节码文件,每个类中都可以有main函数。但一个源文件中只能有一个用public修饰的类,并且当一个类声明为public的时候,类名和源文件名必须完全相同。但内部类例外,内部类编译后生成的字节码文件的名称是外部类名+$+内部类名.class,例如Out$Inner.class