本篇内容介绍了“java怎么进行值传递和数组传递”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联是一家专注于成都网站制作、成都做网站、外贸营销网站建设与策划设计,杜尔伯特网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:杜尔伯特等地区。杜尔伯特做网站价格咨询:18980820575
public class Test { String str = new String("good"); char[] ch = {'a','b','c'}; int i = 10; public void change(String str,char[] ch,int i){ str = "test ok"; //=new String("test ok") ch[0] = 'g'; i++; } public static void main(String[] args){ Test tt = new Test(); System.out.println(tt.i); System.out.println(tt.str); System.out.println(tt.ch); System.out.println("------------"); tt.change(tt.str,tt.ch,tt.i); System.out.println(tt.i); System.out.println(tt.str); System.out.println(tt.ch); } } 10 good abc ------------ 10 good gbc #此处a->g
str是String类型的引用;i是基本类型变量;ch是数组名,也是数组对象的引用
在change()方法里,str="test ok",是一个新的对象把首地址放在引用变量str上;而ch[0]='g';因为传的是数组的引用,而此时ch[0]='g';是对数组元素的操作,能修改源数组的内容;
i是整型值,只是把值copy了一份给方法,在方法的变化是不改变的源i的。
如果将单个基本类型数组的元素传递给方法,并在方法中对 其进行修改,则在被调用方法结束执行时,该元素中存储的并不是修改后的值,因为这种元素是按值传递,如果传递的是数组的引用,则对数组元素的后续修改可以 在原始数组中反映出来
package com.lifeibigdata.algorithms.blog; /** * Created by lifei on 16/6/22. */ public class Test { String str = new String("good"); char[] ch = {'a','b','c'}; int i = 10; public void change(String str,char ch,int i){ //change()方法里的入参char[] ch变成--------------char ch str = "test ok"; ch = 'g'; this.i = i+1; //this.i = i+1;这里面等号左边的i是属性i,等号右边的i是局部变量(入参里的i) } public static void main(String[] args){ Test tt = new Test(); System.out.println(tt.i); System.out.println(tt.str); System.out.println(tt.ch); System.out.println("------------"); tt.change(tt.str,tt.ch[0],tt.i); //这次传递的是个char值的单个数组元素,按照上面的解析 System.out.println(tt.i); System.out.println(tt.str); System.out.println(tt.ch); } } 10 good abc ------------ 11 good abc
在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数;这时对象和参数中指向是同一个地址,数据共同变化,如果在这个过程中,如果改变了参数中保存的地址,那么对象和参数不再指向同一个地址,如果此时改变参数中地址指向的值,那么对象中的参数将不会改变
“java怎么进行值传递和数组传递”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!