一.概念性知识(String类型虽然是引用类型,但是很特殊)
1.如果方法的形式参数是基本数据类型,形式参数的改变不会影响实际参数.
2.String类型:特殊的引用类型:
它作为形式参数,效果和基本数据类型一致,形式参数的改变不影响实际参数(String本质就是常量)
3.如果方法的形式参数是引用数据类型(数组)(除String类型外),形式参数的改变会直接影响实际参数
二.代码示例
示例1:
public class XingCan {
public static void main(String[] args) {
//定义了两个变量
int a = 10;
int b = 20;
System.out.println("a:" + a + ",b:" + b); //a:10,b:20
//定义了一个方法:没有具体返回值类型,void代替 直接输出
change(a, b);//10,20
System.out.println("a:" + a + ",b:" + b);//10,20
}
public static void change(int a,int b){//形式参数是基本数据类型 10,20
System.out.println("a:"+a+",b:"+b) ;//a:10,b:20
a = b ;
b = a+ b;
System.out.println("a:"+a+",b:"+b) ;
}
}
结果:
示例2:
public class XingCan {
public static void main(String[] args) {
String str = "hello" ;
System.out.println("str:"+str) ; //"hello"
change(str) ;
System.out.println("str:"+str) ;
}
//String类型作为形式参数传递(特殊的引用类型)
public static void change(String str) { //hello
System.out.println("str:" + str); //"hello"
str += "javaEE";//str = "hello"+"javaEE" ;
System.out.println("str:" + str); //"hellojavaEE"
}
}
结果:
示例3:
public class XingCan {
public static void main(String[] args) {
//创建一个数组,静态初始化
int[] arr = {1,2,3,4,5} ; //int[] arr = new int[]{1,2,2,3,4,5} ;
System.out.println(arr[1]) ;
change(arr) ;
System.out.println(arr[1]) ;
}
//执行change方法
public static void change(int[] arr){//形式参数是引用类型:数组 (实际参数传递:传递的空间地址值)
//遍历arr数组
for(int x = 0 ; x < arr.length ; x ++){
if(arr[x] %2 == 0){
arr[x] *= 2 ;
}
}
}
}
结果: