首页 新闻 会员 周边

toUpperCase性能问题

0
悬赏园豆:10 [待解决问题]
View Code
StringBuffer upp = new StringBuffer(),
                     low = new StringBuffer();
        
        for(int i = 0; i<=9000000; i++){
            upp.append("AA");
            low.append("aa");
        }
        long Tupp = System.currentTimeMillis();
        upp.toString().toUpperCase();
        System.out.println("UPP:"+(System.currentTimeMillis()-Tupp));
        
        long Tlow = System.currentTimeMillis();
        low.toString().toUpperCase();
        System.out.println("LOW:"+(System.currentTimeMillis()-Tlow));

 

这样执行N次,都是UPP<LOW;

如果把上述的1个A变成a,即:用Aa和aa比较,则UPP>LOW,想知道这是为什么?看toUpperCase源码也没有明白。

爱我所艾的主页 爱我所艾 | 初学一级 | 园豆:192
提问于:2013-04-16 15:56
< >
分享
所有回答(1)
0

你把low写前面,就成了low>upp,LZ你去试试。至于为什么,估计跟VM的运行机制有关。比较字符串不要用这种方法,这样会创建对象的,浪费时间和内存。不知道JAVA应该写,给出.net的写法,LZ可以参考下:

string s1 = "AA";
            string s2 = "aa";
            Console.WriteLine(s1.Equals(s2, StringComparison.CurrentCultureIgnoreCase));

呆呆蚁 | 园豆:231 (菜鸟二级) | 2013-04-16 18:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册