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类型,然后再做为参数传给数据库。
分享到:
相关推荐
6. **日期和时间API**:Java 8改进了日期和时间处理,提供了新的`java.time`包,取代了过时的`java.util.Date`和`java.util.Calendar`。新API更加易用且功能强大。 7. **Optional类**:`java.util.Optional`是一个...
**Java Development Kit (JDK) 6.0 API 文档中文版** JDK 6.0 API 文档是Java开发者的重要参考资料,它包含了Java平台标准版6.0的所有公共类、接口、方法和异常的详细说明。这个文档以HTML形式提供,便于用户在线...
java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security...
安装过程中,通常会包含两个主要部分:JRE(Java运行时环境)和JDK。JRE用于运行Java应用程序,而JDK则包含了编译器、调试工具和其他开发所需的组件。 安装完成后,需要在系统环境变量中设置`JAVA_HOME`指向JDK的...
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....
使用BigDecimal,我们可以首先将两个浮点数转换为字符串,然后使用BigDecimal的add方法进行加法运算。例如: ```java public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double....
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
5. **日期和时间API**:Java 8改进了日期和时间处理,引入了`java.time`包,提供了更强大和易用的API,替代了过时的`java.util.Date`和`java.util.Calendar`。 6. **类型接口**:引入了`Optional<T>`类,用于表示...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
`JDK_API_1_6(中文版).zip` 是一个包含Java开发工具包(Java Development Kit, JDK)1.6版本的中文文档,它是Java程序员的重要参考资料,尤其是对于初学者和那些正在探索Java 1.6特性的开发者来说,其价值不言而喻。...
5. **日期和时间API的增强**:JDK 8用`java.time`包替换了原来的`java.util.Date`和`java.util.Calendar`,提供了更强大、更易于使用的日期和时间API,如`LocalDate`、`LocalTime`和`LocalDateTime`。 6. **默认...
4. **支持数据类型转换**:JSON Lib支持基本Java数据类型以及复杂类型的转换,包括Date、BigInteger、BigDecimal等。 5. **处理数组和集合**:通过`JSONArray`和`JSONArrayBean`,可以方便地处理JSON中的数组和Java...
6. `java.sql`:数据库连接和SQL操作的支持,如Connection、Statement、ResultSet等。 7. `java.math`:大整数(BigInteger)和大浮点数(BigDecimal)运算。 8. `java.text`:文本处理,包括国际化和格式化支持。...
JDK1.9,全称Java Development Kit 1.9,是Oracle公司发布的一个重要的Java开发工具版本,特别强调了对于开发者效率提升和系统性能优化的改进。64位版本的JDK1.9是专为64位操作系统设计的,能够在这些平台上充分利用...
9. **日期时间类型**(DATE、TIME、DATETIME、TIMESTAMP、YEAR):分别对应Java中的`java.sql.Date`、`java.sql.Time`、`java.sql.Timestamp`,JDBC类型分别为91、92、93,用于存储日期、时间或两者结合的信息。...
Unsafe的实现(JDK9之后有两个同名类,一个引用了另一个,建议放在一起阅读) java.util.stream下的流式编程的实现(很难) Thread和ThreadLocal Math、Random、BigInteger、BigDecimal java.lang.reflect下反射的...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
Java工程师必知必会是一个完整的Java课程体系,涵盖了Java语言基础、Oracle数据库的安装、配置、SQL、PL/SQL、JDBC入门等核心内容。该课程体系着重于企业真实案例驱动,通过专家讲师的带领,使学员能够独立开发和...
6. **日期与时间API的改进**:Java 8引入了全新的`java.time`包,替代了过时的`java.util.Date`和`java.util.Calendar`。新的API提供了更直观、更易用的日期和时间处理功能,如`LocalDate`、`LocalTime`、`...
Java JDK是Java开发工具包(Java Development Kit)的简称,它是用于开发和运行Java应用程序的基础软件包。Oracle JDK是Oracle公司提供的官方版本,包含了Java编译器、Java虚拟机(JVM)、Java类库以及其他的开发...