相关疑难解决方法(0)

Java永远不会通过引用传递,对吗?......对吗?

可能重复:
Java是"传递引用"吗?

我今天发现了一种不寻常的Java方法:

private void addShortenedName(ArrayList<String> voiceSetList, String vsName)
{
     if (null == vsName)
       vsName = "";
     else
       vsName = vsName.trim();
     String shortenedVoiceSetName = vsName.substring(0, Math.min(8, vsName.length()));
     //SCR10638 - Prevent export of empty rows.
     if (shortenedVoiceSetName.length() > 0)
     {
       if (!voiceSetList.contains("#" + shortenedVoiceSetName))
         voiceSetList.add("#" + shortenedVoiceSetName);
     }
}
Run Code Online (Sandbox Code Playgroud)

根据我读过的有关Java传递变量,复杂对象的行为的一切,这段代码应该什么都不做.所以嗯......我在这里错过了一些东西吗?是否有一些微妙的东西丢失在我身上,或者这些代码是否属于thedailywtf?

java pass-by-reference pass-by-value

45
推荐指数
3
解决办法
2万
查看次数

Java如何处理ArrayList的refrerences和赋值?

我主要用C编写,但是在这个项目中使用Java.我想知道Java在这里做了什么.

ArrayList<Integer> prevRow, currRow;
currRow = new ArrayList<Integer>();
for(i =0; i < numRows; i++){
    prevRow = currRow;
    currRow.clear();
    currRow.addAll(aBunchOfItems);
}
Run Code Online (Sandbox Code Playgroud)

prevRow = currRow行是复制列表还是prevRow现在指向与currRow相同的列表?如果prevRow指向与currRow相同的列表,我应该创建一个新的ArrayList而不是清除....

private ArrayList<Integer> someFunction(ArrayList<Integer> l){
    Collections.sort(l);
    return l;
}

main(){
    ArrayList<Integer> list = new ArrayList<Integer>(Integer(3), Integer(2), Integer(1));

    list = someFunction(list);  //Option 1
    someFunction(list);  //Option 2
}
Run Code Online (Sandbox Code Playgroud)

在类似的问题中,选项1和选项2在上面的代码中做了同样的事情吗?

谢谢-

乔纳森

java arraylist

0
推荐指数
1
解决办法
3418
查看次数