前几天在项目中遇到的两个小问题,说是问题,其实是非常基础的知识。再一次暴露了基础不扎实的漏洞
1、Long型比较大小
相信大家都清楚Long和long的区别,long是基本数据类型
,而Long是包装类型
。
long存储在堆栈,Long存储在堆中;
long不是面向对象的,Long是面向对象的;
包装类型的好处:方便涉及到对象的操作,包含了基本数据类型的相关属性和相关操作方法。
因为Long型数据是一个对象,所以不能通过“==”的方式来比较大小。
如果使用“==”比较两个Long类型,实际比较的是两个对象的内存地址,也就是比较两个对象是否是同一个对象。这种方法很少用到,但是如果应用巧妙也会省时省力。
比较两个Long对象值的大小的方法有两种:
①、boolean boolean = new Long(3).equals(new Long(3));
②、boolean boolean = (new Long(3).longValue() == new Long(3).longValue())
2、Base64和字符串转换
将String转换为Base64:
byte[] stringToBytes = Base64.decode(string, Base64.DEFAULT);
将Base64转换为String:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(bos);
os.writeObject(obj);
String bytesToHexString = new String(Base64.encode(bos.toByteArray(), Base64.DEFAULT));