??xml version="1.0" encoding="utf-8" standalone="yes"?>
1。所有Q点运都在数据库内做好,也就是都用sql实现?BR>2。用BigDecimal实现Q方法如下(仅仅是个例子Q:(x)
import java.math.BigDecimal;
public class tt {
/**
* @param args
*/
public static void main(String[] args) {
float a = 1.1f;
float b = 2.2f;
tt t = new tt();
System.out.println(t.add(a,b));
System.out.println(t.sub(a,b));
System.out.println(t.mul(a,b));
System.out.println(t.div(a,b));
System.out.println(t.round(a));
}
public float add(float v1,float v2){//加法
BigDecimal b1 = new BigDecimal(Float.toString(v1));
BigDecimal b2 = new BigDecimal(Float.toString(v2));
return b1.add(b2).floatValue();
}
public float sub(float v1,float v2){//减法
BigDecimal b1 = new BigDecimal(Float.toString(v1));
BigDecimal b2 = new BigDecimal(Float.toString(v2));
return b1.subtract(b2).floatValue();
}
public float mul(float v1,float v2){//乘法
BigDecimal b1 = new BigDecimal(Float.toString(v1));
BigDecimal b2 = new BigDecimal(Float.toString(v2));
return b1.multiply(b2).floatValue();
}
public float div(float v1,float v2){//除法
BigDecimal b1 = new BigDecimal(Float.toString(v1));
BigDecimal b2 = new BigDecimal(Float.toString(v2));
return b1.divide(b2,3,BigDecimal.ROUND_HALF_UP).floatValue();
}
public float round(float v){//截取3?BR> BigDecimal b = new BigDecimal(Float.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one,3,BigDecimal.ROUND_HALF_UP).floatValue();
}
}
Alt+Left:回退一?/P>
Alt+Right:前蟩一?/P>
Ctrl+Shift+T:打开cd
Ctrl+Shift+R:打开资源
Ctrl+Q:回到最后一ơ编辑的地方
Ctrl+Shift+G: 在workspace中搜索引?/P>
Ctrl+Alt+Down: 复制高(sh)昄的一行或多行
Alt+Up(Down):一行或者多行向上或者向下移?BR>
Java 语言的Calendar(日历),Date(日期), 和DateFormat(日期格式)l成?jin)Java标准的一个基本但是非帔R要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日? 定制日期的显C格? q将文本数据解析成日期对? 我们写了(jin)两篇文章, q是W一? 我们大概的学习(fn)日期, 日期格式, 日期的解析和日期的计?
我们讨Z面的c?
1、具体类(和抽象类相对)java.util.Date
2、抽象类java.text.DateFormat 和它的一个具体子c?java.text.SimpleDateFormat
3、抽象类java.util.Calendar 和它的一个具体子c?java.util.GregorianCalendar
具体cd以被实例? 但是抽象cd不能. 你首先必d现抽象类的一个具体子c?
Date cMJava 开发包(JDK) 1.0 开始进? 当时它只包含?jin)几个取得或者设|一个日期数据的各个部分的方? 比如说月, ? 和年. q些Ҏ(gu)现在遭到?jin)批评ƈ且已l被转移C(jin)Calendarc里M(jin), 我们在本文中进一步讨论它. q种改进旨在更好的处理日期数据的国际化格? p在JDK 1.1中一? Date cd际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林治标准旉)1970q? 1 ?1?0:00:00q一M前或者是之后l历的毫U数.
一、创Z个日期对?
让我们看一个用系l的当前日期和时间创Z个日期对象ƈq回一个长整数的简单例? q个旉通常被称为Java 虚拟?JVM)L环境的系l时?
import java.util.Date;
public class DateExample1 {
public static void main(String[] args) {
// Get the system date/time
Date date = new Date();
System.out.println(date.getTime());
}
}
在星期六, 2001q??9? 下午大约?:50的样? 上面的例子在pȝ输出讑֤上显C的l果?1001803809710. 在这个例子中,值得注意的是我们使用?jin)Date 构造函数创Z个日期对? q个构造函数没有接受Q何参? 而这个构造函数在内部使用?System.currentTimeMillis() Ҏ(gu)来从pȝ获取日期.
那么, 现在我们已经知道?jin)如何获取?970q??日开始经历的毫秒C(jin). 我们如何才能以一U用h白的格式来显C个日期呢? 在这里类 java.text.SimpleDateFormat 和它的抽象基c?java.text.DateFormat 派得上用场?
二、日期数据的定制格式
假如我们希望定制日期数据的格? 比方星期?9?29?2001q? 下面的例子展CZ(jin)如何完成q个工作:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample2 {
public static void main(String[] args) {
SimpleDateFormat bartDateFormat =
new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
Date date = new Date();
System.out.println(bartDateFormat.format(date));
}
}
只要通过向SimpleDateFormat 的构造函C递格式字W串"EEE-MMMM-dd-yyyy", 我们p够指明自己想要的格式. 你应该可以看? 格式字符串中的ASCII 字符告诉格式化函C面显C日期数据的哪一个部? EEEE是星? MMMM是月, dd是日, yyyy是年. 字符的个数决定了(jin)日期是如何格式化?传?EE-MM-dd-yy"?x)显C?Sat-09-29-01. 请察看Sun 公司?Web 站点获取日期格式化选项的完整的指示.
三、将文本数据解析成日期对?
假设我们有一个文本字W串包含?jin)一个格式化?jin)的日期对? 而我们希望解析这个字W串q从文本日期数据创徏一个日期对? 我们再ơ以格式化字W串"MM-dd-yyyy" 调用SimpleDateFormatc? 但是q一? 我们使用格式化解析而不是生成一个文本日期数? 我们的例? 昄在下? 解析文本字W串"9-29-2001"q创Z个gؓ(f)001736000000 的日期对?
例子E序:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample3 {
public static void main(String[] args) {
// Create a date formatter that can parse dates of
// the form MM-dd-yyyy.
SimpleDateFormat bartDateFormat =
new SimpleDateFormat("MM-dd-yyyy");
// Create a string containing a text date to be parsed.
String dateStringToParse = "9-29-2001";
try {
// Parse the text version of the date.
// We have to perform the parse method in a
// try-catch construct in case dateStringToParse
// does not contain a date in the format we are expecting.
Date date = bartDateFormat.parse(dateStringToParse);
// Now send the parsed date as a long value
// to the system output.
System.out.println(date.getTime());
}catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
五、用标准的日期格式化过E?
既然我们已经可以生成和解析定制的日期格式? 让我们来看一看如何用内建的格式化过E? Ҏ(gu) DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式化过E? 在下面的例子? 我们获取?jin)四个内建的日期格式化过E? 它们包括一个短? 中等? 长的, 和完整的日期格式.
import java.text.DateFormat;
import java.util.Date;
public class DateExample4 {
public static void main(String[] args) {
Date date = new Date();
DateFormat shortDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.SHORT,
DateFormat.SHORT);
DateFormat mediumDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.MEDIUM,
DateFormat.MEDIUM);
DateFormat longDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.LONG,
DateFormat.LONG);
DateFormat fullDateFormat =
DateFormat.getDateTimeInstance(
DateFormat.FULL,
DateFormat.FULL);
System.out.println(shortDateFormat.format(date));
System.out.println(mediumDateFormat.format(date));
System.out.println(longDateFormat.format(date));
System.out.println(fullDateFormat.format(date));
}
}
注意我们在对 getDateTimeInstance的每ơ调用中都传递了(jin)两个? W一个参数是日期风格, 而第二个参数是时间风? 它们都是基本数据cdint(整型). 考虑到可L? 我们使用?jin)DateFormat cL供的帔R: SHORT, MEDIUM, LONG, ?FULL. 要知道获取时间和日期格式化过E的更多的方法和选项, L(fng)Sun 公司Web 站点上的解释.
q行我们的例子程序的时? 它将向标准输?gu)备输Z面的内容:
9/29/01 8:44 PM
Sep 29, 2001 8:44:45 PM
September 29, 2001 8:44:45 PM EDT
Saturday, September 29, 2001 8:44:45 PM EDT
六、Calendar c?
我们现在已经能够格式化ƈ创徏一个日期对象了(jin), 但是我们如何才能讄和获取日期数据的特定部分? 比如说小? ? 或者分? 我们又如何在日期的这些部分加上或者减d呢? {案是用Calendar c? 如我们前面提到的那? Calendar cM的方法替代了(jin)Date cM被hN的方?
假设你想要设|? 获取, 和操U一个日期对象的各个部分, 比方一个月的一天或者是一个星期的一? Z(jin)演示q个q程, 我们用具体的子类 java.util.GregorianCalendar. 考虑下面的例? 它计得C面的W十个星期五?3?
import java.util.GregorianCalendar;
import java.util.Date;
import java.text.DateFormat;
public class DateExample5 {
public static void main(String[] args) {
DateFormat dateFormat =
DateFormat.getDateInstance(DateFormat.FULL);
// Create our Gregorian Calendar.
GregorianCalendar cal = new GregorianCalendar();
// Set the date and time of our calendar
// to the system&s date and time
cal.setTime(new Date());
System.out.println("System Date: " +
dateFormat.format(cal.getTime()));
// Set the day of week to FRIDAY
cal.set(GregorianCalendar.DAY_OF_WEEK,
GregorianCalendar.FRIDAY);
System.out.println("After Setting Day of Week to Friday: " +
dateFormat.format(cal.getTime()));
int friday13Counter = 0;
while (friday13Counter <= 10) {
// Go to the next Friday by adding 7 days.
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);
// If the day of month is 13 we have
// another Friday the 13th.
if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13) {
friday13Counter++;
System.out.println(dateFormat.format(cal.getTime()));
}
}
}
}
在这个例子中我们作了(jin)有趣的函数调?
cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
?
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);
set Ҏ(gu)能够让我们通过单的讄星期中的哪一天这个域来将我们的时间调整ؓ(f)星期? 注意到这里我们用了(jin)帔R DAY_OF_WEEK ?FRIDAY来增Z码的可读? add Ҏ(gu)让我们能够在日期上加上数? 润年的所有复杂的计算都由q个Ҏ(gu)自动处理.
我们q个例子的输出结果是:
System Date: Saturday, September 29, 2001
当我们将它设|成星期五以后就成了(jin): Friday, September 28, 2001
Friday, September 13, 2002
Friday, December 13, 2002
Friday, June 13, 2003
Friday, February 13, 2004
Friday, August 13, 2004
Friday, May 13, 2005
Friday, January 13, 2006
Friday, October 13, 2006
Friday, April 13, 2007
Friday, July 13, 2007
Friday, June 13, 2008
七、时间掌握在你的手里
有了(jin)q些Date 和Calendar cȝ例子, 你应该能够?java.util.Date, java.text.SimpleDateFormat, ?java.util.GregorianCalendar 创徏许多Ҏ(gu)?
在下面的文章? 我们讨论更高的Date ?Calendar cȝ使用技? 包括时区和国际化的格? 我们q(sh)(x)考察两个日期c?java.sql.Date ?java.util.Date 之间的区?
写文?BR>BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename")));
不管你写倒磁盘,写到|络Q或者写到屏q,都是OuputStream?BR>
Z(jin)保证Java API 文档中文版的译质量QSun 中国技术社Z门开设了(jin)Java API 文档中文版相兌坛。欢q所有正在学?fn)和使用Java技术的人员到该论坛为此ơJava API 文档中文版的译工作提出(zhn)的意见和徏议。Sun 公司有专门的工E师在该论坛回答(zhn)有关Java API 文档中文版的问题Qƈ在最短时间内?zhn)的意见和反馈l我们的译团队。在J2SE API文档(5.0版本)的汉化工作完成之后,Sun 中国技术社开通Java API 文档中文版的打包下蝲服务?/P>
除了(jin)Java API 文档中文版的开攑֤QSun公司也针对近期成Z国技术社区的成员投下一个o(h)人震撼的利多Q凡注册加入中国技术社,卛_免费获得Sun 公司的Java Studio Creator和Java Studio Enterprise的正式版。相关信息敬h访:(x)gceclub.sun.com.cn/download.html?/P>
Sun Java Studio Creator 是第一个用于创建纯 Java 标准兼容代码的可视化开发环境。?Sun Java Studio Creator 可快速、容易地构徏安全、稳定、可伸羃?Java 应用E序。Sun Java Studio Creatorq是一个完整而强大的开?调?部v解决Ҏ(gu)Q它包括 Sun Java Sys-tem Application Server 8 q_版YӞ该Y件是Sun Java 企业pȝ软g中的一个组Ӟ可用作一个目标开发和部vq_。此外,Java Studio Creator q包括Java 2q_标准版Y件开发工具集(J2SE SDK)?/P>
而Sun Java Studio Enterprise 8则是一个强健可靠的企业开发^収ͼ它跨了(jin)整个开发生命周期:(x)x(chng)建、调试、测试、部|?Java 2 Platform Enterprise Edition (J2EE) 应用E序(包括门户lg?Web 服务)q对其进行性能分析。Java Studio Enterprise 8 的优性不仅体现在它是一个开发工具集Q其令h震撼的功能以?qing)提供的服务Q更是大大简化了(jin)日益复杂的Y件编E工作?