java面试(3)数组 和 异常

本文深入探讨了Java编程中的核心概念,包括数组的初始化与访问、异常处理机制、finally语句块的行为,以及检查时异常与运行时异常的区别。通过详细解析,帮助读者理解Java中的常见陷阱和最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)数组

因为数组在定义的时候会有一个默认的初始化值,依据数组类型而定(int类型的数据初始化为0,对象类型初始化为null,。

private int a[5]; 错误的命名方式。

(2)

java语言中,数组提供了length属性来获取数组的长度。

length()方法是针对字符串而言的。

size()方法是针对泛型而言的。

(3)

try...finally结构中finally中的代码先于try中的return代码执行。当finally中也含有return的时候,那么finally中的return将覆盖try or catch 中的return. 因为return语句意味着函数(方法)的结束。

关于当try中返回变量在finally中被修改时,当此变量是基本类型时,这是改变不会影响最后的返回结果,当变量是引用类型的时候,这时候就会改变此结果。

原因:当中执行finally中的语句的时候,返回的变量值已经被存储到了栈中,此时在finally中修改后,try中return的所取得值依旧是之前存储在栈中的值,当变量类型是引用类型的时候,这时候就会改变栈中元素的值,毕竟引用变量指向了内存。

(4)在java语句中finally语句不一定一定会被执行。<1>在执行try之前出现异常,代码不在向后继续执行。<2>在执行try语句的时候强制性退出,System.exit(0);

 

(5)java语言中把异常当做一种对象来处理。并定义了一个基类 java.lang.Throwable,作为所有异常的父类。(异常分为错误和异常两大类)

(6)异常分为检查时异常和运行时异常

检查时异常时程序中最经常碰到的异常,所有继承自Exception的异常非运行时异常都是检查异常。eg:IO异常,SQL异常。这种异常发生在编译阶段

使用:异常发成并不会导致程序出错,进行处理后尅继续进行后续的操作,例如,数据库连接失败后,可以重新连接进行后续的操作。

程序依赖不可靠外部条件。例如系统IO

(7)运行时异常不同于检查时异常,编译器并没有对其进行捕获和处理。如果不对这种异常进行处理当出现这种异常的时候,JVM回来处理。常见的运行时异常有:

NullPointException(空指针),

ClassCastException(类型转换异常),

ArrayIndexOutOfBoundsException(数组越界异常)

ArrayStoreException(数组存储异常)

BufferOverflowException(缓冲区溢出异常)

ArithmeticException(算术异常0)

当系统出现运行时异常的时候,系统会把异常一直向上抛出。直到遇到处理代码为止,若没有处理块则抛到最上层。所以如果不对运行时异常进行处理的话,后果非常严重,一旦发生,要么线程终止,要么主线程终止。

(8)异常处理需要注意的问题

异常处理使用到了多肽的概念,在异常处理中如果先捕获了基类,再捕获子类,那么捕获子类的代码块中的代码将永远不会执行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值