java流的传递方式是_java中数据的传递方式到底是怎样的!
今天早上我了一道有關(guān)java的題。主要考點是考java中值得傳遞方式。
之前我在javaoo里總結(jié)的是:基本數(shù)據(jù)類型中保存的是實際的值,引用數(shù)據(jù)類型保存的是被引用的內(nèi)存地址,那么基本數(shù)據(jù)類型就是按值傳遞,引用數(shù)據(jù)類型就是按地址來傳遞的。(難道我一開始就錯了)
題是真樣的:
1 public classSendValue{2 public String str="6";3 public static voidmain(String[] args) {4 SendValue sv=newSendValue();5 sv.change(sv.str);6 System.out.println(sv.str);7 }8 public voidchange(String str) {9 str="10";10 }11 }
輸出的結(jié)果是:?6
有解釋說:change方法里面是將傳入的參數(shù)修改成10,但是并沒有對SendValue的屬性str就行修改,要修改必須指明this.str="10",所有答案還是6。
還有一題是這樣的:
1 public classExample{2 String str=new String("hello");3 char[]ch={'a','b'};4 public static voidmain(String args[]){5 Example ex=newExample();6 ex.change(ex.str,ex.ch);7 System.out.print(ex.str+" and ");8 System.out.print(ex.ch);9 }10 public void change(String str,charch[]){11 str="test ok";12 ch[0]='c';13 }14 }
輸出的答案是 : ? ? hello and cb;
有的解釋說:String類是final類型的,不能繼承和修改這個類。str=“tesk ok”,其實是隱含的讓Java生成一個新的String對象,那么就與原來的“Hello”沒有任何關(guān)系,當(dāng)函數(shù)結(jié)束,str作用結(jié)束,所以輸出的還是“Hello”。 char ch[] 是傳遞引用,修改了原內(nèi)容。
然后我上網(wǎng)查,java是按值傳遞還是引用傳遞,有的說:
按值傳遞:指的是在方法調(diào)用時,傳遞的參數(shù)是按值的拷貝傳遞。就是說傳遞的是拷貝后的值,與前面那個值無關(guān)了。
引用傳遞:指的是在方法調(diào)用時,傳遞的參數(shù)是按引用進(jìn)行傳遞,其實傳遞的引用的地址,也就是變量所對應(yīng)的內(nèi)存空間的地址。傳遞前后都是同一個引用。
但是又有人說這是不對的,他說Java中只有按值傳遞,沒有按引用傳遞!
各位大神們,給我解釋解釋嘛!
總結(jié)
以上是生活随笔為你收集整理的java流的传递方式是_java中数据的传递方式到底是怎样的!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql的cpu飙升到500_[MyS
- 下一篇: java生产者消费者gui_java理论