`

java 中容易误解的地方

    博客分类:
  • Java
阅读更多

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

 

作者:黄威

 

  • 大小: 71.4 KB
3
0
分享到:
评论

相关推荐

    Effctive Java 简体全本

    作者不仅讲解了正面的编程模式和惯用法,还指出了Java语言及其标准库中容易引起误解的陷阱和反模式,包括对java.lang、java.util以及一些较小的扩展包的讨论。此外,书中还包括了基于序列化的详细介绍,提供了其他...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...

    JAVA基础易错总结(50%你不知道)

    再者,内存管理也是Java初学者容易困惑的地方。Java通过垃圾回收机制自动管理内存,但这并不意味着开发者可以忽视内存泄漏的问题。理解对象生命周期,知道何时创建和销毁对象,以及何时使用弱引用、软引用等,能够...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    7.5.5 重载容易引发误解的两个地方——返回类型和形参名 170 7.5.6 重载中的最难点——参数匹配原则 171 7.6 使用类的实例作为方法参数 172 7.6.1 超车方法:使用类实例做参数 172 7.6.2 调用这个方法 173 ...

    农业银行Java基础面试题.pdf

    GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    JAVA编程规范内部资料

    这些规范不仅有助于提高代码的可读性,也有利于团队协作,减少误解和错误,同时也能培养开发人员良好的编程习惯。在实际开发过程中,遵守这些规范可以显著提高软件的整体质量和可维护性。因此,无论是个人开发还是...

    15个Java编程好习惯

    条件语句是编程中最常见的结构之一,但也是最容易出错的地方,尤其是混淆赋值运算符(=)与相等运算符(==)。采用逆序书写条件语句的方法,如`if (10 == i)`而非`if (i == 10)`,可以在一定程度上避免这类错误,因为...

    java重构1.rar part1

    Java重构是软件开发过程中的一个重要环节,旨在提升代码质量、可读性和维护性,而不会改变软件的外部行为。在Java编程中,重构是通过应用一系列小型、精确的改进步骤来改善代码结构的过程。这些步骤可能包括提取方法...

    JAVA学习(转)

    - **规范**: 对于复杂的逻辑或容易引起误解的地方需要添加详细的注释。 - **说明**: 通过注释解释为什么选择某种实现而非其他可能的方法,有助于维护人员快速理解代码设计的初衷。 #### 四、命名规范 良好的命名...

    超级有影响力霸气的Java面试题大全文档

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    《Java编程风格》中文版.pdf

    - 如果缩写词的发音容易被误解,则考虑在缩写中加入元音字符以提高可读性。 - 示例: - 好:`numItems` - 不好:`nItems` **3.5 大写首字母缩略词的第一个字母** - 当使用缩略词作为名称的一部分时,确保首字母...

    java开发时各类工具的使用规范

    在多人协作的项目中,统一的代码风格和规范能够确保团队成员之间的沟通效率,减少误解,使得代码更容易理解和维护。 首先,谈到工具类的规范,工具类是为了提高代码复用性和模块化而设计的,但如果不加以控制,工具...

    javascript作用域容易记错的两个地方分析

    本文将深入分析两个容易引发误解的地方。 1. 局部变量与未声明变量的区别 在第一个示例中,我们看到一个函数 `fun`,内部声明了局部变量 `a` 和一个未声明的变量 `b`: ```javascript function fun() { var a = ...

    ACM NOI CSP比赛的一些经验

    然而,熟悉Java和Python的选手也可选择,只是需要注意执行效率可能稍逊一筹。 二、算法基础 1. **数据结构**:线性结构(如数组、链表)、树形结构(如二叉树、堆)、图论等是基础。理解它们的性质并能熟练运用,如...

    ajax教程资料ajax

    1. **名称误导**:JavaScript与Java名字相似,但两者完全不同,JavaScript是一种轻量级的脚本语言,而Java是面向对象的编程语言。 2. **类型系统**:JavaScript是一种松散类型的动态语言,这意味着变量不需要预先...

    西安交通大学软件工程专硕915考试个人总结的书上没有的知识点,易错点汇总

    这份个人总结的资料集合,虽然没有直接引用书本内容,但显然聚焦于那些通常被忽略或书本上未详细阐述的知识点,以及容易引起考生误解或犯错的地方。以下是对这些知识点的详细解析: 1. **软件生命周期模型**:除了...

    代码风格与编程规范-Programming Style

    此外,应遵循语言特定的惯用法,如Python中的PEP 8,Java中的Google Java Style Guide,这些指南提供了详细的编码规则和最佳实践。 **V. 注释** 1. **有意义的注释**:注释应该解释代码的目的,而非仅仅复述代码的...

    [JavaScript][PDF][英文版]Oh My JS

    2. Understanding JavaScript Function Invocation and "this"(理解JavaScript函数调用和“this”):这部分内容解释了在JavaScript中函数如何被调用以及如何处理函数中的“this”关键字...

    华为编程开发规范与案例

    1. **命名规范**:变量、函数、类和模块的命名应当清晰、简洁且一致,避免使用模糊或容易引起误解的缩写。推荐采用驼峰命名法或下划线分隔法,使得代码自解释。 2. **注释规范**:良好的注释能帮助开发者理解代码的...

Global site tag (gtag.js) - Google Analytics