JAVA的编译时错误和运行时错误

article/2025/11/5 17:19:40

1. 要区分编译时错误和运行时错误,就应该先明白什么是编译?什么是运行?
首先,先看一下这张图:
这里写图片描述

编译期就是将我们写的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");}}

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


http://chatgpt.dhexx.cn/article/UPC5URMg.shtml

相关文章

【Word】MathType 运行时错误‘53’:文件未找到:MathPage.WLL

问题描述 1. 环境: MathType7.4Microsoft Office 365Windows 11 2. 问题 情景1. Microsoft Word 启动时显示 Please reload Word to load MathType addin properly 情景2. 安装MathType后在 Microsoft Word 中使用复制粘贴时报错 运行时错误‘53’ 情景3. 在 M…

运行程序报错怎么办?

Dev c中常见的报错有几种 一. ld return 1 exit status 这种报错是最常见的,下面是可能的原因 1.库函数拼写错误。如:printf,scanf,等 2.定义的函数名在调用时,函数名拼写错误(这个主要自定义函数啊啥的可能比较多…

java clh队列_J.U.C|同步队列(CLH)

一、写在前面 在上篇我们聊到AQS的原理,具体参见《J.U.C|AQS原理》。 这篇我们来给大家聊聊AQS中核心同步队列(CLH)。 二、什么是同步队列(CLH) 同步队列 一个FIFO双向队列,队列中每个节点等待前驱节点释放共享状态(锁)被唤醒就可以了。 AQS如何使用它&a…

Java CLH队列

一、SMP和NUMA简要介绍 1.1 SMP SMP(Symmetric MultiProcessing)对称多处理是一种包括软硬件的多核计算机架构,会有两个或以上的相同的核心共享一块主存,这些核心在操作系统中地位相同,可以访问所有I/O设备。它的优点…

AQS-CLH同步队列

1:什么是同步队列(CLH) 同步队列 一个FIFO双向队列,队列中每个节点等待前驱节点释放共享状态(锁)被唤醒就可以了。 AQS如何使用它? AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态…

java clh_【死磕Java并发】-J.U.C之AQS:CLH同步队列 - Java 技术驿站-Java 技术驿站

在上篇博客【死磕Java并发】-----J.U.C之AQS:AQS简介中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。 CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS…

J.U.C之AQS:CLH同步队列

此篇博客所有源码均来自JDK 1.8 在上篇博客中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。 CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等…

CLH Lock 原理

背景 SMP(Symmetric Multi-Processor) 对称多处理器结构,它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,一台计算机由多个CPU组成,并共享内存和其他资源,所有的CPU都可以平等地访问内存、I/O和外部中断…

AQS: CLH 介绍

AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。 CLH同步队列是一个FIFO双向队列,AQS依赖它来完成同步状态的管理,当前线程如果获取同步状态失败时,AQS则会将当前线程已经等待状态等信息构造成一个节点(Node&…

【算法数据结构专题】「线程锁算法专项」初探CLH队列锁机制原理分析

技术扩展 SMP(对称多处理器架构) SMP(Symmetric Multi-Processor),即对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同。其主要特征是共享,包含对CPU,内存&#…

java clh_【Java并发编程实战】—– AQS(四):CLH同步队列

在【Java并发编程实战】—–“J.U.C”:CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形。 其主要从双方面进行了改造:节点的结构与节点等待机制。在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获…

JDK内置并发框架AQS对CLH锁的优化

自旋锁的不足 自旋锁适用于锁占用时间短,即锁保护临界区很小的情景。它需要保证各缓存数据的一致性,这可能会导致性能问题。因为在多处理器机器上每个线程对应的处理器都对同一个变量进行读写,而每次读写都要同步每个处理器的缓存。此外,自旋锁无法保证公平性,即不保证先…

面试经典必问:ReentrantLock 中CLH队列

ReentrantLock 中的加锁操作都是通过Syn这个抽象类来完成,具体解析在之前得博客已经分析过了,请参考:ReentrantLock AQS操作解析 得不到锁的线程,如何排队? JUC中锁的排队策略,是基于CLH队列的变种实现的…

java clh_【Java并发编程实战】----- AQS(四):CLH同步队列

在【Java并发编程实战】—–“J.U.C”:CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形。其主要从两方面进行了改造:节点的结构与节点等待机制。在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取…

CLH锁 、MCS锁

一.引文 1.1 SMP(Symmetric Multi-Processor): 对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同。其主要特征是共享,包含对CPU,内存,I/O等进行共享。SMP能够保证内存一致性…

CLH锁

1.1 SMP(Symmetric Multi-Processor) 对称多处理器结构,它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,一台计算机由多个CPU组成,并共享内存和其他资源,所有的CPU都可以平等地访问内存、I/O和外部中断。…

java clh_CLH锁学习

CLH锁即Craig, Landin, and Hagersten (CLH) locks,CLH锁是一个自旋锁,能确保无饥饿性,提供先来先服务的公平性。 何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都…

aqs clh java_并发编程——详解 AQS CLH 锁

从 acquire 方法开始 —— 获取 为什么 AQS 需要一个虚拟 head 节点 reelase 方法如何释放锁 总结 前言 AQS 是 JUC 中的核心,其中封装了资源的获取和释放,在我们之前的 并发编程之 AQS 源码剖析 文章中,我们已经从 ReentranLock 那里分析了锁…

java clh_CLH lock 原理及JAVA实现

CLH 锁的名字也与他们的发明人的名字相关:Craig,Landin and Hagersten。 CLH Lock摘要 CLH lock is Craig, Landin, and Hagersten (CLH) locks, CLH lock is a spin lock, can ensure no hunger, provide fairness first come first service. The CLH l…

CLH队列

NUMA与SMP SMP(Symmetric Multi-Processor),即对称多处理器结构,指服务器中多个CPU对称工作,每个CPU访问内存地址所需时间相同。其主要特征是共享,包含对CPU,内存,I/O等进行共享。SMP的优点是能够保证内存一…