传值or传引用?两段代码说明java高级for循环

String是不可变类,同样不可变的还有BigDecimal

        List<String> sbl = new LinkedList<String>(){{
            add(new String("sdsag"));
        }};
        for(String s: sbl){
            s+="sdf";//String是不可变类,这里s新建实例,赋值成“sdsagsdf”,s不再指向sbl中的元素。
        }
        //sbl中的值不变

        List<StringBuffer> sbl = new LinkedList<StringBuffer>(){{
            add(new StringBuffer("sdsag"));
        }};
        for(StringBuffer s: sbl){
            s.append("sdf");
        }
        //sbl中的值改变

你可能感兴趣的:(java,String)