为什么要把比较的字符放在前面(java2)

答:为了减少空指针异常的产生。

一般情况下把比较的字符放在后面,因为这样更符合我们的阅读理解和标准,像下面的代码:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {
	public static void main(String[] args) {
		//定义一个collection集合		
		Collection<String> c = new ArrayList<String>();
		//随便向集合添加几个元素		
		c.add("我");
		c.add("#");
		c.add("爱");
		c.add("#");
		c.add("北京");
		c.add("#");
		c.add("天安门");
		//使用迭代器便利集合		
		Iterator it = c.iterator();
		//遵循问,取,删的模式来便利集合,删除不是必须的哦
		while (it.hasNext()) {
			String str = (String) it.next();
			//把字符是"#"的字符删除,第一次先把被比较的字符放在后面
			if(str.equals("#")){
				it.remove();
			}
		}
		System.out.println(c);
	}
}

运行程序:

输出结果是:

[我, 爱, 北京, 天安门]

但是如果像集合中添加一个空元素:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {
	public static void main(String[] args) {
		//定义一个collection集合		
		Collection<String> c = new ArrayList<String>();
		//向集合添加有个空值
		c.add(null);
		c.add("我");
		c.add("#");
		c.add("爱");
		c.add("#");
		c.add("北京");
		c.add("#");
		c.add("天安门");
		//使用迭代器便利集合		
		Iterator it = c.iterator();
		//遵循问,取,删的模式来便利集合,删除不是必须的哦
		while (it.hasNext()) {
			String str = (String) it.next();
			//把字符是"#"的字符删除
			if(str.equals("#")){
				it.remove();
			}
		}
		System.out.println(c);
	}
}

这时在运行程序,会发现程序发生空指针异常,结果如下:

Exception in thread "main" java.lang.NullPointerException

但是如果在字符比较的时候把被比较的字符放在前面,下面的代码:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {
	public static void main(String[] args) {
		//定义一个collection集合		
		Collection<String> c = new ArrayList<String>();
		//向集合添加有个空值
		c.add(null);
		c.add("我");
		c.add("#");
		c.add("爱");
		c.add("#");
		c.add("北京");
		c.add("#");
		c.add("天安门");
		//使用迭代器便利集合		
		Iterator it = c.iterator();
		//遵循问,取,删的模式来便利集合,删除不是必须的哦
		while (it.hasNext()) {
			String str = (String) it.next();
			//把字符是"#"的字符删除,把被比较的字符放在前面
			if("#".equals(str)){
				it.remove();
			}
		}
		System.out.println(c);
	}
}

程序正常运行,结果如下:

[null, 我, 爱, 北京, 天安门]

综上所述,一个小小的习惯可以避免一种异常的习惯。。。

---------------------------------------------------------(又是这条很有教养的分界线)

欢迎大家在下方留言和指正,主题有一个小BUG,不用多次点击发表评论按钮。。。。

 

 

打赏
点赞
  1. Darcel Roary说道:

    I just could not leave your site prior to suggesting that I extremely loved the standard info a person supply to your visitors? Is gonna be back incessantly in order to inspect new posts

  2. zvodretiluret说道:

    Enjoyed reading through this, very good stuff, thanks.

发表评论

在发表评论前请确认您的言论中没有违反中国各项法律、法规和违背社会道德的内容。任何无意义的留言内容都会被直接删除。