1,equals
@Test public void test_equal(){ String a="1"; int b=1; boolean result=a.equals(b); System.out.println(result); }
我以为会报错的,因为类型不同啊,一个是字符串,一个是整型. 结果没有报错.
原因:equals 比较时自动把基本类型转化为包装类型了
运行结果是:
false
应该改为:
@Test public void test_equal(){ String a="1"; int b=1; boolean result=a.equals(String.valueOf(b)); System.out.println(result); }
2,包装类型
@Test public void test_equal2(){ Long a=229L; Long b=229L; System.out.println((a==b)); }
运行结果:false
@Test public void test_equal2(){ Long a=29L; Long b=29L; System.out.println((a==b)); }
运行结果为:true
应该改为:
@Test public void test_equal2(){ Long a=229L; Long b=229L; System.out.println((a.intValue()==b.intValue())); }
3,把json字符串反序列化为对象
当json字符串是空时竟然不报错,示例如下:
ObjectMapper mapper = new ObjectMapper(); Student2 student; try { student = mapper.readValue("{}", Student2.class); System.out.println(student.getClassroom()); System.out.println(student.getSchoolNumber()); } catch (Exception e) { e.printStackTrace(); }
运行结果:
但是,如果json字符串中包含的属性,对象中没有则报错
ObjectMapper mapper = new ObjectMapper(); Student2 student; try { student = mapper.readValue("{\"username2323\":\"whuang\"}", Student2.class); System.out.println(student.getClassroom()); System.out.println(student.getSchoolNumber()); } catch (Exception e) { e.printStackTrace(); }
Student2类中没有属性username2323
报错信息:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "username2323" (Class tv_mobile.Student2), not marked as ignorable at [Source: java.io.StringReader@7bb613c0; line: 1, column: 18] (through reference chain: tv_mobile.Student2["username2323"]) at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)
参考:http://blog.csdn.net/hw1287789687
http://blog.csdn.net/hw1287789687/article/details/45916001
作者:黄威
相关推荐
作者不仅讲解了正面的编程模式和惯用法,还指出了Java语言及其标准库中容易引起误解的陷阱和反模式,包括对java.lang、java.util以及一些较小的扩展包的讨论。此外,书中还包括了基于序列化的详细介绍,提供了其他...
7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...
再者,内存管理也是Java初学者容易困惑的地方。Java通过垃圾回收机制自动管理内存,但这并不意味着开发者可以忽视内存泄漏的问题。理解对象生命周期,知道何时创建和销毁对象,以及何时使用弱引用、软引用等,能够...
7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
这些规范不仅有助于提高代码的可读性,也有利于团队协作,减少误解和错误,同时也能培养开发人员良好的编程习惯。在实际开发过程中,遵守这些规范可以显著提高软件的整体质量和可维护性。因此,无论是个人开发还是...
条件语句是编程中最常见的结构之一,但也是最容易出错的地方,尤其是混淆赋值运算符(=)与相等运算符(==)。采用逆序书写条件语句的方法,如`if (10 == i)`而非`if (i == 10)`,可以在一定程度上避免这类错误,因为...
Java重构是软件开发过程中的一个重要环节,旨在提升代码质量、可读性和维护性,而不会改变软件的外部行为。在Java编程中,重构是通过应用一系列小型、精确的改进步骤来改善代码结构的过程。这些步骤可能包括提取方法...
- **规范**: 对于复杂的逻辑或容易引起误解的地方需要添加详细的注释。 - **说明**: 通过注释解释为什么选择某种实现而非其他可能的方法,有助于维护人员快速理解代码设计的初衷。 #### 四、命名规范 良好的命名...
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...
- 如果缩写词的发音容易被误解,则考虑在缩写中加入元音字符以提高可读性。 - 示例: - 好:`numItems` - 不好:`nItems` **3.5 大写首字母缩略词的第一个字母** - 当使用缩略词作为名称的一部分时,确保首字母...
在多人协作的项目中,统一的代码风格和规范能够确保团队成员之间的沟通效率,减少误解,使得代码更容易理解和维护。 首先,谈到工具类的规范,工具类是为了提高代码复用性和模块化而设计的,但如果不加以控制,工具...
本文将深入分析两个容易引发误解的地方。 1. 局部变量与未声明变量的区别 在第一个示例中,我们看到一个函数 `fun`,内部声明了局部变量 `a` 和一个未声明的变量 `b`: ```javascript function fun() { var a = ...
然而,熟悉Java和Python的选手也可选择,只是需要注意执行效率可能稍逊一筹。 二、算法基础 1. **数据结构**:线性结构(如数组、链表)、树形结构(如二叉树、堆)、图论等是基础。理解它们的性质并能熟练运用,如...
1. **名称误导**:JavaScript与Java名字相似,但两者完全不同,JavaScript是一种轻量级的脚本语言,而Java是面向对象的编程语言。 2. **类型系统**:JavaScript是一种松散类型的动态语言,这意味着变量不需要预先...
这份个人总结的资料集合,虽然没有直接引用书本内容,但显然聚焦于那些通常被忽略或书本上未详细阐述的知识点,以及容易引起考生误解或犯错的地方。以下是对这些知识点的详细解析: 1. **软件生命周期模型**:除了...
此外,应遵循语言特定的惯用法,如Python中的PEP 8,Java中的Google Java Style Guide,这些指南提供了详细的编码规则和最佳实践。 **V. 注释** 1. **有意义的注释**:注释应该解释代码的目的,而非仅仅复述代码的...
2. Understanding JavaScript Function Invocation and "this"(理解JavaScript函数调用和“this”):这部分内容解释了在JavaScript中函数如何被调用以及如何处理函数中的“this”关键字...
1. **命名规范**:变量、函数、类和模块的命名应当清晰、简洁且一致,避免使用模糊或容易引起误解的缩写。推荐采用驼峰命名法或下划线分隔法,使得代码自解释。 2. **注释规范**:良好的注释能帮助开发者理解代码的...