Java语法细节 - try_finally和set相关
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相关的更多相关文章
- Java语法细节 - 内存和枚举
目录 Java申请DirectBuffer ByteBuffer的position,limit,capacity,flip操作之间的关系 枚举实现单例模式 Java申请DirectBuffer /*- ...
- Java语法细节 - 可见性
目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...
- JAVA语法细节(1)
1.变量的作用域 变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束.变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失. 2.变量的数据类型 变量基本数据类型:byt ...
- Java语法细节 - synchronized和volatile
目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...
- Java语法细节(2)
1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...
- java优化细节记录
此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...
- 程序员带你学习安卓开发,十天快速入-对比C#学习java语法
关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...
- JavaScript语法细节——引用与复制
原文:JavaScript语法细节--引用与复制 我们都知道,JS中变量的赋值有两种方式,最近在折腾自己写的标签栏插件,碰到了很多平时没注意的问题.正好,那边处理清楚了,稍微整理一下关于引用与复制相关 ...
- Java语法知识总结
一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...
随机推荐
- 【intern】最长公共子串、编辑距离、KMP 等
这可能是一个很长的blog…… # from https://blog.csdn.net/justheretobe/article/details/51764587 #!/usr/bin/env py ...
- Access提示Insert Into 语法错误解决办法总结
1.关键字:如果你的数据库的表的设计包含了Access包含的关键字,则在插入的时候会出现“Insert Into 语法错误” 例如: string sqlText = String.Format(&q ...
- 对于JavaBean+Servlet+SqlServer的代码总结和打包调用
日期:2019.3.24 博客期:049 星期日 说起来我已经说过很多次前台的应用技术了呢!这一次我是要将这一部分打包,做成配套的制作工具: 当前我已经打包成功,想要下载的同学可以进入我的GitHub ...
- C# 高级编程05----常用修饰符
常用修饰符: 1.访问可见性修饰符 修饰符 应用于 说明 public 类型或成员 任何代码都可访问 protected 类型或内嵌类型的成员 只有子类能访问 internal 类型或成员 只能在包含 ...
- mysql启动失败问题记录
net start mysql 启动mysql服务,启动失败: 手动启动服务,又失败 命令查看日志:mysqld --console 在网上找了解决办法如下: 找到mysql目录,进去bin目录,找到 ...
- Charles SSL
1 enable SSL 2 chls.pro/ssl to install certificate 3 General -> About -> Certificate Trust Se ...
- IIS处理并发请求设置
一个ASP.NET项目在部署到生产环境时,当用户并发量达到200左右时,IIS出现了明显的请求排队现象,发送的请求都进入等待,无法及时响应,系统基本处于不可用状态. 当发现请求明显延迟,没有被即时 ...
- 关于JS前台计算四舍五入的问题
//除法函数 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显.这个函数返回较为精确的除法结果. //调用:accDiv(arg1,arg2) //返回值:arg1除 ...
- 在命令行输入python出现“Warning:This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.
[现象] 在命令行输入python出现“Warning:This Python interpreter is in a conda environment, but the environment h ...
- html基础学习1
<html> <head> <title>标题</title> </head> <body bgcolor="pink&qu ...