A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈国柱 中级黑马   /  2013-9-25 00:28  /  1204 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//运行代码几次后发现,控制台有些时候会先打印4和8,然后弹出空指针异常(NullPointerException)提示
//有些时候控制台会先弹出空指针异常提示,然后再打印出4和8
//为什么会这样的呢?空指针异常的提示是不是会新建一条线程,所以才会导致顺序的改变?
  1. package Testing;
  2. public class Testing{
  3.         public static void main(String[] args){
  4.                 int[] ints = {1,2,3,4,5,6,7,8,9};
  5.                 System.out.println(getKey(ints,5));
  6.                 System.out.println(getKey(ints,9));
  7.                 System.out.println(getKey(null,8));
  8.                 //运行代码几次后发现,控制台有些时候会先打印4和8,然后弹出空指针异常(NullPointerException)提示
  9.                 //有些时候控制台会先弹出空指针异常提示,然后再打印出4和8
  10.                 //为什么会这样的呢?空指针异常的提示是不是会新建一条线程,所以才会导致顺序的改变?
  11.         }

  12.         private static int getKey(int[] ints, int i) {
  13.                 for(int x = 0;x<ints.length;x++){
  14.                         if(i==ints[x])
  15.                                 return x;
  16.                 }
  17.                 return -1;
  18.                
  19.         }
  20. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

3 个回复

倒序浏览

我运行的时候都是一种情况,这个是单线程,是按执行顺序走的。

4
8
Exception in thread "main" java.lang.NullPointerException
        at cn.itcast.day1.Testing.getKey(Testing.java:15)
        at cn.itcast.day1.Testing.main(Testing.java:8)

都是先打印出4和8
然后在报空指向异常,因为它是单线程啊。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
4
8
Exception in thread "main" java.lang.NullPointerException
        at Testing.getKey(Testing.java:26)
        at Testing.main(Testing.java:13)

同样的结果,这只有主函数这一个线程,单线程的操作,不会出现其他的结果。先打印4,8,再报异常,从上往下执行代码。~

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
我在MyEclipse 10.7.1上面运行时,确实出现了不同的打印顺序

1st.jpg (24.85 KB, 下载次数: 4)

1st

1st

2nd.jpg (27.03 KB, 下载次数: 11)

2nd

2nd
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马