论坛首页 Java企业应用论坛

Java语言的新特性,我们用了多少?

浏览 32113 次
精华帖 (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);
不行?

0 请登录后投票
   发表时间: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 );
0 请登录后投票
   发表时间:2006-11-14  
我们所有开发的系统都使用1.4的语法。但会在jdk1.5上进行测试。
我觉得除了范型和增强for循环有一点作用外,其它几项的必要性都不大。

为了保证与1.4的兼容性,我们是一点也没有用1.5的新特性,了解即可。
0 请登录后投票
   发表时间:2006-11-14  
together 写道
我们所有开发的系统都使用1.4的语法。但会在jdk1.5上进行测试。
我觉得除了范型和增强for循环有一点作用外,其它几项的必要性都不大。

为了保证与1.4的兼容性,我们是一点也没有用1.5的新特性,了解即可。


jdk1.5不兼容1.4吗?我所知的好像只有jakarta common里面的enum要注意。还有其他的吗,我挺想知道的,给个线索。
0 请登录后投票
   发表时间: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吧
0 请登录后投票
   发表时间:2006-11-14  
我猜很多人assert都没用吧
0 请登录后投票
   发表时间:2006-11-14  
1.4是没有变长参数的.
如果可以象C一样使用类似printf(...)的方式来调用还是很方便的
0 请登录后投票
   发表时间:2006-11-14  
wolfquare 写道

如果可以象C一样使用类似printf(...)的方式来调用还是很方便的


在jdk5中的确有printf的,当然format本身已经非常接近C里面的printf了,而且在国际化方面比C里面的printf还要强(很久没有关心C++的发展了,也许在C++新的标准里也考虑了国际化的问题。)
0 请登录后投票
   发表时间:2006-11-14  
我除了静态引入外别的都用,Java 5的内存模型作了重大改进,这两天正在猛看,引进了很多新概念,好多地方看不懂。

对Java 6我最感兴趣的是脚本引擎的新框架和Compiler API,这两个新特性为写Adaptive System打开了大门。




0 请登录后投票
   发表时间:2006-11-14  
楼上给的例子在1.5下面用java.text.MessageFormat来实现跟1.5里的printf在代码行上也差不了多少行,当然printf是有它的优势的。只是1.5的新特性并没有想象中那么美。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics