1. 要区分编译时错误和运行时错误,就应该先明白什么是编译?什么是运行?

首先,先看一下这张图:

image.png

编译期就是将我们写的java源代码交给编译器执行的过程,起翻译的作用,该过程主要对java源代码的语法进行检查,如果没有语法错误,就将源代码编译成字节码文件(即.class文件);

运行期则是将字节码文件(.class文件)加载到内存中交给java虚拟机执行,直到程序执行结束的过程,该过程主要对程序的逻辑错误进行检查,如果没有逻辑错误,程序的功能得到实现,输出结果。

2. 编译期和运行期的内存分配区别

①编译期只是在程序的字节码文件中产生一些控制程序运行时分配内存的指令,仅仅是知道内存分配的大小以及存放的位置,不做具体的分配操作

②运行期才是对内存真正的分配,确定程序分配内存的大小,以及这些变量该存放内存的位置

3. 在eclipse开发java项目时,怎么区分编译错误和运行错误?

①编译错误一般指语法错误或者很明显的逻辑错误。

如:缺少分号,少写括号,关键字书写错误等, 在eclipse往往会画红线。

②运行错误是在没有编译错误的基础上运行后产生的逻辑错误。

如:空指针异常,除数为0,越界访问等,一般会抛出异常。

4.例子

下面程序,编辑运行,结果为()

public class Test{
   public void main(String[] args){
      System.out.println("Hello world");
   }
}

结果:编译无错误,但运行时产生异常。