java 面试准备(基础)

谈谈对java平台的理解?java是解释执行的,这句话正确吗?

java 本身是一种面向对象的语言,主要有两个显著特点,第一就是所谓的write once,run anywhere。基于这个特点java就能够获得很好的跨平台能力。第二就是垃圾收集的机制。java通过垃圾收集器回收所分配的内存,大部分情况下,程序员是不需要自己操心内存的分配和回收的。Java平台主要包括JRE和JDK两个组件。这两个组件主要的区别就是在于,JRE,也就是java运行环境,包括了JVM和JAVA类库,以及一些模块等。而JDK可以看做是JRE的一个超集,提供了更多的工具,比如编译器,各种诊断工具等。
关于java是解释执行的这句话,这个说法不太准确。我所写的源代码首先通过javac编译成字节码,然后在运行时,通过java虚拟机内的解释器将字节码转换为最终的机器码。但是比如Oracle JDK提供的Hotspot JvM ,都提供了JIT(Just-In-time)编译器,也就是通常所说的动态编译器,JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行。而不是解释执行了

请对比Exception和error,另外,运行时异常与一般异常有什么区别?

Exception和error 都是继承了throwable类,在java中只有throwable类型的实例才可以被抛出(thow)或者捕获(catch),它是异常处理机制的基本组成类型。Exception和Error体现了Java平台设计者对不同异常情况的分类。exception是程序正常运行中可以预料的意外情况,可能并且应该被捕获并进行相应的处理。Error是指正常情况下不大可能出现的情况,绝大部分的erro都会导致程序处于非正常、不可恢复的状态。既然是非正常状态所以不便于也不需要捕获,比如常见的outofMemmoryError之类的error。Exception 又分为可检查异常和不检查异常。可检查异常在源代码里面必须显示的进行捕获处理,这是编译器检查的一部分,前面介绍的不可查的error,是throwable 不是exception。
尽量不要捕获,类似exception这样的通用异常,而是应该捕获特定的异常。然后就是不要生吞异常。生吞异常是指假设这种异常情况不会发生或者感觉忽略异常是无所谓的
try-catch代码段会产生额外的性能开销,或者是说它往往会影响JVM对代码进行优化,所以建议仅仅捕获有必要的代码段,尽量不要一个大的try包住一整段的代码,尽量不要使用使用异常控制代码的流程。

ClassNotFoundException和NoClassDefFoundError的区别

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值