java每日一练(19_03_09)

每日一句

昨日翻译

Quality matters more than quantity.

质量比数量重要

今日名言

Suffering is the most powerful teacher of life

2019.03.08问题及解析

public class ExceptionTest {
    public static void main(String[] args) {
        try{
            int i = 100/0;
            System.out.print(i);
        }catch (Exception e){
            System.out.print(1);
            throw new RuntimeException();
        }finally {
            System.out.print(2);
        }
        System.out.print(3);
    }
}
(左右滑动查看完整代码)请问上述程序除了异常外,会输出什么?为什么?

答案

还会输出12,为什么呢?

首先可以看到,我们进入程序后首先计算100/0之后赋值给i

jdk的官话

我们小学就学过除数是不可以为0,那么这个是属于不满足我们的算术条件了,虽然它能够通过编译,但是它在运行时,会抛出ArithmeticException异常,我们查询API可以看到这个异常的描述:

Thrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class.

当发生一个算术条件异常时会抛出这个异常。比如,一个整数除以0,就会抛出这个异常类的一个实例。

出错啦

那么我们这里也就很明显会抛出这个异常了。

抛出异常之后呢,我们对它进行了try...catch捕获,因此并不会执行接下来的输出语句,而是执行我们catch包裹的语句,进来之后自然而然输出了1,之后虽然我们跑出了ArithmeticException异常但是它被捕获了之后就不会再抛出了,因此就没有它的相关信息,它的相关信息存放在了e变量里, 我们也可以自己把它输出来看看是不是。

那么我们程序员手工的抛出了一个异常RuntimeException(),异常被抛出之后如果我们不进行catch会继续往外抛,并输出错误异常信息,同时我们在finally终输出了2,finally语句是否抛出异常都会执行,因此会打印出2,因为程序抛出了异常所以不会再执行接下来的语句,因此3并没有输出出来。

这里面也有多线程?

因此我们会输出12和异常信息,但是执行多次后我发现并不是每次12都在异常前面有时2会在异常语句打印过程中输出,因此我怀疑finally的执行有种多线程打架的味道,抛出异常后继续执行finally,有时候finally执行的慢了点就会打印出一部分异常,这个时候开始打印finally的语句,所以2就混进了异常信息中,不知道评论区有没有大神来解释解释,哈哈,我实在是没查得出来原因。

因此除了异常外还会输出12,理由如上,注意这里用的pirnt打印而不是平常的println哦!

实名表扬Carlos

就在昨天我们才为小伙伴lmbby献上膝盖后,今天又不得不再次低下骄傲的头颅,Carlos????同学的答案详细且有扩展,希望大家多多向他们学习,那么在这里附上链接的地址(java每日一练(19_03_08))希望没看过的小伙伴们仔细去看评论,不当要看答案解析,扩展内容也很精彩哦!

每一个留言的小伙伴也很棒,希望你们继续加油!

2019.03.09问题

今天来到神奇题~

public class IntegerTest {
    public static void main(String[] args) {
        Integer num1 = 1;
        Integer num2 = 1;
        Integer num3 = 222;
        Integer num4 = 222;
        System.out.println(num1==num2);
        System.out.println(num3==num4);
    }
}

(左右滑动查看完整代码)

请问上述程序的输出结果是什么?

二手书重用计划

   大家在学习和生活过程中应该会用到纸质书吧~用完放着占地方,扔掉又好可惜,不如借这个平台卖掉吧,有旧书想出掉的可以拍照发给刀妹哦(刀妹微信: best396975802),刀妹会用微信公众号帮大家宣传!!给大家带来更好的福利,嘻嘻~书籍种类不限。

    眼过千遍,不如手过一遍,一定一定要把自己的想法写出来(想法不论对错,写你所想就是进步),这样才会有所收获,你的每一个留言和分享小刀都会认真回复,彼此学习共同进步~

  小刀和小伙伴在学习群里等你来一起监督学习哦,坚持!加油!进群请加小刀微信: best396975802

感谢所有在后台留言的小伙伴们,每一分的付出都会收到回报,你们都是最棒的!

PS:刀妹最近

END

微信群请点击公众号菜单进微信群

文字|天堂

排版|花音

点个好看再走吧~(づ ̄3 ̄)づ╭❤~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值