嵊州网站建设,做设计的公司的网站,合肥网站的建设,平面设计主要是干嘛的《Java中#xff0c;String类型和包装类型作为参数传递时#xff0c;是属于值传递还是引用传递呢?》 《Java中的值传递和引用传递》 原理知识: 如果参数类型是原始类型#xff0c;那么传过来的就是这个参数的一个副本#xff0c;也就是这个原始参数的值#xff0c;这个跟…《Java中String类型和包装类型作为参数传递时是属于值传递还是引用传递呢?》 《Java中的值传递和引用传递》 原理知识: 如果参数类型是原始类型那么传过来的就是这个参数的一个副本也就是这个原始参数的值这个跟之前所谈的传值是一样的。如果在函数中改变了副本的 值不会改变原始的值. 如果参数类型是引用类型那么传过来的就是这个引用参数的副本这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址而是改变了地址中的 值那么在函数内的改变会影响到传入的参数。 如果在函数中改变了副本的地址如new一个那么副本就指向了一个新的地址此时传入的参数还是指向原来的 地址所以不会改变参数的值。 String和包装类是什么类型传递这个问题可能很多人都没有去细想过下面我就给点我自己的见解。 public class Test {public static void test1(Integer num){num new Integer(5);}public static void test2(String str){str.replace(1, 4);}public static void main(String[] args) {Integer num new Integer(1);test1(num);// 输出结果为1System.out.println(num.intValue());String str new String(123);test2(str);// 输出结果为123System.out.println(str);}} 分析上述程序很容易让人误以为String类型和包装类型是值传递。其实我们认真想一下String类型和包装类型都是对象类型所以必然是引用传递。但是由于String类和包装类都没有提供value对应的setter方法我们无法改变其内容所以导致我们看起来好像是值传递。 基本类型的数组对象可以作为载体带回返回值 package com.dfs.util;public class Test5 {public static void main(String[] args) {int[] a {1,2,3};test(a);for(int item : a) {System.out.println(item);}}private static void test(int[] a) {a[1] 100;}
} 结果 1
100
3 转载于:https://www.cnblogs.com/duanxz/archive/2013/04/24/3040139.html