- 浏览: 184461 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (103)
- Java综合 (19)
- java模式 (1)
- java 包详解 (8)
- 需要阅读的书目 (1)
- Json (1)
- MySQL (2)
- zkoss (2)
- svn (1)
- JavaScript (1)
- html (1)
- 试题集锦 (6)
- 试题集锦_poj (1)
- Vim 操作 (2)
- Linux 操作 (5)
- NS2 学习 (2)
- 网络 (4)
- c/c++ (7)
- WNS - Wired Network Simulator (1)
- 网络信息体系结构 (16)
- MIPS (1)
- Java图形化编程 (2)
- 数据结构 (1)
- 数学 (3)
- 爬虫 (1)
- 搜索引擎 (1)
- NetFPGA (1)
- Directshow (1)
- 小软件 (2)
- FFMPEG (1)
- Windows Socket 网络编程 (5)
- Git (1)
- IntelliJ IDEA (0)
- Plone (1)
- Python (1)
最新评论
-
不要叫我杨过:
受教了,高手
Heritrix架构分析 -
springaop_springmvc:
apache lucene开源框架demo使用实例教程源代码下 ...
Lucene 3.0.2 使用入门 -
zxw961346704:
值得学习的算法
Java 计算器 -
medicine:
Thread.sleep(1000); 会使线程进入 TIM ...
Java.lang.Thread 和 Java.lang.ThreadGroup -
tangzlboy:
嗯,不错!收藏。
Java 入门
(持续更新中。。。)
1. Calendar -- set() add() roll()
(1)对于某些特别时间的解释可能会有某些歧义,可以用下列方式解决:
23:59 是一天中的最后一分钟,而 00:00 是下一天的第一分钟。因此,1999 年 12 月 31 日的 23:59 < 2000 年 1 月 1 日的 00:00。
尽管从历史上看不够精确,但午夜也属于 "am",,中午属于 "pm",所以在同一天,12:00 am ( 午夜 ) < 12:01 am,12:00 pm ( 中午 ) < 12:01 pm。
----------------------- set() -----------------------
set(f, value) 将日历字段 f 更改为 value。此外,它设置了一个内部成员变量,以指示日历字段 f 已经被更改。尽管日历字段 f 是立即更改的,但是直到下次调用 get()、getTime()、getTimeInMillis()、add() 或 roll() 时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调用 set() 不会触发多次不必要的计算。使用 set() 更改日历字段的结果是,其他日历字段也可能发生更改,这取决于日历字段、日历字段值和日历系统。此外,在重新计算日历字段之后,get(f) 没必要通过调用 set 方法返回 value 集合。具体细节是通过具体的日历类确定的。
----------------------- add() -----------------------
add() 有两条规则:
Add 规则 1。调用后 f 字段的值减去调用前 f 字段的值等于 delta,以字段 f 中发生的任何溢出为模。溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,并将字段值调整回其范围内。
Add 规则 2。如果期望某一个更小的字段是不变的,但让它等于以前的值是不可能的,因为在字段 f 发生更改之后,或者在出现其他约束之后,比如时区偏移量发生更改,它的最大值和最小值也在发生更改,然后它的值被调整为尽量接近于所期望的值。更小的字段表示一个更小的时间单元。HOUR 是一个比 DAY_OF_MONTH 小的字段。对于不期望是不变字段的更小字段,无需进行任何调整。日历系统会确定期望不变的那些字段。
Calendar cal1 = Calendar.getInstance();
cal1.set(2000, 7, 31, 0, 0 , 0); //2000-8-31
cal1.add(Calendar.MONTH, 1); //2000-9-31 => 2000-10-1, 对吗?
System.out.println(cal1.getTime()); //结果是 2000-9-30
----------------------- roll() -----------------------
Roll() 的规则只有一条:
当被修改的字段超出它可以的范围时,那么比它大的字段不会被修正。
2.DecimalFormat -> NumberFormat -> Format
在Java中,DecimalFormat类为格式化输入输出提供了比C/C++更加强大的面向对象和国际化形式。DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。
DecimalFormat 包含一个 模式 和一组 符号。
模式
DecimalFormat 模式具有下列语法:
模式:
正数模式
正数模式;负数模式
正数模式:
前缀opt 数字后缀opt
负数模式:
前缀opt 数字后缀opt
前缀:
除 \uFFFE、\uFFFF 和特殊字符以外的所有 Unicode 字符
后缀:
除 \uFFFE、\uFFFF 和特殊字符以外的所有 Unicode 字符
数字:
整数 指数opt
整数.小数 指数opt
整数:
最小整数
#
# 整数
# , 整数
最小整数:
0
0 最小整数
0 , 最小整数
小数:
最小小数opt 可选小数opt
最小小数:
0 最小小数opt
可选小数:
# 可选小数opt
指数:
E 最小指数
最小指数:
0 最小指数opt
舍入:
DecimalFormat 提供 RoundingMode 中定义的舍入模式进行格式化。默认情况下,它使用 RoundingMode.HALF_EVEN。
同步:
DecimalFormat 通常不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问某个格式,则必须保持外部同步。
以下是使用了其中部分模式的例子。
结果:
123.13
-0,123.7
1.2378E2
27.78%
277.8‰
¥277,845,675
$277,845,675
75.00 m/s
###75.00###
15 o'clock
3.
4.
5.
6.
7.
8.
9.
10.
1. Calendar -- set() add() roll()
(1)对于某些特别时间的解释可能会有某些歧义,可以用下列方式解决:
23:59 是一天中的最后一分钟,而 00:00 是下一天的第一分钟。因此,1999 年 12 月 31 日的 23:59 < 2000 年 1 月 1 日的 00:00。
尽管从历史上看不够精确,但午夜也属于 "am",,中午属于 "pm",所以在同一天,12:00 am ( 午夜 ) < 12:01 am,12:00 pm ( 中午 ) < 12:01 pm。
----------------------- set() -----------------------
set(f, value) 将日历字段 f 更改为 value。此外,它设置了一个内部成员变量,以指示日历字段 f 已经被更改。尽管日历字段 f 是立即更改的,但是直到下次调用 get()、getTime()、getTimeInMillis()、add() 或 roll() 时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调用 set() 不会触发多次不必要的计算。使用 set() 更改日历字段的结果是,其他日历字段也可能发生更改,这取决于日历字段、日历字段值和日历系统。此外,在重新计算日历字段之后,get(f) 没必要通过调用 set 方法返回 value 集合。具体细节是通过具体的日历类确定的。
----------------------- add() -----------------------
add() 有两条规则:
Add 规则 1。调用后 f 字段的值减去调用前 f 字段的值等于 delta,以字段 f 中发生的任何溢出为模。溢出发生在字段值超出其范围时,结果,下一个更大的字段会递增或递减,并将字段值调整回其范围内。
Add 规则 2。如果期望某一个更小的字段是不变的,但让它等于以前的值是不可能的,因为在字段 f 发生更改之后,或者在出现其他约束之后,比如时区偏移量发生更改,它的最大值和最小值也在发生更改,然后它的值被调整为尽量接近于所期望的值。更小的字段表示一个更小的时间单元。HOUR 是一个比 DAY_OF_MONTH 小的字段。对于不期望是不变字段的更小字段,无需进行任何调整。日历系统会确定期望不变的那些字段。
Calendar cal1 = Calendar.getInstance();
cal1.set(2000, 7, 31, 0, 0 , 0); //2000-8-31
cal1.add(Calendar.MONTH, 1); //2000-9-31 => 2000-10-1, 对吗?
System.out.println(cal1.getTime()); //结果是 2000-9-30
----------------------- roll() -----------------------
Roll() 的规则只有一条:
当被修改的字段超出它可以的范围时,那么比它大的字段不会被修正。
2.DecimalFormat -> NumberFormat -> Format
在Java中,DecimalFormat类为格式化输入输出提供了比C/C++更加强大的面向对象和国际化形式。DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。
DecimalFormat 包含一个 模式 和一组 符号。
模式
DecimalFormat 模式具有下列语法:
模式:
正数模式
正数模式;负数模式
正数模式:
前缀opt 数字后缀opt
负数模式:
前缀opt 数字后缀opt
前缀:
除 \uFFFE、\uFFFF 和特殊字符以外的所有 Unicode 字符
后缀:
除 \uFFFE、\uFFFF 和特殊字符以外的所有 Unicode 字符
数字:
整数 指数opt
整数.小数 指数opt
整数:
最小整数
#
# 整数
# , 整数
最小整数:
0
0 最小整数
0 , 最小整数
小数:
最小小数opt 可选小数opt
最小小数:
0 最小小数opt
可选小数:
# 可选小数opt
指数:
E 最小指数
最小指数:
0 最小指数opt
舍入:
DecimalFormat 提供 RoundingMode 中定义的舍入模式进行格式化。默认情况下,它使用 RoundingMode.HALF_EVEN。
同步:
DecimalFormat 通常不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问某个格式,则必须保持外部同步。
符号 | 位置 | 国际化? | 含义 |
0 | 数字 | 是 | 阿拉伯数字,如果不存在则显示为 0 |
# | 数字 | 是 | 阿拉伯数字,如果不存在则不显示 |
. | 数字 | 是 | 小数分隔符或货币小数分隔符 |
- | 数字 | 是 | 减号 |
, | 数字 | 是 | 分组分隔符 |
E | 数字 | 是 | 分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。 |
; | 子模式边界 | 是 | 分隔正数和负数子模式 |
% | 前缀或后缀 | 是 | 乘以 100 并显示为百分数 |
\u2030 | 前缀或后缀 | 是 | 乘以 1000 并显示为千分数 |
¤ (\u00A4) | 前缀或后缀 | 否 | 货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符。 |
' | 前缀或后缀 | 否 | 用于在前缀或或后缀中为特殊字符加引号,例如 "'#'#" 将 123 格式化为 "#123"。要创建单引号本身,请连续使用两个单引号:"# o''clock"。 |
以下是使用了其中部分模式的例子。
package com.java.text; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.NumberFormat; import java.util.Locale; public class NUMBERFORMAT { public static void main(String[] args) { /* double input = 1234.5678; // NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.CHINA); // NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.JAPAN); // NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.UK); NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.US); String result = currencyFormat.format(input); System.out.println(result);*/ /* double input = 0.567878; NumberFormat percentFormat = NumberFormat.getPercentInstance(Locale.CHINA); percentFormat.setMinimumFractionDigits(3); percentFormat.setMaximumFractionDigits(4); String result = percentFormat.format(input); System.out.println(result);*/ String pattern = "#,###.0#";//比较常用的数字格式输出. 如果整数部分不够4位,则不显示。小数部分如果不够2位,则不显示。 DecimalFormat decimalFormat = new DecimalFormat(pattern); double input = 123.127; String result = decimalFormat.format(input); System.out.println(result); pattern = "0,000.0#";//比较常用的数字格式输出. 如果整数部分不够4位,则显示为0.小数部分如果不够2位,则不显示 decimalFormat.applyPattern(pattern); input = -123.7; result = decimalFormat.format(input); System.out.println(result); pattern = "0.000E0#";//若要明确显示两位指数,则改成0.000E00 decimalFormat.applyPattern(pattern); input = 123.78; result = decimalFormat.format(input); System.out.println(result); pattern = "#0.##%";//百分数 decimalFormat.applyPattern(pattern); input = 0.2778; result = decimalFormat.format(input); System.out.println(result); pattern = "#0.##\u2030";//千分数 decimalFormat.applyPattern(pattern); input = 0.2778; result = decimalFormat.format(input); System.out.println(result); pattern = "\u00A4###,###,000.##";//货币 decimalFormat.applyPattern(pattern); input = 277845675; result = decimalFormat.format(input); System.out.println(result); decimalFormat = new DecimalFormat(pattern, new DecimalFormatSymbols(Locale.US));//改变环境 input = 277845675; result = decimalFormat.format(input); System.out.println(result); pattern = "###.00 m/s";//前缀或者后缀 decimalFormat.applyPattern(pattern); input = 75; result = decimalFormat.format(input); System.out.println(result); pattern = "'###'###.00'###'";//特殊的前缀或者后缀(1特殊字符 2单引号本身) decimalFormat.applyPattern(pattern); input = 75; result = decimalFormat.format(input); System.out.println(result); pattern = "00 o''clock";//特殊的前缀或者后缀(1特殊字符 2单引号本身) decimalFormat.applyPattern(pattern); input = 15; result = decimalFormat.format(input); System.out.println(result); } }
结果:
123.13
-0,123.7
1.2378E2
27.78%
277.8‰
¥277,845,675
$277,845,675
75.00 m/s
###75.00###
15 o'clock
3.
4.
5.
6.
7.
8.
9.
10.
发表评论
-
applet 您的安全设置已阻止本地应用程序运行
2013-08-23 19:13 1781控制面板中把JAVA的安全设置调至最低,然后重启浏览器。 -
Failed to create the Java Virtual Machine
2010-10-31 11:14 1342今天启动Eclipse,告诉我“Failed to creat ... -
udp sender 精确到毫秒
2010-10-22 20:14 12751。源文件。 package sender; impor ... -
Java实现的9种排序方法
2010-10-22 14:46 1044详见代码。 package com.java.sort; ... -
Java的System.getProperty()方法可以获取的值
2010-09-29 16:14 921ava的System.getProperty()方法可以获取的 ... -
Java 执行系统文件
2010-09-29 14:59 1021以下两个事例是执行Windows下的命令或者可执行文件。 ... -
Java access control
2010-08-19 18:31 901Java中有4个访问级别(不同于C或者C++的3个)。但规则同 ... -
Java面试题
2010-08-08 18:39 856最近在网上看到很多Java ... -
Java 入门
2010-08-06 16:59 1830(转载 IBM DeveloperWorks) ... -
Java中的深拷贝与浅拷贝
2010-08-06 06:32 958在Java中,一个重要的,而且是每个类都有的方法,clone( ... -
Java 容器类
2010-08-06 05:05 856Java功能丰富的集 ... -
java 解惑 1
2010-08-05 22:06 1025_1.java package itepub.net._201 ... -
java5 新特性
2010-08-05 19:31 38331.静态导入方法 package c ... -
Comparator and Comparable in Java
2010-08-05 19:10 9511. java.lang.Comparable java ... -
Java中 synchronize、wait和notify3
2010-08-05 19:07 901package com.java.lang.thread. ... -
Java中 synchronize、wait和notify2
2010-08-05 19:06 1562有一个生产者消费者实例,修改了一下,觉得还行,javaeye上 ... -
Java中 synchronize、wait和notify
2010-08-05 18:53 2332认识Java一段时间了了,到目前为止还没有好好认识一下其中的s ... -
Java中的String类
2010-08-05 18:42 10411. 正像很多人所说的那样,equals 和 == 是完全两个 ...
相关推荐
Java 中时间操作函数 Java 中对于时间操作的一些函数,应该在实际项目中经常会用到。下面将对其中的一些函数进行详细的介绍。 计算某一月份的最大天数 在 Java 中,可以使用 `Calendar` 对象来计算某一月份的最大...
在Java中调用SO库的函数,需要以下步骤: 1. **创建JNI头文件**:使用`javah`工具,根据Java中的本地方法声明生成对应的C/C++头文件,其中包含了JNI函数原型。 2. **编写本地代码**:根据生成的头文件,使用C/C++...
1. 参数类型匹配:确保Java中的参数类型与Oracle存储过程或函数中的参数类型一致,否则可能导致转换异常。 2. 注意游标处理:有些存储过程可能返回游标,需要特别处理。 3. 事务管理:根据业务需求,可能需要手动...
在Java编程语言中,开发一个简单的函数计算器是一个基础但实用的练习,它可以加深对编程概念的理解,特别是关于数学运算和函数的应用。这个计算器主要是为了执行基本的数学函数,例如计算一个数的平方或立方。接下来...
在Java编程语言中,`eval`函数通常与JavaScript关联,因为JavaScript有一个内置的`eval`函数,它能够解析并执行一个字符串作为JavaScript代码。然而,Java本身并不直接提供类似的功能。`eval`函数在Java中并不是标准...
在函数中,可能会遇到运行时错误,Java通过异常处理机制来捕获并处理这些错误。`try-catch-finally`块是处理异常的关键结构。 7. **访问修饰符**: 除了`public`,还有`private`, `protected`和默认(无修饰符)...
根据给定的文件信息,以下是对Java日期类函数方法的详细整理与解释: ### Java日期类函数方法概览 在Java中,处理日期和时间主要依赖于`java.util.Date`、`java.text.SimpleDateFormat`、`java.sql.Date`、`java....
在Java中,函数重载是一种非常有用的功能,允许我们在同一个类中定义多个同名函数,但要求这些函数的参数列表不同(包括参数的数量、顺序或类型)。这种机制使得程序设计更加灵活。 - **重载的概念**:在一个类中...
在使用 Java 中随机函数时,需要注意以下几点: 1. 随机种子:在使用 java.util.Random 类时,需要注意随机种子的设置,否则可能会出现重复的随机数。 2. 随机数分布:不同的随机函数可能会生成不同的随机数分布,...
8. **异常处理**:函数中可能会涉及到异常的抛出和捕获,这是Java编程中重要的错误处理机制。 9. **函数的最佳实践**:可能还涵盖了如何编写清晰、高效的函数,比如避免大函数,保持单一职责,以及适当使用注释等。...
但是,需要注意的是,递归函数调用,即函数在其定义中调用自己的情况,必须确保存在一个明确的终止条件,否则会导致无限循环,如 `FactorialTest.java` 示例中可能涉及到的。 函数重载(Overload)是Java中一个重要...
本文将详细介绍一个Java函数,用于解决Java应用程序中的中文乱码问题。 #### 二、乱码产生的原因 在探讨解决方案之前,我们先来了解一下中文乱码产生的原因。中文字符属于多字节字符集,常见的有GBK、GB2312、UTF-...
本文将深入探讨如何在Java中通过JNI调用C语言函数,为初学者提供一个详尽的实例教程。 1. **Java Native Interface (JNI)** JNI是Java平台标准的一部分,它为Java程序员提供了一个接口,可以编写本地方法(即C或...
通过JNI,Java程序能够调用本地库中的函数,同时也能使本地代码调用Java方法。这种双向的互操作性极大扩展了Java的使用范围,使得开发者能够在保持Java代码的优势的同时,充分利用底层语言的强大功能。 #### 实现...
2. **异常处理**:虽然当前函数处理了`IOException`,但在实际应用中可能还需要考虑更全面的异常情况,如权限问题等。 3. **性能考量**:对于大文件,使用`StringBuilder`代替`StringBuffer`在单线程环境中可以提高...
在Java编程中,有时我们需要对数据库查询结果进行分页显示,传统的MySQL数据库中,我们通常会使用`LIMIT`和`OFFSET`子句来实现这一功能。然而,当数据量庞大时,这种做法可能会导致性能问题,因为`OFFSET`在处理大量...
在Android Studio中,你需要创建一个新的Java类,并在其中定义Unity需要调用的函数。例如: ```java public class UnityPlayerActivity extends Activity { static { System.loadLibrary("unity-android-jnifuncs...
Java函数速查HTML版是一个非常实用的资源,它包含了Java编程语言中大量核心函数和类的详细信息,便于开发者在编程过程中快速查找和参考。这个HTML版本尤其方便,因为可以在网页浏览器中直接浏览,无需安装额外软件,...
- 在`processCurrentPermutation`函数中,可以使用自定义的Hash函数将当前排列转换为一个键,并存入哈希表(如HashMap)。 - 如果发现哈希表中已有相同的键,则说明已生成过该排列,可以直接跳过;否则,将该排列...
请注意,上述代码仅为示例,实际应用中需根据具体Java类和方法进行调整。同时,确保Delphi程序和Java库在同一运行环境中,例如都使用32位或64位版本。 总的来说,Delphi调用Java函数涉及JNI接口、DLL编程以及数据...