导航:首页 > 编程语言 > java实参改变

java实参改变

发布时间:2022-09-26 07:18:11

1. (java语言) 函数参数使用int[][]类型,为什么改变形参的值,实参也会改变

tmpMatrix 和 inputMatrix 实际指向的是一个堆里的对象a.
所以你要让tmpMatrix指向的对象和inputMatrix不同.
int[][] tmpMatrix = new int[9][9];
然后根据inputMatrix赋一样的值给tmpMatrix

2. JAVA里怎么样在调用方法时同时改变实参的值

使用可变对象,比如List,Map这些。如果传入基本类型或者String这样的不可变对象是没办法的。

3. java如何改变实参

1.这样的方法在Java里永远也实现不了
2.对于基本类型按值传递,对象类型按引用传递
3.Java引用的传递与C++指针不同,指针即地址,而引用是存储指针的变量
这么说你可能还会糊涂,举个例子:
//比如有两个对象:
Integer a=new Integer(1);
Integer b=new Integer(2);
//还有一个方法,类似你上面写的,不同的是这里传递的是对象引用
public void swap(Integer a,Integer b){
Integer c=a;
a=b;
b=c;
}
//如果你调用了swap方法
swap(a,b);
//可能你认为是直接把a,b的引用直接传递给swap方法,其实并非如此
//Java在传递引用时,实际上后台会先复制引用,例如上面就会复制a,b的两个引用a1,b1,然后将a1和b1作为参数传递过去
//执行方法以后,a1指向对象b,b1指向对象a,而引用a和b并没有改变

//对于一个类的私有属性是可以交换的
public class Swap{
private int a;
private int b;

public Swap(int a,int b){
this.a=a;
this.b=b;
}

public void swap(){
int temp=this.a;
this.a=this.b;
this.b=temp;
}

public int getA(){
return a;
}

public int getB(){
return b;
}
}
//////////////////////测试程序
public class TestSwap {
public static void main(String[] args) {
Swap swap=new Swap(1,2);
swap.swap();
System.out.println(swap.getA()+" "+swap.getB());
}

}

4. java中如何使形参改变实参

1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。

5. Java中如何改变参数的值(实现按址传递)

java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清。你的题目本身就有歧义,无法直接针对题目作答(因为java不存在类似c或c++那样的传址)。我从头讲起:
(一)基本数据类型:传值,方法不会改变实参的值。
(二)对象类型参数:传引用,方法体内改变形参引用,不会改变实参的引用,但有可能改变实参对象的属性值。例如
public class TestFun4 {
public static void testStringBuffer(StringBuffer sb){
sb.append("java");//改变了实参的内容
}
public static void main(String[] args) {
StringBuffer sb= new StringBuffer("my ");
new TestFun4().testStringBuffer(sb);
System.out.println("sb="+sb.toString());//内容变化了
}
}

6. java中怎么对实参的值进行修改

这个就看传入的参数是改变地址还是改变地址的值了。
你的change(Object o)方法是把原有的引用指向了一个新的地址,所以该改变只是在该方法内生效。

所谓的对实参的值进行修改其实就是对地址值的修改~

7. Java集合类对象作为实参在方法体内被修改后,它方法体外的自己怎么也被修改了

你纠结的应该是:System.out.println(link.size());//此处结果为0,为什么是0啊?
原因:
当 LinkedList link=new LinkedList();
link.add("111");link.add("222");link.add("333");执行时,
jvm分配了一个内存地址存放的是[111,222,333] 指向的变量 link,(确切的说是变量link指向内存地址)
当 LinkedList linktemp=link; 执行时,jvm又将上一次分配的内存地址 指向了 变量 linktemp,
也就是 俩个不同的变量,俩个不同的引用,指向了同一个内存地址。即,无论操作link,linktemp 的哪一个,对俩个都有影响!

刚才想到,总听说java没有引用传递

LinkedList linklist=new LinkedList();
LinkedList linktemp=link;
System.out.println(linktemp == link ); 输出结果为true 证明,他们是一个内存地址!

我不是什么大神!,如果答的不对请谅解,我只是发表下自己的看法!

8. java编程中怎么使方法中基本数据类型改变时同时改变实参的值

java和c﹢﹢不一样 在c中可以定义同名的局部及全局变量 在java中就不可以 因此你引用是不能成功的 因为在java中的局部变量会被垃圾回收器清理 所以你只能在外部将实参设置成全局 通过在方法内改变形参后再赋值给实参就ok了

9. java中实参传递给形参,实参值会不会改变

形参永远不改变实参。
如果传的是容器如Map、List等,容器本身的指向是不能改变的,但可以改变容器内的内容

阅读全文

与java实参改变相关的资料

热点内容
js项目提成计算器程序员 浏览:940
pdf光子 浏览:832
自拍软件文件夹名称大全 浏览:325
程序员留学移民 浏览:49
梁中间部位箍筋加密区 浏览:117
频谱分析pdf 浏览:750
乐2怎么升级安卓70 浏览:172
java中获取日期 浏览:506
单片机74hc245 浏览:272
美国历史上的总统pdf 浏览:751
程序员脱单实验室靠不靠谱 浏览:460
php中间四位手机号 浏览:871
永旺app怎么样了 浏览:518
压缩空气流量计算软件 浏览:651
智慧聊天app怎么激活 浏览:926
一加换机备份到哪个文件夹 浏览:737
支撑pdf 浏览:418
java空文件夹删除 浏览:589
安卓9跟81有什么区别 浏览:914
n1蓝宝书pdf 浏览:245