关于边界检查

本文探讨了Java中边界检查的重要性,通过分析List的空指针异常问题和substring方法可能导致的索引越界异常,强调了在进行边界判断时,应确保条件为null和isEmpty的同时满足,以及在使用substring时要注意字符串长度和索引的关系,以防止异常的发生。

关于StringIndexOutOfBoundsException&边界性判断

一、List的一个空指针问题

有很多小伙伴在开发时会犯的一个小问题,对list的边界性判断只进行了isEmpty或!=null其中一个判断

public class ListTest {
    public static void main(String[] args) {
        List list1 = null;
        List list2 = new ArrayList();
        System.out.println(list1.isEmpty());
        System.out.println(list2.isEmpty());
    }
}

以上代码这里会抛出空指针异常

public class ListTest {
    public static void main(String[] args) {
        List list1 = null;
        List list2 = new ArrayList();
        System.out.println(list1 == null);
        System.out.println(list2.isEmpty());
    }
}

以上代码这里会打印true,true。

再看一下源码:isEmpty()方法只是返回了List的size,当为空时将会空指针异常

在这里插入图片描述

总结得知在进行对list的边界性判断时,条件 != null要结合&& !isEmpty使用
二、substring索引越界问题

在这里插入图片描述

这里有个substring方法很常见的小问题,例如substring中的索引值为3时,当长度返回大于或等于3时,正常会输出截取后的值;

但是,例:当在索引为3的场景下,返回的字符串值小于3时,将会报出StringIndexOutOfBoundsException,索引越界了。

总结得知:在使用substring截取字符串方法时,要注意加判断条件大于等于截取长度时,才进行操作,否则进行其它操作…

substring()方法还有一点需要注意,看下substring()源码,在输入两个参数时,结束索引(endIndex)是不包括该数字长度的,例如:substring(0, 100); 最后截取的长度是100个size,注意是从0索引开始算,到99索引结束。

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值