try-catch-finally的关系

​ 在try-block中即使出现了异常,finally也会被执行,需要注意的是,如果在try-block中return的是引用类型,在finally中对该引用类型进行修改,会导致最终的return类型也被修改。

try {

//即使有return语句,finally也会被执行

returnb;

} catch (Exception e) {

// TODO: handle exception

}

finally {
System.out.println("finally block 会覆盖try中的return!");
return 1000; //不建议在finally中进行return,现在的编译器会对该行为发出警告信息,如果返回值为引用类型,那么finally中的操作还会改变预期的返回值 }

TreeSet和HashSet的实现原理和区别

​ 这两个实际上都是调用的TreeMap和HashMap来实现的,因为map的key值是唯一的,所以jdk便利用这一特性实现了set相关的功能

BigDecimal中的一些坑

​ BigDecimal在构造方法中,传入Integer和String会表现出和预期不一样的结果,具体如下面的代码所示:

BigDecimal one = new BigDecimal("1.0");    //有冒号,下面才会出现这种情况,无冒号则按照预期工作
BigDecimal two = new BigDecimal("1.00"); //无冒号的话,会被退化为1
System.out.println(one); //=> 1.0
System.out.println(two); //=> 1.00 //注意,是不相等的
System.out.println("equals:" + one.equals(two)); //=> false //比较出来的结果是0,也就是相等
System.out.println("compareTo:" + ((Comparable<? super BigDecimal>)one).compareTo(two)); //也就是说,对于BigDecimal的equal和CompareTo方法,两者的表现是不一样的。

当BigDecimal在HashSet/HashMap和TreeSet/TreeMap中使用时

​ HashSet/HashMap和TreeSet/TreeMap两者在比较的时候,使用了不同的方式,因此在Hash和Tree中,

HashSet<BigDecimal> hashSet = new HashSet<BigDecimal>();
hashSet.add(one);
hashSet.add(two);
System.out.println("HASHSET:" + hashSet); // hashset里面会有one和two,因为hashset调用的是equals方法 TreeSet<BigDecimal> treeSet = new TreeSet<BigDecimal>();
treeSet.add(one);
treeSet.add(two); System.out.println("TREESET:" + treeSet); //但是treeset里面只有一个,因为treeset去重时使用的是compareTo //导致这样的结果根本原因是TreeMap和HashMap在加入key-value时对key的判断,TreeMap使用compareTo,但是HashMap使用的却是equals
//注意BigDecimal的一些特殊行为:
BigDecimal one = new BigDecimal("1.0") =>实际值为1.0
BigDecimal one = new BigDecimal(1.0) =>实际值为1

Java语法细节 - try_finally和set相关的更多相关文章

  1. Java语法细节 - 内存和枚举

    目录 Java申请DirectBuffer ByteBuffer的position,limit,capacity,flip操作之间的关系 枚举实现单例模式 Java申请DirectBuffer /*- ...

  2. Java语法细节 - 可见性

    目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...

  3. JAVA语法细节(1)

    1.变量的作用域 变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束.变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失. 2.变量的数据类型 变量基本数据类型:byt ...

  4. Java语法细节 - synchronized和volatile

    目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...

  5. Java语法细节(2)

    1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...

  6. java优化细节记录

    此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...

  7. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  8. JavaScript语法细节——引用与复制

    原文:JavaScript语法细节--引用与复制 我们都知道,JS中变量的赋值有两种方式,最近在折腾自己写的标签栏插件,碰到了很多平时没注意的问题.正好,那边处理清楚了,稍微整理一下关于引用与复制相关 ...

  9. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

随机推荐

  1. Linux-ubuntu16.04安装 mysql5.7-PHP7.0+Swoole

    步骤1 – 安装MySQL 在 Ubuntu 16.04 中,默认情况下,只有最新版本的 MySQL 包含在 APT 软件包存储库中.只需更新服务器上的包索引并安装默认包 apt-get. sudo ...

  2. # 20175333曹雅坤《Java程序设计》第七周学习总结

    教材学习内容总结 第八章-常用实用类String类 构造String对象 字符串的并置 String类的常用方法 字符串与基本数据的互相转化 对象的字符串表示 字符串与字符.字节数组 正则表达式及字符 ...

  3. ICMP shell

    场景 反向shell的场景下使用 原理 ICMP作为获取反向shell的通道 实践 运行 run.sh报错,可能是因为用的Parrot.改一下就可以了 ifconfig | grep 'inet '| ...

  4. 使用scrapy爬虫,爬取17k小说网的案例-方法二

    楼主准备爬取此页面的小说,此页面一共有125章 我们点击进去第一章和第一百二十五章发现了一个规律 我们看到此链接的  http://www.17k.com/chapter/271047/6336386 ...

  5. 简单的C#网络爬虫

    Source Code: http://download.csdn.net/download/qdalong/10271880 这是爬取网页内容,像是这对大家来说都是不难得,但是在这里有一些小改动,代 ...

  6. MAC本apache+php配置虚拟域名时踩的坑

    昨天在调试Mac自带的Apache+PHP配置域名时,调试的让我怀疑人生.顿时心里一万个草泥马,我就是配置个虚拟域名啊,这么让我受伤 . 1 首先检查一下Apache是否开启, qutao@bogon ...

  7. docker简单介绍----Dockerfile命令

    DockerFile的组成部署: 下面优先介绍下Dcokerfile的基础指令 一.CMD指令:容器启动时要莫热门运行的命令,如果有多个CMD指定,最后一个生效 使用方法: CMD ["ex ...

  8. Unity简单塔防游戏的开发——敌人移动路径的创建及移动

    软件工程综合实践专题第一次作业 Unity呢是目前一款比较火热的三维.二维动画以及游戏的开发引擎,我也由于一些原因开始接触并喜爱上了这款开发引擎,下面呢是我在学习该引擎开发小项目时编写的一些代码的脚本 ...

  9. jsp多模块相同数据提交到后台之数据处理

    最近在写一个java多模块表单提交,起初想的只是一个简单的form表单提交,写的时候发现不是真简单.多个相同类型数据提交到后台接收的问题很困难. 于是,和人进行深入的讨论,感觉j以json的格式提交时 ...

  10. 详解MariaDB数据库的事务

    1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句 ...