java 中容易误解的地方

简介:

1,equals

Java代码   收藏代码
  1. @Test  
  2.     public void test_equal(){  
  3.         String a="1";  
  4.         int b=1;  
  5.         boolean result=a.equals(b);  
  6.         System.out.println(result);  
  7.     }  

我以为会报错的,因为类型不同啊,一个是字符串,一个是整型. 结果没有报错.

原因:equals 比较时自动把基本类型转化为包装类型了 
运行结果是: 
false 
应该改为:

Java代码   收藏代码
  1. @Test  
  2.     public void test_equal(){  
  3.         String a="1";  
  4.         int b=1;  
  5.         boolean result=a.equals(String.valueOf(b));  
  6.         System.out.println(result);  
  7.     }  

 

2,包装类型

Java代码   收藏代码
  1. @Test  
  2.     public void test_equal2(){  
  3.         Long a=229L;  
  4.         Long b=229L;  
  5.         System.out.println((a==b));  
  6.     }  

 运行结果:false

 

Java代码   收藏代码
  1. @Test  
  2.     public void test_equal2(){  
  3.         Long a=29L;  
  4.         Long b=29L;  
  5.         System.out.println((a==b));  
  6.     }  

 运行结果为:true 

 

应该改为:

Java代码   收藏代码
  1. @Test  
  2.     public void test_equal2(){  
  3.         Long a=229L;  
  4.         Long b=229L;  
  5.         System.out.println((a.intValue()==b.intValue()));  
  6.     }  

 

 

3,把json字符串反序列化为对象

当json字符串是空时竟然不报错,示例如下:

Java代码   收藏代码
  1. ObjectMapper mapper = new ObjectMapper();  
  2.         Student2 student;  
  3.         try {  
  4.             student = mapper.readValue("{}", Student2.class);  
  5.             System.out.println(student.getClassroom());  
  6.             System.out.println(student.getSchoolNumber());  
  7.         } catch (Exception e) {  
  8.             e.printStackTrace();  
  9.         }  

 运行结果:

 

 

但是,如果json字符串中包含的属性,对象中没有则报错

Java代码   收藏代码
  1. ObjectMapper mapper = new ObjectMapper();  
  2.         Student2 student;  
  3.         try {  
  4.             student = mapper.readValue("{\"username2323\":\"whuang\"}", Student2.class);  
  5.             System.out.println(student.getClassroom());  
  6.             System.out.println(student.getSchoolNumber());  
  7.         } catch (Exception e) {  
  8.             e.printStackTrace();  
  9.         }  

 Student2类中没有属性username2323

报错信息:

Xml代码   收藏代码
  1. org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "username2323" (Class tv_mobile.Student2), not marked as ignorable  
  2.  at [Source: java.io.StringReader@7bb613c0; line: 1, column: 18] (through reference chain: tv_mobile.Student2["username2323"])  
  3.     at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)  

 

参考:http://blog.csdn.net/hw1287789687

http://blog.csdn.net/hw1287789687/article/details/45916001

 

作者:黄威

相关文章
|
2月前
|
Java 编译器 C++
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
这篇文章解释了Java能够实现“一次编写,到处运行”的原因,主要归功于Java虚拟机(JVM),它能够在不同平台上将Java源代码编译成的字节码转换成对应平台的机器码,实现跨平台运行。
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
|
2月前
|
Oracle Java 关系型数据库
为啥叫Java呢?Java的命名
为啥叫Java呢?Java的命名
22 1
|
2月前
|
Oracle Java 关系型数据库
为啥叫Java呢
为啥叫Java呢
17 0
|
4月前
|
算法 Java 程序员
java代码的设计和解读
java代码的设计和解读
24 0
|
5月前
|
Java 调度
用Java代码打造每日任务系统
用Java代码打造每日任务系统
207 0
|
Java 编译器
Java程序的方法设计
Java程序的方法设计
77 0
java202303java学习笔记第三十四天异常在代码中作用1
java202303java学习笔记第三十四天异常在代码中作用1
41 0
java202303java学习笔记第三十四天异常在代码中作用2
java202303java学习笔记第三十四天异常在代码中作用2
45 0
java202302java学习笔记第六天-回顾定义的调用
java202302java学习笔记第六天-回顾定义的调用
69 0
java202302java学习笔记第六天-回顾定义的调用
java202302java学习笔记第六天-回顾定义的方法
java202302java学习笔记第六天-回顾定义的方法
66 0
java202302java学习笔记第六天-回顾定义的方法
下一篇
无影云桌面