本帖最后由 杨兴庭 于 2013-7-24 20:52 编辑
我在琢磨UDP传输中使用readline方法中读取空行的时候,想到了获取到的应该是一个空字符,然后会转成的空字节数组。特意验证
了一下
System.out.println("".getBytes().length);//打印出的结果是0 这应该没错吧
这时候,突然想到字符串的对象在堆内存中是不变的,又随手打了些代码 ,这时候出问题了
byte[] arr = new byte[0];//定义了一个空字节数组
String line1 = "";//又定义了一个空字符串
String line2 = new String(arr,0,arr.length);//将字节数组转成空字符串
String line3 = "";
System.out.println( line1 == line2); //结果是false
System.out.println( line1.equals(line2)); //调用equals方法,只比较字符串中的内容 结果是true
System.out.println( line1 == line3); //结果是true
为什么line1 == line2 ? 这时候会返回false呢? 字符串的中用 equals方法 和 == 两者之间有什么区别
|