美文网首页Java 杂谈
Java中的值交换

Java中的值交换

作者: java高级编程中心 | 来源:发表于2019-02-20 22:08 被阅读1次

基本数据类型值交换

小编整理了一些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高阶学习资料!

相关文章

  • Java中的值交换

    基本数据类型值交换 小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:6643892...

  • Java中的值交换

    值交换 一、基本数据类型值交换 换值前后没有变量的值发生变化。原因:主函数运行的时候会在栈内存中开辟属于自己的空间...

  • Java中的经典算法之冒泡排序

    Java中的经典算法之冒泡排序(BubbleSort) 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:...

  • 【基础学习】C 指针实现数字交换

    通过 temp 交换 a、b 的值。 通过把 a、b 的指针传到 swap 方法中,实现数字的交换,因为方法是传值...

  • Python3 & 交换的底层逻辑

    Python 交换变量,可以使用中间变量的方法交换两个变量的值,例如: 但是在Python中 交换两个数的值可以有...

  • Java参数传递

    c语言中,有指针传递,可以通过指针操作内存的数据,如交换变量的值可以这样 输出结果:6,56,5 但是Java中没...

  • C#语言规范(小例子)

    一、交换两个数字的值 1、普通交换 2、用方法执行交换 方法传值必须加ref 不加只是交换原来值的副本,值本身...

  • 进阶任务5

    JSON(Java Script Object Notation )是一种轻量级的数据交换格式。JSON对值的类型...

  • Java 参数的传递

    Java 的参数是值传递,不是引用传递 Java 中只有值传递,方法按值调用(call by value)。也就是...

  • Java中空值或者null的判断

    Java中空值或者null的判断 Java中总是有空值或者null的情况,但是Java和js是不一样的,js中可以...

网友评论

    本文标题:Java中的值交换

    本文链接:https://www.haomeiwen.com/subject/gjwkyqtx.html