public class StackOverFlow {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("A");
al.add("B");
markAsNull(al);
System.out.println("ArrayList elements are "+al);
String str = "Hello";
markStringAsNull(str);
System.out.println("str "+ str);
}
private static void markAsNull(ArrayList<String> str){
str.add("C");
str= null;
}
private static void markStringAsNull(String str){
str = str + "Append me";
str = null;
}
}
ArrayList elements are [A, B, C]
str Hello
在arraylist
的情况下,将检索添加的元素。在String
的情况下,方法调用对所传递的字符串没有影响。JVM到底在做什么?有人能详细解释一下吗?
对于Arraylist字符串对象,将检索添加的元素。对于字符串,方法调用对所传递的字符串没有影响。
当你打电话的时候
markAsNull(ArrayList<String> str)
为al
指向的同一arraylist
创建按名称str
的新引用。当您在str
上add
元素时,它会被添加到同一个对象中。稍后,您将str
放入null
中,但对象添加了新值,并由a1
指向。
当你打电话的时候
markStringAsNull(String str)
{
str = str + "Append me";
// ...
}
行str=str+“append me”;
通过追加给定字符串创建一个新的string
对象,并将其分配给str
。但同样,它只是对实际字符串的引用,而实际字符串现在指向新创建的字符串。(由于不可变)并且原始字符串不变。
问题内容: public class StackOverFlow { public static void main(String[] args) { ArrayList al = new ArrayList (); al.add(“A”); al.add(“B”); markAsNull(al); System.out.println(“ArrayList elements are “+al);
我不懂pyplot。子地块(330 1 i)
问题内容: 我正在尝试了解Python的可变范围方法。在此示例中,为什么能够更改在x内部感知到的值,但不能更改? main() 输出: 问题答案: 一些答案在函数调用的上下文中包含单词。我感到困惑。 Python不复制对象的函数调用中传递过。 功能参数是名称。调用函数时,Python会将这些参数绑定到你传递的任何对象上(通过调用方作用域中的名称)。 对象可以是可变的(如列表)或不可变的(如Pyth
谁能告诉我为什么函数参数不能是?这是函数参数在上声明并在函数返回时被取消分配的原因吗?没有办法保留参数值?只是糊涂了。请澄清。 多谢了。
使用指南 - 统计设置 - 第三方推广管理 - 什么是URL参数? 我们经常可以看到URL后面带有?Par1=xxx&Par2=xxx的类似样式,其中Par1、Par2即为该URL的参数。“?”是参数与URL的链接符,“&”是参数与参数之间的链接符。利用这种方式,我们便可以通过URL来传递信息。 以百度统计中的”指定广告跟踪”功能为例,就是利用在URL中添加指定的参数,实现区分推广页面中的广告信息
问题内容: 这一直使我感到困惑。看起来这样会更好: 比这个: 是否有特定原因? 问题答案: 这是因为任何可迭代对象都可以连接(例如,列表,元组,字典,集合),但是其内容和“连接器” 必须是 字符串。 例如: 使用字符串以外的其他东西会引发以下错误: