Java之所以可以实现“一次编译,到处运行”是因为JVM的存在,JVM是java虚拟机 包含了客户机和主机 ,程序员编写的java程序运行在JVM中 Java语言的编译过程
程序员编写java源程序(.java文件)java编译程序编译为Java字节码文件(.class文件)执行 在JVM虚拟机里存在着不同系统的Java字节码程序,以及能够直接解释Java字节码的CPU)最后在操作系统上进行执行 JVM的三大任务加载代码 ClassLoader(类加载器)从本地存储加载字节码文件校验代码 检查代码的可执行性执行代码 JVM申请的存储空间 java程序的执行会将内存划分为栈空间和堆空间栈空间 先进后出 自动分配 不需要程序员申请 存取数据的效率高 存储空间较小 不能存放大量数据 存储基本类型数据堆空间 存放位置随机 程序员手动去申请 存取数据的效率最低 存储空间大 可以存放大容量数据jdk java Development ToolKit(Java开发工具包)整个Java的核心,包括JRE(Java运行环境)和Java的基础类库 三者的包含关系 JDK->JRE->JVM->客户机和主机 以jdk1.8.0_241的文件目录看下jdk所包含的内容
bin 二进制可执行文件 主要包含了编译器(javac.exe)include java和JVM交互用的头文件lib 类库jre java运行环境src 源码压缩包其余是一些描述文件配置环境变量是为了在我们需要编译java环境时,操作系统知道去哪里找对应的程序启动 临时环境变量 Win+R cmd打开命令行
set 显示所有环境变量
set path 显示当前path的值
set test=abc 新增环境变量test 值为abc
set test= 删除环境变量
set path=%path%;D:\Program Files\jdk1.7.0_17\bin 在path当前值的后面追加D:\Program Files\jdk1.7.0_17\bin
当有多个值时使用分号隔开 set path=java1.8/bin;java10/bin
引用变量 set JAVA_HOME=D:\Program Files\jdk1.7.0_17 set path=%JAVA_HOME%\bin 临时变量只对当前窗口有效
设置为永久变量 Win+E ->此电脑->右键属性->高级系统设置->环境变量->系统变量->新建JAVA_HOME->path添加%JAVA_HOEM%\bin
代码解释
public 修饰符 指定当前文件中类名和文件名必须相同 一个源文件只能有一个public类class 声明类名称main 主方法 程序的入口和出口 一个源文件只能有一个main方法public static void main main的模板语法String[] args main形参 [] 集合 可接受0或多个参数args 参数索引 获取指定位置的参数 eg.当在运行程序时传入参数,并写代码输出在控制台时 而当传参为java HelloWorld "1 2 3"时 “1 2 3”被当作一个参数在windows命令行运行 命令行当前所在路径为编写的java源程序的路径
#编译 #此条命令执行完成后 路径下会出现HelloWorld.class字节码文件 javac -encoding utf-8 HelloWorld.java #运行 java HelloWorld主要分为三类
编译期错误 代码语法错误 通过使用IDE对标红的代码进行立即改正运行期错误 系统给出错误信息 通过调试解决逻辑错误 程序内部逻辑错误 能够正常运行,但输出结果与预期有误数据的类型决定了变量的存储空间 java的变量一定要进行初始化 变量类型分为内置基本数据类型和引用类型
基本规则
小转大 自动转换大转小 强制转换浮点数在java里默认是double类型的整数在java里默认是int类型的 ps:这里的大小指的是变量类型所占的空间大小 大转小 小转大高级语言中使用变量来管理内存的数据
#定义格式 数据类型 变量名= 初始值; eg int i=1; # i 可变的量 # 1 字面量 变量中存放的具体数据加、减、乘、除、取余、自增、自减与数学中的相同 eg.
大于
< 小于= 大于等于
<= 小于等于&&和 &都表示与关系 || 和 | 都表示或关系 二者的区别在于&&和 || 使用短路运算方式 eg.
右移 相当于除二运算 eg.