值传递
当调用方法进行值传递时,方法内部会产生一个局部变量,在方法内部使用局部变量的值,并不影响传入原来数据的值,包括在使用基本数据类型的包装类。
public class Assc { public static void main(String[] args) { int x1=1; add(x1); System.out.println("最终"+x1);//1 Integer x2=new Integer(1); sub(x2); System.out.println("最终"+x2);//1 } public static void add(int x) { x++; System.out.println(x); //2 } public static void sub(Integer x) { x--; System.out.println(x);//0 } }
引用传递
当调用方法时使用引用类型参数时,使用的是与传入参数同一地址的数据,在方法内部进行参数的修改,会造成原来数据的改变(String 类型除外)
String类型数据在传入时,进行的操作是在字符串常量池中新建一个字符串,并不影响原先字符串的值
public class Assc { public static void main(String[] args) { String str="hello"; combine(str); System.out.println("最终"+str);//hello StringBuilder sb=new StringBuilder("nihao"); combine2(sb); System.out.println("最终"+sb);//nihaoworld } public static void combine(String str) { str+="world"; System.out.println(str);//helloworld } public static void combine2(StringBuilder str) { str.append("world"); System.out.println(str);//nihaoworld } }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)