String为什么无法修改

String为final方法,无法被继承。
而我碰到了一个问题。

public static void main(String[] args) throws SQLException, ClassNotFoundException, UnsupportedEncodingException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        List<String> fff=new ArrayList<String>();
        fff.add("1234567");
        String a="23";
        a="3432";
        CrackThrea crackThrea=new CrackThrea(a,fff);
        crackThrea.ccc();
        System.out.println(fff);
        System.out.println(a);
    }

      public static class CrackThrea extends Thread{
        private String password;
        private List<String> passwordList;

        public CrackThrea(String password, List<String> passwordList) {
            this.password = password;
            this.passwordList = passwordList;
        }
        public String ccc(){
            passwordList.add("1233");
            password="sdfsdf";
            return null;
        }
    }

一个String,一个list 调用方法修改这两个值,发现list变了,但是String没变,
而上重新给String赋值是可以的,虽然能理解,但是还是会有一点点疑惑。

String对象不可修改指的是对象本身不可修改,而不是引用不可修改。

String a = “a”;

a = “b”;
重新声明了一个String对象为b,然后把这个新对象的引用赋值给变量a。而不是单纯改变值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值