基本数据类型值交换
小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!
classDemo{
publicstaticvoidchange(inta,intb){
inttemp = a;
a = b;
b =temp;
}
publicstaticvoidmain(String[] args){
inta =10;
intb =20;
System.out.println("交换之前:"+"a= "+a+" b= "+b);//交换之前:a= 10 b= 20
change(a,b);
System.out.println("交换之后:"+"a= "+a+" b= "+b);//交换之后:a= 10 b= 20
}
}
换值前后没有变量的值发生变化。
原因:
主函数运行的时候会在栈内存中开辟属于自己的空间,当主函数调用change函数时,也会在栈内存中开辟属于自己的空间,并有自己的a、b变量;当change方法结束之后,change方法中的a、b变量也同时消失。
重点:
1. 形式参数是数据所属函数的局部变量。
2. 不同函数的局部变量与局部变量是相互独立的,没有任何的关系。
数组类型值交换
classDemo{
publicstaticvoidchange(int[] arr,intindex1,intindex2){
inttemp = arr[index1];
arr[index1] = arr[index2];
arr[index2] =temp;
}
publicstaticvoidmain(String[] args){
int[] arr = {1,2,3,4,5,6};
System.out.println("交换之前:"+Arrays.toString(arr));//交换之前:[1, 2, 3, 4, 5, 6]
change(arr,1,2);
System.out.println("交换之后:"+Arrays.toString(arr));//交换之后:[1, 2, 3, 4, 5, 6]
}
}
交换成功。
原因:
main方法中与change方法中操作的是同一个对象。
注意:
1. 两个函数的arr还是不同的。
2. arr这两个不同的变量操作了相同的对象,所以交换成功。
对象的值交换
classMyTest{
intx =10;
publicMyTest(intx){
this.x = x;
}
}
classDemo{
publicstaticvoidchange(MyTest myTest,intx){
myTest.x =x;
}
publicstaticvoidmain(String[] args){
MyTest myTest =newMyTest(1);
System.out.println("修改之前:"+=myTest.x);//修改之前:1
change(myTest,2);
System.out.println("修改之前:"+=myTest.x);//修改之前:2
}
}
交换成功:
不同的引用类型变量操作同一个对象,肯定会影响到结果。
字符串的值交换
classDemo{
publicstaticvoidchange(String source,String target){
source = target;
}
publicstaticvoidmain(String[] args){
String str ="CSDN_HCX";
System.out.println("修改之前:"+str);//修改之前:CSDN_HCX
change(str,"JS_HCX");
System.out.println("修改之前:"+str);//修改之前:CSDN_HCX
}
}
交换失败
小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!










网友评论