编码小技巧

1、为何使用equals比较时,要把常量放在左边?

 

String str = null;
if(str.equals("xxx"))
 {
        //do xxx
 }

 

 

      可以看出,当str为null时,会导致空指针异常。

 

2、对List foreach时候,循环体中不能修改list结构

import java.util.ArrayList;
import java.util.List;

public class TestList {

	public static void main(String[] args) {
		
		List<Person> pers = new ArrayList<Person>();
		Person p1 = new Person("zhangsan", 20);
		Person p2 = new Person("wangwu", 21);
		Person p3 = new Person("lisi", 22);
		Person p4 = new Person("zhaoliu", 22);
		pers.add(p1);
		pers.add(p2);
		pers.add(p3);
		pers.add(p4);
		
	    for(Person p : pers)
	    {
	    	if("wangwu".equals(p.getName()))
	    	{
	    		pers.remove(p); 
	    	}else if("lisi".equals(p.getName()))
	    	{
	    		pers.remove(p);
	    	}
	    }
	    System.out.println(pers.size());
	}

}

class Person {
	
	private String name;
	private int age;

	public Person() {

	}
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

运行结果:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
    at java.util.AbstractList$Itr.next(Unknown Source)
    at TestList.main(TestList.java:18)

 

3、在重写父类方法时,子类方法不能抛出比父类更大的异常。

 

4、System.out.println(1==2?9.9:9); 打印的结果是多少?

 

     输出结果为: 9.0

 

5、后加加问题

int i = 3;
System.out.println(i);
System.out.println(i++);
System.out.println(i);

    输出结果为: 3  3  4

 

6、double陷阱

double b = 7/4;
System.out.print(b);

    输出结果为: 1.0

 

double b = 7/4d;
System.out.print(b);

    输出结果为: 1.75

 

 

 7、int相乘转long

      2个int类型相乘在转换long是有隐患的,可以先转long再相乘。

 

 8、乘法陷阱

 

    Javascript代码

<script>
    alert(10.2 * 100);
    alert(10.3 * 100);
</script>

    输出真的和你预期相同吗?Java也同样存在这种问题,如果double相乘必须经过处理。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值