前几天课堂上的一个程序,看了好久始终还是没明白,课堂上老师也测试了很多,今天有时间看,我也来了几个程序测试了一下,但是然而没有发现什么不对,后面只能依靠百度了落,也查了比较久吧,终于还是明白了,今天总结一下。
总结:关于java中的形参问题我总结的就是一句话,在原地址上改动那么则成功改动,否则失败,这个与c里面的类似,c语言中只有当传递以指针形式的时候(也就是传递地址的时候)才能成功修改实参,如果是传递值则不能修改成功,因为作用域的问题,关于c语言的形参是否可以改变实参可以看我之前的那篇博客,
链接;http://blog.csdn.net/zw1996/article/details/51252957;
现在还是回到java吧,对学过c的也学过java的应该总有种感觉,
认为java中的引用于c语言的指针,几乎是个一样的东西,因为引用是就是保存对象地址的,只能通过引用才能访问到对象,
而c语言;指针就是指向一块内存单元的,可以通过指针来修改这个值。是不是十分类似;
但是我要说的是。语法上应该是没区别的,但是在使用的时候要注意它的变化,它其实也只是一个存放于栈中的基础类型;
看代码具体分析吧;
关于String类通过方法传递修改的问题就到这里了,
总之一条就是;
String类要想通过方法调用改变引用指向是不能完成的,(暂时以我的知识);
暂时的问题;
至于能不能加入c语言的思维,又来个引用指向这个引用的地址,来通过地址操作改变引用,而不是直接通过值改变。这个我就不知道了,暂时的一个问题吧?感觉应该不可以吧,
再看看String的兄弟StringBuffer或者StringBulider;
关于StringBuffer的总结就是一条;
如果跟String类那样试图在其他方法中改变StringBuffer引用来达到改变这个方法引用,这个是不能完成的,但是我们可以利用 StringBuffer是个字符串变量来直接改变这个字符串对象是可行的,注意这里引用还是没有变化的。
看完了这两个特殊的类,我们也同样来看下基础的对象吧;
看完这三个例子应该很好的理解了java中形参为引用类型时的问题了啊;
基本的一条;
如果想通过改变形参的引用,使引用类型指向新的对象,来达到改变其实参引用是无法实现的,
要想改变引用s指向的内容,只能使用形参操作对象的地址,来修改这个对象的值,只有这样才能完成修改,至于String类,这个就尴尬了,因为它是字符串常量,其对象是不能被修改的,我们一般说的修改String类都是修改其引用,至于在这里修改是没有用了,所以就尴尬了;
码完;尴尬的是,码博客码到一半寝室突然停电了,黑灯瞎火的盲打也不熟惜,然后就是转移阵地了,搬到傍边的寝室,现在才忙完,散工;