中易网

java值传递和引用传递

答案:3  悬赏:0  
解决时间 2021-04-27 22:00
  • 提问者网友:独菊痴梦
  • 2021-04-27 06:05
).out.put(".containsKey(".println(", "
new class2(hashMap);
hashMap;
}
public class1(){
hashMap = new HashMap
public class class2 extends Thread{

private Map<.util,一切传递皆值传递.put("
if(hashMap;););)){
System.put("; TODO 自动生成的方法存根
new class1();
this;b" hashMap;asd"123"); hashMap,我是不是很理解.Map;4365"String;
}
public void run(){
hashMap,".out;;
hashMap; hashMap){
this;a",如果从class1中传到class2是hashMap的地址.start();d");true"String,String>
}
}
按照书上所说.put("String;
}
}
}

import java;c"242"
public static void main(String[] args) {
/
this;false"),Java不存在引用传递;d";/.hashMap = hashMap,String>,String>;
}
public void run(){
hashMap;

public class2(Map<(), ".start().println("
}else{
System, "public class class1 extends Thread{
public Map<
最佳答案
  • 二级知识专家网友:输掉的尊严
  • 2021-04-27 06:53
new class2(hashMap);

这段代码之后Thread.sleep(1000L);
给点时间让class2的线程跑完
全部回答
  • 1楼网友:兮沫♡晨曦
  • 2021-04-27 09:35
这个结果在方法结束后被保留了下来,实际参数是对象(或数组),是两个不同的存储单元值传递,这时实际参数与形式参数指向同一个地址,实际参数把它的值传递给对应的形式参数,所以方法执行中形式参数值的改变不影响实际参数的值:方法调用时。方法调用时:(形式参数类型是引用数据类型参数):也称为传地址。 引用传递,对形式参数的操作实际上就是对实际参数的操作:(形式参数类型是基本数据类型),在方法执行中,形式参数只是用实际参数的值初始化自己的存储单元内容。 满意请采纳,所以方法执行中形式参数的改变将会影响实际参数
  • 2楼网友:心与口不同
  • 2021-04-27 08:29
这是个关于栈内存和堆内存的问题 list list = new arraylist(); 这句执行完以后实际在栈内存中产生一个list变量,在堆内存中产生一个arraylist的对象,list变量的值实际上是堆内存arraylist的地址,java中虽然没有指针的概念,这个叫引用,为了便于理解也可以想象成list指向arraylist 在程序执行了test2(list);之后,实际上在栈内存中又产生了一个新的变量,该变量是传入参数list的复制,这时候你可以理解成在栈内存中存在两个变量,一个是main方法中定义的list变量,一个是test2方法中定义的list变量的复制,两个变量都指向堆内存中存在的arraylist对象, 然后在tese2()方法中你执行 list=null;实际上只是改变了在test2中生成的list变量复制的值,list变量的值实际上并没有发生改变,这样解释不知道对你有没有帮助,祝成功^_^
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息