锁定老帖子 主题:Java语言的新特性,我们用了多少?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-14
floating 写道 我觉得
引用 8。新的格式化方法
应该也使用的比较多才对啊。例如:我们在1.4版本上完成一个数字格式化输出的时候,需要: double x = 10000.0 / 3.0; NumberFormat formatter = NumberFormat.getNumberInstance(); formatter.setMaximumFractionDigits(4); formatter.setMinimumIntegerDigits(6); String s = formatter.format(x); // the string "003,333.3333" 在1.5下面只需要: double x = 10000.0 / 3.0; String s = String.format("%,012.4f",x); 就可以实现同样的效果。 另:发现一个奇怪的bug。我如果写 引用 【code】 double x = 10000.0 / 3.0; String s = String.format("%,012.4f",x); 【/code】 这.. NumberFormat nf = new DecimalFormat("0000.#####"); nf.format(xxxx); 不行? |
|
返回顶楼 | |
发表时间:2006-11-14
wolfsquare 写道 这.. NumberFormat nf = new DecimalFormat("0000.#####"); nf.format(xxxx); 不行? 如果改成 NumberFormat nf = new DecimalFormat("000,000.####"); 是可以的。但是这个例子是为了说明1.5以前format的局限性啊:就是只能一个一个的按照类型来格式化。不知道wolfsquare换一种写法的目的是什么?是不是说比我提供的例子少了一行代码? 那再举个复杂点儿,看上去就比较清楚的例子: 1.4下面: double x = 10000.0 / 3.0; final String str1 = "This is a example for JDK5 format feature: "; final String str2 = "computerized scientific notation: "; final String a = "a"; final String b = "b"; final String c = "c"; final String d = "d"; NumberFormat nf = new DecimalFormat("000,000.####"); String str3 = nf.format(x); NumberFormat nef = new DecimalFormat("E"); String str4 = nef.format(x); StringBuffer buf = new StringBuffer(); buf.append(str1) .append("\nnumber: ") .append(str3) .append("\n") .append(str2) .append(str4) .append("\nstring: ") .append(" ") .append(d) .append(" ") .append(c) .append(" ") .append(b) .append(" ") .append(a); System.out.println(buf.toString()); 5下面: double x = 10000.0 / 3.0; final String str1 = "This is a example for JDK5 format feature: "; final String str2 = "computerized scientific notation: "; final String a = "a"; final String b = "b"; final String c = "c"; final String d = "d"; String out = String.format("%6$s\nnumber: %1$,012.4f\n%7$s%1$e\nstring: %5$2s %4$2s %3$2s %2$2s",x,a,b,c,d,str1,str2); System.out.println( out ); |
|
返回顶楼 | |
发表时间:2006-11-14
我们所有开发的系统都使用1.4的语法。但会在jdk1.5上进行测试。
我觉得除了范型和增强for循环有一点作用外,其它几项的必要性都不大。 为了保证与1.4的兼容性,我们是一点也没有用1.5的新特性,了解即可。 |
|
返回顶楼 | |
发表时间:2006-11-14
together 写道 我们所有开发的系统都使用1.4的语法。但会在jdk1.5上进行测试。
我觉得除了范型和增强for循环有一点作用外,其它几项的必要性都不大。 为了保证与1.4的兼容性,我们是一点也没有用1.5的新特性,了解即可。 jdk1.5不兼容1.4吗?我所知的好像只有jakarta common里面的enum要注意。还有其他的吗,我挺想知道的,给个线索。 |
|
返回顶楼 | |
发表时间:2006-11-14
sorphi 写道 together 写道 我们所有开发的系统都使用1.4的语法。但会在jdk1.5上进行测试。
我觉得除了范型和增强for循环有一点作用外,其它几项的必要性都不大。 为了保证与1.4的兼容性,我们是一点也没有用1.5的新特性,了解即可。 jdk1.5不兼容1.4吗?我所知的好像只有jakarta common里面的enum要注意。还有其他的吗,我挺想知道的,给个线索。 最不兼容的是范型语法。 偶的项目里面把1.5的新特性全用上了,1.6等release吧 |
|
返回顶楼 | |
发表时间:2006-11-14
我猜很多人assert都没用吧
|
|
返回顶楼 | |
发表时间:2006-11-14
1.4是没有变长参数的.
如果可以象C一样使用类似printf(...)的方式来调用还是很方便的 |
|
返回顶楼 | |
发表时间:2006-11-14
wolfquare 写道 如果可以象C一样使用类似printf(...)的方式来调用还是很方便的 在jdk5中的确有printf的,当然format本身已经非常接近C里面的printf了,而且在国际化方面比C里面的printf还要强(很久没有关心C++的发展了,也许在C++新的标准里也考虑了国际化的问题。) |
|
返回顶楼 | |
发表时间:2006-11-14
我除了静态引入外别的都用,Java 5的内存模型作了重大改进,这两天正在猛看,引进了很多新概念,好多地方看不懂。
对Java 6我最感兴趣的是脚本引擎的新框架和Compiler API,这两个新特性为写Adaptive System打开了大门。 |
|
返回顶楼 | |
发表时间:2006-11-14
楼上给的例子在1.5下面用java.text.MessageFormat来实现跟1.5里的printf在代码行上也差不了多少行,当然printf是有它的优势的。只是1.5的新特性并没有想象中那么美。
|
|
返回顶楼 | |