写点什么

关于 JAVA 的常用工具类问题

  • 2024-01-08
    福建
  • 本文字数:4078 字

    阅读完需:约 13 分钟

关于JAVA的常用工具类问题

问题聚合:

1.请列举你所知道的各种异常(至少两种)?

2.常见的异常类型有哪些?

3.如何自定义异常?

4.包装类的常用方法有哪些?

5.int a=3,String b=“3”,请问 a==b 吗?

6.Java 中的异常处理关键字是什么?

7.Java 中 throw 和 throws 关键字有什么区别?

8.集合和数组的区别?

9.IO 流的分类?


1.请列举你所知道的各种异常(至少两种)?异常是指在程序运行过程中发生的意外情况,这些情况可能会阻止程序的正常执行。以下是一些常见的异常类型:

运行时异常:运行时异常通常是在程序执行期间由于程序本身的问题(例如数组越界、空指针访问等)引发的异常。这类异常一般是在代码的动态执行过程中发生的,因此也称为动态异常。编译时异常:编译时异常是指在编译阶段无法通过编译器的检查而发现的异常。这类异常通常是由于代码中的语法错误、类型不匹配等问题引起的。编译器在编译时会检查这类异常,并阻止程序通过编译。文件未找到异常:当程序尝试打开一个不存在的文件时,会引发 FileNotFoundException 异常。数据库连接异常:当程序尝试连接到数据库时,如果连接失败(例如,由于网络问题、数据库服务器不可用等),会引发 SQLException 异常。网络通信异常:在网络通信过程中,如果发生错误(例如,连接超时、数据传输中断等),会引发 IOException 异常。空指针异常:当程序中存在空指针访问时,会引发 NullPointerException 异常。类型转换异常:当程序试图将一个不兼容的数据类型转换为另一个数据类型时,会引发 ClassCastException 异常。数组越界异常:当程序中存在数组越界访问时,会引发 ArrayIndexOutOfBoundsException 异常。数字格式化异常:在将字符串转换为数字或执行其他数字格式化操作时,如果提供的字符串无法解析为有效的数字格式,会引发 NumberFormatException 异常。2.常见的异常类型有哪些?常见的异常类型主要包括运行时异常和编译时异常。

运行时异常通常是在程序执行期间由于程序本身的问题引发的,例如数组越界、空指针访问等。这类异常一般是在代码的动态执行过程中发生的,因此也称为动态异常。

编译时异常则是指在编译阶段无法通过编译器的检查而发现的异常。这类异常通常是由于代码中的语法错误、类型不匹配等问题引起的。编译器在编译时会检查这类异常,并阻止程序通过编译。

此外,常见的异常类型还包括文件未找到异常、数据库连接异常、网络通信异常、空指针异常、类型转换异常、数组越界异常、数字格式化异常等。这些异常通常在特定的编程场景中出现,例如文件操作、数据库操作、网络通信等。

对于这些异常,程序员应该进行适当的处理,例如使用 try-catch 语句块来捕获和处理异常,或者在程序中添加必要的错误检查和验证逻辑,以避免异常的发生。3.如何自定义异常?在 Java 中,自定义异常类需要继承自已有的异常类,可以是 Java 内置的异常类,也可以是用户自定义的异常类。自定义异常类需要遵循 Java 的异常处理机制,包括在方法中使用 throw 关键字抛出异常对象,在方法声明处使用 throws 关键字声明要抛出的异常类型,以及在方法调用者中使用 try-catch 语句块捕获并处理异常。

自定义异常类的创建步骤如下:

创建一个新的类,继承自已有的异常类(例如 Exception 或 RuntimeException),并实现其构造方法。在自定义异常类中添加必要的字段和方法,以便在抛出异常时提供更多的上下文信息。在需要抛出异常的方法中使用 throw 关键字抛出自定义异常类的对象。在方法声明处使用 throws 关键字声明要抛出的异常类型。在方法调用者中使用 try-catch 语句块捕获并处理自定义异常类的对象。需要注意的是,自定义异常类应该具有有意义的名称,能够准确地描述异常的情况,以便于阅读和理解代码。此外,根据需要,可以在自定义异常类中添加其他方法和字段,以便在抛出异常时提供更多的上下文信息。4.包装类的常用方法有哪些?包装类在编程中通常是指数据类型转换类,将基本数据类型转换为对象类型。以下是 Java 语言中包装类的常用方法:

自动装箱和拆箱:Java 会自动完成基本类型到包装类的转换(自动装箱)和包装类到基本类型的转换(自动拆箱)。构造函数:每个包装类都有多个构造函数,可以根据需要选择使用。例如,Integer 类的构造函数可以接受一个整数参数、一个字符串参数(表示一个整数)或者一个字节参数(表示一个整数)。getXXX()方法:用于获取包装类中存储的值。例如,Integer 类的 getInteger()方法可以获取整数值。setXXX()方法:用于设置包装类中存储的值。例如,Integer 类的 setInteger()方法可以设置整数值。equals()方法:用于比较两个包装类对象是否相等。例如,Integer 类的 equals()方法可以比较两个 Integer 对象是否相等。toString()方法:用于将包装类对象转换为字符串。例如,Integer 类的 toString()方法可以将 Integer 对象转换为字符串表示形式。需要注意的是,Java 中还有一些其他的包装类方法,具体取决于特定的包装类类型。另外,以上是 Java 中常用的包装类方法,不同的编程语言中可能会存在差异。5.int a=3,String b=“3”,请问 a==b 吗?在 Java 中,int a = 3; 创建一个整数变量并赋值为 3。而 String b = "3"; 创建一个字符串变量并赋值为"3"。

当我们使用 == 操作符来比较这两个变量时,实际上是比较它们的引用地址,而不是它们的内容。

对于整数,a == b 将会返回 false,因为它们指向两个不同的内存地址。

对于字符串,因为 Java 的字符串是不可变的,每个字符串对象都是新的对象。所以 "3" 和 "3" 实际上是两个不同的字符串对象,即使它们的值相同。因此,b == b 也会返回 false。

总结:在 Java 中,a == b 会返回 false。6.Java 中的异常处理关键字是什么?在 Java 中,异常处理的关键字有以下几个:

try:用于捕获可能抛出异常的代码块。catch:用于捕获并处理特定类型的异常。finally:无论是否发生异常,finally 块中的代码都会被执行。throw:用于手动抛出一个异常。throws:用于声明方法可能抛出的异常类型。try-with-resources:用于自动关闭实现了 AutoCloseable 接口的资源。这些关键字一起使用,可以帮助你更好地管理和处理程序中的异常情况。7.Java 中 throw 和 throws 关键字有什么区别?

在 Java 中,throw 和 throws 都是异常处理的关键字,但它们的使用场景和功能是不同的。

throw 关键字用于在代码中主动抛出一个异常。当程序中遇到一个错误条件,或者当某个操作不能正常完成时,可以使用 throw 关键字抛出一个异常对象。这个异常对象可以是一个内置的异常类,也可以是一个用户自定义的异常类。例如:

javaif (someErrorCondition) {      throw new Exception("An error occurred.");  }
复制代码

在这个例子中,当满足某个错误条件时,程序会抛出一个新的 Exception 对象。

throws 关键字用于声明方法可能抛出的异常类型。当一个方法可能会抛出异常时,需要在该方法的声明中使用 throws 关键字来声明这个异常类型。这样做的目的是告诉调用者这个方法可能会抛出异常,调用者可以根据情况来处理这个异常。例如:

javapublic void someMethod() throws IOException {      // Code that might throw an IOException.  }
复制代码

在这个例子中,someMethod()方法声明了可能会抛出 IOException 类型的异常。如果在实际代码中确实抛出了这个类型的异常,那么需要在方法体中使用 throw 关键字来抛出这个异常。

总结起来,throw 和 throws 都是 Java 中处理异常的关键字,但它们的用途不同。throw 用于主动抛出异常,而 throws 用于声明方法可能抛出的异常类型。8.集合和数组的区别?集合和数组是两种不同类型的数据结构,它们的主要区别如下:

存储数据的差异:数组既可以存储基本数据类型,又可以存储引用数据类型。基本数据类型存储的是值,引用数据类型存储的是地址值。而集合只能存储引用数据类型(对象)。结构差异:数组的长度是固定的,一旦初始化,长度不能自动增长。相反,集合的长度是可变的,可以根据元素的增加而增加,减少而减少。使用场景的差异:数组多用于元素个数是固定的场景,而集合多用于元素个数是不固定的场景。因为部分集合底层是数组实现的,首先会创建一个默认大小的数组,如果不够存储就会重新创建一个默认长度自增倍数的数组来存储,原数组就会变成垃圾,随着元素个数的增加,产生的数组垃圾就越多,浪费了内存。而数组只创建一个数组。所以如果元素个数固定,建议使用数组,元素个数不固定使用集合。元素的存储方式:集合框架包含三块内容:对外的接口、接口的实现和对集合运算的算法。而数组无论是效率还是检查类型都是最好的。综上所述,集合和数组的区别主要表现在数据的存储方式、结构、使用场景和元素的存储方式等方面。它们各自有其适用的场景,根据实际需求选择合适的数据结构可以提高程序的效率和性能。9.IO 流的分类?IO 流可以分为不同的类型,具体分类如下:

按流的方向分:输入流和输出流。输入流用于从数据源读取数据,而输出流则用于将数据写入到目标位置。按处理数据单位不同分:字节流和字符流。字节流是按字节进行处理的流,而字符流则按字符进行处理。按对手数据的处理方式分:节点流和处理流。节点流直接与程序连接,处理流则基于已存在的流(字节流或处理流)进行处理,提供更为强大的读写功能。按数据传输方式分:缓冲流、转换流和对象流等。以上是 IO 流的分类方式,实际使用时,应根据数据的类型和处理的逻辑选择合适的 IO 流类型。

技术前沿拓展

前端开发,你的认知不能仅局限于技术内,需要发散思维了解技术圈的前沿知识。细心的人会发现,开发内部工具的过程中,大量的页面、场景、组件等在不断重复,这种重复造轮子的工作,浪费工程师的大量时间。

介绍一款程序员都应该知道的软件https://www.jnpfsoft.com/?infoqxl,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,实现快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3。如果你有闲暇时间,可以做个知识拓展。

看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~


用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
关于JAVA的常用工具类问题_伤感汤姆布利柏_InfoQ写作社区