A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.*;
class a1
{
        public static void main(String[] args)
        {
                StringBuilder sb=new StringBuilder();
                sb=null;
                HashMap<Integer,String> hm=new HashMap<Integer,String>();
                hm.put(1,"一");
                hm.put(2,"二");
                hm.put(3,"三");
                hm.put(4,"四");
                hm.put(5,"五");
                hm.put(6,"六");
                hm.put(7,"七");
                hm.put(8,"八");
                hm.put(9,"九");
                hm.put(0,"零");
                Set<Integer> set=hm.keySet();
                Iterator<Integer> it=set.iterator();
                while (it.hasNext())
                {
                        sb.append(String.valueOf(hm.get(it.next())));
                }
                System.out.println(sb);
        }
}

14 个回复

倒序浏览
你把sb指向了null   StringBuilder是在原有的基础上添加,  所以后面的添加无意义
回复 使用道具 举报
main函数第2行:sb=null,为什么这样写?
回复 使用道具 举报
引用类型不应该初始化吗
回复 使用道具 举报
StringBuilder sb=new StringBuilder();
                sb=null;
这两句运行之后
sb也就不再是StringBuilder 的应用类型了吧
它已经与对象没关系了
回复 使用道具 举报
尘埃123 发表于 2015-5-3 09:31
引用类型不应该初始化吗

  初始化这样写:         
    StringBuilder sb=null;
sb=new StringBuilder();
回复 使用道具 举报
对对,受教了,谢了各位
回复 使用道具 举报
           sb=null;都指向空了你还想要什么???
回复 使用道具 举报
定义了一个无效的缓冲区
回复 使用道具 举报
如果把sb=null那行去掉,就可以了。StringBuilder方法在API中是被final修饰的。不可以被二次赋值。但是对于sb对象,还是可以添加值的。但你初始化的时候,已经把final的sb赋了空值,那他一辈子就都是空了。
回复 使用道具 举报
1017161726 发表于 2015-5-3 11:13
如果把sb=null那行去掉,就可以了。StringBuilder方法在API中是被final修饰的。不可以被二次赋值。但是对于 ...

厉害 ,学习了。。。。
回复 使用道具 举报
sb = null;sb不再指向任何对象,这时候再调用方法的话就会抛出NullPointerException
回复 使用道具 举报
先是定义了一个新的缓冲区,接着又指向null,这个缓冲区就初始化为null了,所以会出现空指针异常。
回复 使用道具 举报
sb = null去掉就可以了
回复 使用道具 举报
学习了。。现在还没学到呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马