一道java的基础题,请大侠们帮忙,多谢
一道java的基础题,请大侠们帮忙,谢谢10、String或StringBuffer类的对象在调用以下哪个方法时其自身会发生更
一道java的基础题,请大侠们帮忙,谢谢 10、String或StringBuffer类的对象在调用以下哪个方法时其自身会发生更改? A)String类的charAt()方法。 B)String类的toUpperCase()方法。 C)String类的replace()方法。 D)StringBuffer类的reverse ()方法。 E)StringBuffer类的length ()方法。[解决办法] 帮你顶起,这好像是高级java的知识,我晕死了,不懂啊。[解决办法]
探讨 引用: 1.String实例的不可改变,并非仅仅因为String是final类 2.实际上,如果使用反射的话,还是可以改变String的内容。 就题目来说,毫无悬念是选 D 选D没错[解决办法] 实例不可更改的充分必要条件:
1.类必须定义为final,否则如果混进来一个子类,然后子类定义的变量被修改了,这个怎么算?
2.类的所有变量必须不能是public的,如果是非系统类,则必须全部是private,以防止变量直接被修改
3.类不得对外提供会影响类的变量值的方法,比如set方法。如果有的话,不得对外开放。类似于第2条,如果是系统类,这些方法不能是public,如果是非系统类,则必须是private
4.如果使用反射语法,则以上条件统统作废....
总结: 在不使用反射的情况下,必须满足1,2,3条,一个类的实例的内容才是不可改变的
[解决办法] Strings are constant; their values cannot be changed after they
are created. String buffers support mutable strings.