Java知识点学习(第7天)

这篇具有很好参考价值的文章主要介绍了Java知识点学习(第7天)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是字节码?采用字节码的好处是什么?

编译器将Java源文件(.java)文件编译成字节码文件(.class),可以做到一次编译到处运行,windows上编译好的class文件,可以直接在linux运行,这种方式也就是我们所说的跨平台,但是Java的跨平台是有前提条件的,因为不同的操作系统上安装的JDK或JRE是不一样的,虽然字节码通用,但是需要把字节码解释成各个操作系统的机器码是需要不同的解释器的,所以针对各个操作系统需要有各自的JDK或JRE。

采用字节码的好处,一方面实现了跨平台,另一方面也提高了代码执行的性能,编译器在编译源代码时可以做一些编译期的优化,比如锁消除、标量替换、方法内联等。

Java的异常体系是怎样的?

  • Java中的所有异常都来自于顶级父类Throwable。

  • Throwable下有两个类Exception和Error。

  • Error表示严重的错误,比如java.lang.StackOverFlowError和java.lang.OutOfMemoryError,这种错误出现时,仅仅靠程序员是解决不了的,可能是虚拟机、磁盘、操作系统等层面出现了问题,这种Error错误不建议去进行捕获,因为捕获的意义不大,因为程序之外的外部原因可能导致程序根本运行不了。

  • Exception表示异常,出现异常时可以靠自己的程序进行解决的,比如NullPointerException、IllegalAccessException等,我们可以捕获这些异常来做特殊处理。

  • Exception的子类通常分为RuntimeException和非RuntimeException两类,RuntimeException表示这个异常在代码运行过程中抛出的,这个异常是非检查异常,程序中可以选择捕获异常,也可以不处理。这些异常一般由程序逻辑错误引起,程序应该从逻辑角度尽可能的避免这类异常的发生,比如NullPointerException、IndexOutOfBoundsException等。非RuntimeException表示非运行期异常,也就是我们常说的检查异常,是必须进行处理的异常,如果不处理,程序就不能检查异常通过。如IOException、SQLException等以及用户自定义的Exception异常。

在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常?

异常相当于一种提示,如果我们抛出异常,就相当于告诉上层,我抛了一个处理不了的异常,交给你来处理,而对于上层来说,它也要决定自己能不能处理这个异常,是否也需要交给它的上层。

所以我们在写一个方法时,需要考虑本方法是否能合理的处理该异常,如果处理不了就继续往上抛出异常,包括本方法中调用另一个异常,如果这个异常应该由自己处理,那就捕获异常并进行处理。

Java中有哪些类加载器?说说类加载器的双亲委派机制

JDK自带了三个类加载器:bootstrapClassLoader、ExtClassLoader、AppClassLoader。

  • bootstrap ClassLoader是ExtClassLoader的父类加载器,默认负责加载%Java_Home%lib下的jar包和class文件。
  • ExtClassLoader是AppClassLoader的父加载器,负责加载%Java_Home%lib/ext文件下的jar包和class类。
  • AppClassLoader是自定义类加载器的父类,负责加载classpath下的类文件。
    双亲委派机制是指,JVM加载一个类时,会调用AppClassLoader的loadClass方法来加载这个类,不过在这个方法中,会先使用ExtClassLoader的loadClass方法来加载类,通用ExtClassLoader的loadClass方法中会使用bootstrapClassLoader来加载类,如果bootstrapClassLoader加载到就直接成功,如果bootstrapClassLoader没有加载到,那么ExtClassLoader就会尝试加载该类,如果没有加载到,那么就会由AppClassLoader来加载这个类。

所以双亲委派机制是指,JVM在加载类时,会委派给Ext和Bootstrap进行加载,如果没有加载到才由自己进行加载。文章来源地址https://www.toymoban.com/news/detail-409893.html

到了这里,关于Java知识点学习(第7天)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【知识点扫盲】什么是域名以及域名解析

    网域名称(英语:Domain Name,简称:Domain),简称域名、网域,是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。 顶级域名分为三类:一、国家和地区顶级域名,二、是通用顶级域名,三、新顶级域名。 一个域

    2024年02月07日
    浏览(39)
  • 脚踏Java知识点

    三元运算符和if语句格式的区别 语法格式: 表达式执行: 返回值: 使用场景: switch语句 switch语句的基本语法如下: switch语句的执行流程如下: 需要注意的是: 下面是一个示例,演示了如何使用 switch 语句判断星期几: 循环结构 for循环: 具体执行过程为 while循环: 具体

    2024年02月13日
    浏览(34)
  • Java 基础知识点

    Object 类相关方法   getClass 获取当前运行时对象的 Class 对象。 hashCode 返回对象的 hash 码。 clone 拷贝当前对象, 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝,对引用类型拷贝引用;深拷贝对基本类型进行值拷贝,对引用类型对象不但拷贝对象的引用还拷贝对象的相

    2024年02月13日
    浏览(47)
  • JAVA知识点梳理

    boo=false; //每一轮排序都会将最大的一个排到最后 所以-i 2.第一次不同如果是数值,返回长度差 第一次不同如果是字符,返回两个字符的Ascrll码的差值

    2024年02月12日
    浏览(35)
  • java相关知识点

    1.String和StringBuffer如何互相转化 StringBuffer buffer = new StringBuffer(string); String string = buffer.toString();  2.如何实现两个数组内容的拷贝  3.如何去除字符串首尾空格 str.trim()  4.字符串和字符数组如何相互转换 字符串转字符数组:str.toCharArray(); 字符数组转字符串:strs.valueOf(char[] ch)  

    2023年04月23日
    浏览(35)
  • Java知识点:

    1、Java中的(8个)基本数据类型及其包装类:         byte(字节)                  8          -128 - 127                                                                     0         short(短整型)             16         -32768 - 32768               

    2024年02月13日
    浏览(31)
  • Java 面试知识点

    基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的 语法,集合的语法,io 的语法,虚拟机方面的语法。 和都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否

    2024年02月16日
    浏览(33)
  • 常见java知识点1

    目录 1    什么是Spring框架?Spring框架有哪些主要模块? 2    使用Spring框架有什么好处? 3    Java常用的包(列举六个) 4    Arraylist 和 Linkedlist 的区别 5    HashMap和Hashtable的区别 6    Java中常见的 io 流? 7    说一下常见的几个线程池?(Java里面有4个线程池) 8  

    2024年02月16日
    浏览(29)
  • java面试常见知识点

    JDK(Java Development Kit)是Java开发工具包,是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。 JRE是运行基于Java语言编写的程序所不可缺少的运行环境。JRE中包含了JVM,runtime class libraries和Jav

    2024年02月11日
    浏览(39)
  • [深度学习]1. 深度学习知识点汇总

    本文记录了我在学习深度学习的过程中遇到过的不懂的知识点,为了方便翻阅,故将其发表于此,随时更新,供大家参考。 在深度学习中, 测试精度 和 训练精度 是两个重要的指标,它们分别代表了模型在 测试集上的分类正确率 和 训练集上的分类正确率 。测试集是用来评

    2024年02月10日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包