`
whzhengzy
  • 浏览: 134860 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

JDK 1.4升级至JDK5 JDK6的两个关键问题BigDecimal、java.sql.Date

    博客分类:
  • JDK
阅读更多

JDK 1.4升级至JDK 6.0有若干兼容性事项(应该是升级至JDK 5就应该出现类似问题),但在应用系统中比较关键的有两个:一个是数字,一个是日期。若是在财务或账务系统中,这两个东西都是非常关键的。

1、java.math.BigDecimal

 

JDK 1.4升级至JDK 5(或6),BigDecimal的toString()方法的含义发生了变化,自从JDK 5开始增加了toPlainString()方法。对于两个方法的说明如下:

(1)toString()
          返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。

(2)toPlainString()
          返回不带指数字段的此 BigDecimal 的字符串表示形式。

 

可以采用如下代码测试:

package mm;
import java.*;
import java.math.BigDecimal;
import java.math.MathContext;
public class Test {
 public static void main (String[] args) {


  BigDecimal a = new BigDecimal(0.000001);
  a.toString();
  System.out.println("a=   "+a);
  BigDecimal b = new BigDecimal(0.000002);
  b.toPlainString();
  System.out.println("b=   "+b);
  
 }
}

 

2、Oracle数据库的Date类型字段对应的JDBC类型为java.sql.Timestamp,不再是java.sql.Date。

 

    鉴于此,加入你从数据库中查询了一个表字段为Date类型的日期字段,假如为2011-08-08,返回的值默认为一个TimeStamp类型,即为2011-08-08 00:00:00 000,如果Java程序中将该值赋给了一个java.util.Date类型(注意是util的Date),并且把这个值作为参数传给数据库做个一个查询,并且数据库的索引就是该日期字段,此时就会发生该字段可能不走索引了,因为传给数据库的是TimeStamp类型,这是数据库会做内部类型转换,将其转为Date类型。

 

    杯具发生了,这个表数据量非常巨大,不走索引了。解决方法是在Java程序中不要用java.util.Date来接受这个字段的返回值,应该将其转换为java.sql.Date类型,然后再做为参数传给数据库。

1
0
分享到:
评论

相关推荐

    JDK_API_1_6_zh_CN_downcc.com.zip 良心一级分

    java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security...

    java jdk-api-1.6 中文 chmd

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    [Java参考文档].JDK_API 1.6

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    java8源码-jdk8:jdk8源码阅读理解

    Unsafe的实现(JDK9之后有两个同名类,一个引用了另一个,建议放在一起阅读) java.util.stream下的流式编程的实现(很难) Thread和ThreadLocal Math、Random、BigInteger、BigDecimal java.lang.reflect下反射的...

    JDK_1_6 API

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    java api最新7.0

    java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi. 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类...

    廖雪峰 Java 教程.doc

    第一个Java程序 Java代码助手 使用IDE 使用IDE练习插件 Java程序基础 Java程序基本结构 变量和数据类型 整数运算 浮点数运算 布尔运算 字符和字符串 数组类型 流程控制 输入和输出 if判断 switch多重...

    Java 1.6 API 中文 New

    java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security ...

    [Java参考文档]

    jdk_api_1_6帮助开发 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 ...

    1_6_zh_CN.CHM

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    Java中BigDecimal的基本运算(详解)

    下面小编就为大家带来一篇Java中BigDecimal的基本运算(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java1.8 中 stream 的 groupingBy 最大值、最小值分组

    主要是介绍在 JDK8中使用 stream 流的 groupingBy 方法源进行最大值分组、最小值分组、平均值分组、统计分组

    Learn.Java.for.Android.Development_Apress.2010+src

    Tools: You will learn how to use the JDK''s javac (compiler), java (application launcher), javadoc (Java documentation generator), and jar (Java archive creator, updater, and extractor) tools....

    java 对象是否为空的判断

    java 判断对象是否为空.如String,Character,Object[]

    疯狂JAVA讲义

    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...

    java编程基础,应用与实例

    1.3 安装Java程序开发工具(JDK1.5) 2 1.3.1 安装JAVA 2 Standard Edition 1.5.0 3 1.3.2 安装开发文档及最终完成 5 1.3.3 Java开发工具 6 1.4 Java程序开发过程 7 1.5 运行第一个Java程序 7 1.6 巩固...

    「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识 准备 Java 面试,首选.zip

    BigDecimal 详解 Java 魔法类 Unsafe 详解 Java SPI 机制详解 Java 语法糖详解 集合 知识点/面试题总结 : Java 集合常见知识点&面试题总结(上) (必看 ) Java 集合常见知识点&面试题总结(下) (必看 ) Java 容器使用...

    Java常用类.xmind

    导图包括一些java常用类知识汇总,包括字符串、日期API(包括jdk8.0之前 和 之后的)、Math类、BigInteger类、BigDecimal类

    SMS4国密算法的java实现及其jar包(直接可以使用)

    BigDecimal bd = SMS4.getBigDecimalByDecrypt(encStr1); System.out.println("解密后的结果:" + bd); } 运行结果: 加密后的结果:d32d3c1cf7074c2f6efa7ef114e54216 解密后的结果:123456 =================...

    xsolla-sdk-java:[已弃用] 适用于 Java 的 Xsolla SDK

    [已弃用] 适用于 Java 的 Xsolla SDK 用于与交互的官方 SDK 要求 JDK 1.7 Maven 3 安装 添加到您的 pom.xml: ... <artifactId>sdk <version>1.0.1 ...import java.math.BigDecimal; import java.

Global site tag (gtag.js) - Google Analytics