要区分编译时错误和运行时错误,得先理解什么是编译什么是运行
看下图:
编译期就是将我们写的java源代码交给编译器执行的过程, 起翻译的作用. 主要是对java源代码的语法进行检查, 如果没有语法错误, 就将源代码编译成字节码文件(.class文件)
运行期则是将字节码文件(.class)加载到内存中交给java虚拟机执行, 直到程序执行结束的过程, 该过程主要是对程序的逻辑错误进行检查, 如果没有逻辑错误, 程序的功能就可以实现, 输出结果
编译期和运行期 的内存分配区别
- 编译期只是在程序的字节码文件中产生一些控制程序运行时分配内存的指令, 仅仅是知道内存分配的大小以及存放的位置, 不做具体的分配操作
- 运行期是对内存的真正的分配, 确定程序分配内存的大小, 以及这些变量该存放内存的位置
常见的错误
编译错误一般指语法错误或者很明显的逻辑错误, 如 : 缺少分号, 少写括号, 关键字书写错误等...
运行错误是在没有编译错误的基础上运行后产生的逻辑错误, 如 : 空指针异常, 除数为0 , 越界访问等...