java Long型的比较

各位对于下面这种情况,不是很理解,我有一个实体类,实体类中有一个Long型的属性,是这样的:

private Long merchantRecommend;//商户自己推荐标志

现在有这样的一个方法:
// 检查商品是否推荐
public String checkRecommend() {
TbProduct product=productService.load(id);
System.out.println(product.getMerchantRecommend());
System.out.println(product.getMerchantRecommend() == new Long(1));
if(product.getMerchantRecommend() == new Long(1)){
return ajaxText("true");
}else{
return ajaxText("false");
}
}
在进行判断的时候我自认为这个属性是Long型的,所以我用new Long(1),我输出product.getMerchantRecommend()的值为1,为什么这里用new Long(1)不行,麻烦大侠们指导一下:

[code="java"]System.out.println(product.getMerchantRecommend() == new Long(1));
System.out.println(product.getMerchantRecommend().equals(new Long(1))); [/code]

[code="java"]System.out.println(product.getMerchantRecommend() == new Long(1)); [/code]
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同