`
whzhengzy
  • 浏览: 136254 次
  • 性别: 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
分享到:
评论

相关推荐

    jdk1.8.0-144

    6. **日期和时间API**:Java 8改进了日期和时间处理,提供了新的`java.time`包,取代了过时的`java.util.Date`和`java.util.Calendar`。新API更加易用且功能强大。 7. **Optional类**:`java.util.Optional`是一个...

    jdk6.0 API文档中文版

    **Java Development Kit (JDK) 6.0 API 文档中文版** JDK 6.0 API 文档是Java开发者的重要参考资料,它包含了Java平台标准版6.0的所有公共类、接口、方法和异常的详细说明。这个文档以HTML形式提供,便于用户在线...

    JDK_API_1_6_zh_CN_downcc.com.zip 良心一级分

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

    jdk1.8 下载jdk-8u152-windows-x64.rar

    安装过程中,通常会包含两个主要部分:JRE(Java运行时环境)和JDK。JRE用于运行Java应用程序,而JDK则包含了编译器、调试工具和其他开发所需的组件。 安装完成后,需要在系统环境变量中设置`JAVA_HOME`指向JDK的...

    jasper变量的表达式的问题

    java.lang.Byte | java.util.Date | java.sql.Timestamp | java.lang.Double | java.lang.Float | java.lang.Integer | java.io.InputStream | java.lang.Long | java.lang.Short | java.math.BigDecimal | java....

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

    使用BigDecimal,我们可以首先将两个浮点数转换为字符串,然后使用BigDecimal的add方法进行加法运算。例如: ```java public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double....

    java jdk-api-1.6 中文 chmd

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

    jdk-8u281-win-linux-x64.zip

    5. **日期和时间API**:Java 8改进了日期和时间处理,引入了`java.time`包,提供了更强大和易用的API,替代了过时的`java.util.Date`和`java.util.Calendar`。 6. **类型接口**:引入了`Optional<T>`类,用于表示...

    [Java参考文档].JDK_API 1.6

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

    JDK_API_1_6(中文版).zip

    `JDK_API_1_6(中文版).zip` 是一个包含Java开发工具包(Java Development Kit, JDK)1.6版本的中文文档,它是Java程序员的重要参考资料,尤其是对于初学者和那些正在探索Java 1.6特性的开发者来说,其价值不言而喻。...

    jdk-8 32位

    5. **日期和时间API的增强**:JDK 8用`java.time`包替换了原来的`java.util.Date`和`java.util.Calendar`,提供了更强大、更易于使用的日期和时间API,如`LocalDate`、`LocalTime`和`LocalDateTime`。 6. **默认...

    json lib jdk

    4. **支持数据类型转换**:JSON Lib支持基本Java数据类型以及复杂类型的转换,包括Date、BigInteger、BigDecimal等。 5. **处理数组和集合**:通过`JSONArray`和`JSONArrayBean`,可以方便地处理JSON中的数组和Java...

    java API (JDK_API_1_6_zh_CN_1)

    6. `java.sql`:数据库连接和SQL操作的支持,如Connection、Statement、ResultSet等。 7. `java.math`:大整数(BigInteger)和大浮点数(BigDecimal)运算。 8. `java.text`:文本处理,包括国际化和格式化支持。...

    JDK1.9 64 位

    JDK1.9,全称Java Development Kit 1.9,是Oracle公司发布的一个重要的Java开发工具版本,特别强调了对于开发者效率提升和系统性能优化的改进。64位版本的JDK1.9是专为64位操作系统设计的,能够在这些平台上充分利用...

    java_mysql_数据类型对照.doc

    9. **日期时间类型**(DATE、TIME、DATETIME、TIMESTAMP、YEAR):分别对应Java中的`java.sql.Date`、`java.sql.Time`、`java.sql.Timestamp`,JDBC类型分别为91、92、93,用于存储日期、时间或两者结合的信息。...

    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工程师必知必会.docx

    Java工程师必知必会是一个完整的Java课程体系,涵盖了Java语言基础、Oracle数据库的安装、配置、SQL、PL/SQL、JDBC入门等核心内容。该课程体系着重于企业真实案例驱动,通过专家讲师的带领,使学员能够独立开发和...

    JDK8新特性

    6. **日期与时间API的改进**:Java 8引入了全新的`java.time`包,替代了过时的`java.util.Date`和`java.util.Calendar`。新的API提供了更直观、更易用的日期和时间处理功能,如`LocalDate`、`LocalTime`、`...

    jdk8win-x64.zip

    Java JDK是Java开发工具包(Java Development Kit)的简称,它是用于开发和运行Java应用程序的基础软件包。Oracle JDK是Oracle公司提供的官方版本,包含了Java编译器、Java虚拟机(JVM)、Java类库以及其他的开发...

Global site tag (gtag.js) - Google Analytics