昨日翻译

It's the easiest thing in the world for a man to deceive himself.

世界上最简单的事情就是欺骗自己。

今日名言

The sting of a reproach,is the truth of it.


2019.03.26问题及解析

public class ExceptionTest {    public static void main(String[] args) {        try {            mod(new int[] {0,1,2,3,4,5});        }catch (Exception e) {            System.out.print("N");        }    }    private static void mod(int[] arr){        for(int i = 0; i < arr.length; i++){            try{                if(arr[i] % 2 == 0){                    throw new NullPointerException();                }else {                    System.out.print(i);                }            }finally {                System.out.print("n");            }        }    }}

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

答案与解析

代码流程

首先看到我们的main函数,调用了mod方法,并且给它传递了一个新定义的数组参数,数组的内容为0~5的数字。捕获它可能发生的异常,并且打印“N”

在看mod方法的定义,它是一个没有返回值的方法,并且需要传递一个数组作为参数,因此我们这里对于方法的使用没有出现问题。

下面来看它具体做了什么,首先通过for循环遍历传递进来的数组参数,对每一个数组中的元素对2取余数,将得到的结果与0比较是否相等,如果为真,则抛出一个空指针异常,如果为假则打印出这个数组的索引值。最后输出“n”。

问题关键

首先是取余数与0判断的问题,其实就是判断这个数是否是2的倍数,0的余数还是0,那么就是说如果语句正常执行,这里for循环所起到的作用是将所有不是2的倍数的数的索引都输出出来。

那么应该会输出一个135,但是第一个判断之后发现0的余数为0直接抛出了一个空指针异常,那么我们的for循环也不会再继续执行下去了。

转而执行finally语句块,打印出“n”,异常抛出到外面之后,我们的main函数中对它进行了try catch捕获,捕获之后输出了“N”,程序结束。

因此程序最终的输出结果为:”nN“


2019.03.26问题前几天我们完成了我们java对于数据库的一些基本操作,有的没学过得小伙伴就要问了,说是说javaweb,怎么我们搞来搞去还是在用控制台输出啊,啥时候我们才能看到网页的展现呀。大家也许能猜到今天的问题了,我们就随着问题一点一点的来实现javaweb中页面的展现,今天的问题和我们的web息息相关:1.任何的web应用的开发都离不开web服务器,我们想要进行javaweb的开发同样需要安装web服务器,请问目前java使用最广泛的web服务器是什么?我们之前就多次听说的spring-boot有使用web服务器吗?如果有,它用的是什么?2.请安装java使用最广泛的web服务器,并且进入到它的相应的管理界面,显示出:

If you're seeing this, you've successfully installed xxx. Congratulations!

在留言中分享你安装过程中的经验与学习到的知识哦。