记两次踩到的坑-Long类型赋值与比较

通过对象属性获取Long类型数据t,与常量Long类型比较时,

应判断t是否为空


第二次的坑(最近的一次)
public class LongCompareStringTest {
	public static void main(String[] args) {
		Long data = 0l;
		
		System.out.println(data.toString());
		
		/*if ("0".equals(data)) { // 得到false1
			System.out.println("true1");
		} else {
			System.out.println("false1");
		}
		
		if (0l == data) { // 得到true2
			System.out.println("true2");
		} else {
			System.out.println("false2");
		}*/
		
		Long t = null;
// 抛异常================================================

		if (0l == t) {
			System.out.println("00");
		}
	}
}



半年前的坑见<java条件表达式陷阱>

public class LongCompareStringTest {
	public static void main(String[] args) {
		Long data = 0l;
		
		System.out.println(data.toString());
		
		/*if ("0".equals(data)) { // 得到false1
			System.out.println("true1");
		} else {
			System.out.println("false1");
		}
		
		if (0l == data) { // 得到true2
			System.out.println("true2");
		} else {
			System.out.println("false2");
		}*/
		
		/*Long t = null;
		if (0l == t) {
			System.out.println("00");
		}*/
		
		boolean flag = true;
		Long t = null;
// 抛异常================================================
		Long tt = flag ? t : 0l;
		System.out.println(tt);
	}
}


这段代码编译后再反编译如下:
import java.io.PrintStream;

public class LongCompareStringTest
{
  public static void main(String[] args)
  {
    Long data = Long.valueOf(0L);

    System.out.println(data.toString());

    boolean flag = true;
    Long t = null;
    Long tt = Long.valueOf(flag ? t.longValue() : 0L);
    System.out.println(tt);
  }
}

猜你喜欢

转载自newjava-sina-cn.iteye.com/blog/2409007