Java 值交换

/*
值传递: 调用一个方法的时候,传递给方法的参数 ,实际上传递变量所存储的值。而不是传递变量,只是传递变量存储的值,变量还是在哪里的
1、形式参数是所属函数的局部变量
2、不同函数的局部变量与局部变量相互独立,没有任何的关系
3、如果是 不同引用类型变量操作同一个对象,那么肯定会影响到结果
*/

import java.util.*;

class Person{
    int x =10;
}

class Demo5{
    public static void main(String[] args){
        /*
        int a = 3;
        int b = 5; 
        changeValue(a,b);
        System.out.println("交换之后的值:a = "+a +" b="+b);  a=3,b=5 
        
        int[] arr = {23,10,9};
        changeArr(arr,1,2);
        System.out.println("数的元素:"+ Arrays.toString(arr));// 9 ,10
        */
        
        Person p = new Person();
        changeObj(p,20);
        
        System.out.println("x = "+ p.x); //20
    }
       
        public static void changeObj(Person p ,int x){
            p.x = x;
        }
        
        //需求2:定义一个函数交换数组中两个元素的位置。
        public  static void changeArr(int[] arr , int index1,  int  index2){ //局部变量arr 和主方法中的arr并不是同一个变量,只不过变量存储的值一样
            int temp = arr[index1];
            arr[index1] = arr[index2];
            arr[index2] = temp;
        }
        
        //需求1:定义一个函数交换两个基本类型变量的值。 
        public static void changeValue(int a , int b){
            int temp = a;
            a = b;
            b = temp;
            System.out.println("方法内部交换的值:a = "+a +" b="+b);
        }
}

1、交换两个基本类型变量的值

2、交换数组类型变量的值

3、修改对象属性值

时间: 2025-01-13 00:58:25

Java 值交换的相关文章

java值和地址值传递、字符串常量池的理解

#java值和地址值传递的理解: - 基本数据类型和基本数据类型的封装类都是:值传递 * 形式参数的改变不会影响实际参数的改变(相当于将值复制一份传递给形参,自身没做任何改变) - 引用数据类型都是 地址值传递 * 形式参数的改变会影响实际参数的改变(将地址值赋值给形参,形参就可以指向实参所指向的地址, 即形参也可以操作实参指向地址的数据了) #注意:String是个特例(当作基本类型处理) - 分析:从String类的源码可以知道,String相当于是char[]的封装类,即具有char类型的

JS杂技之无中间变量的值交换方式

从http://www.cnblogs.com/liuyitian/p/4081517.html#3074553看到一种无中间变量的值交换方式,具体如下: var a = 1;var b = 2;a = [b, b=a][0]alert(a+'_'+b) // 结果 2_1,a和b的值已经互换 端详代码,技巧是用一个匿名数组来储存和交换值,这种方式暗里需要新建数组的,它相对于新建变量我感觉时间空间上都没优势,可读性还差些.只是写法稍简短花哨一些.

老生常谈--Java值传递和引用传递

起因 前两天面试被问到了这个问题,虽然之前老早就了解过这个问题,但是并没有深入了解,所以面试的时候一下子慌了,菜是原罪,今天菜鸡来补补基础知识. 其实这个问题一直是被讨论的,常见的三种说法就是,1,Java 值传递引用传递都有,2,只有值传递,3只有引用传递,今天查了很多资料,我发现这个问题并不是随随便便就能说清楚. 先说传参 方法的参数可以分为实参和形参,实参是指被调用时传入的实际的值,在方法调用前就已经初始化完毕.而形参是指方法中用来“承接”实参的参数,它是在这个方法里有效,即作用域.方法执

不借助任何中间变量将两个整形变量的值交换

今天在做题的时候,突然出现一道题,就是不借助中间变量,将两个整形变量的值互换,开始有点懵,这怎么换?后来还是用两个变量不停做加减变换,差不多有十几分钟,才终于凑出来了一种方法,一时兴起,我又从网上找了一下相关的资料,说是竟然有四种方法,我就看了一下,顺便学习一下. 在我们初学阶段,一般是定义一个新的变量,借助它完成交换. 例如:int a,b;a=1; b=2;int t;t=a; a=b; b=t;这种算法易于理解,对初学者来说,一般都是用“空瓶子来回倒换”帮助理解的,而且是赋值语句的经典应用

C语言:值传递,地址传递和引用传递(example:值交换)

于C语言中值传递.地址传递和引用传递的我个人理解. 通过一个例子:swap(交换两个整型变量的值)来表现! 1 #include <stdio.h> 2 void swap1(int* a,int* b); 3 void swap2(int& a,int& b); 4 void swap3(int* a,int* b); 5 6 void main(){ 7 printf("Hello World!\n"); 8 int a = 3; 9 int b = 4

java 值传递与引用传递

在java中 值传递:基本数据类型(四类八种)与枚举类型  --- 传递的是值的副本 引用传递:对象是引用传递 ---传递的是对象的引用--底层逻辑也是地址的副本 列: 1 class A{ 2 int name1 =10; 3 int name2 =50; 4 } 5 public class B{ 6 public static void main(String args[]){ 7 A a = new A(); 8 swap(a); 9 System.out.prinln(a.name1,

java值传递or引用传递解惑

java中的參数传递本质上仅仅有值传递,无论你传的是什么,传过去的都仅仅是一个副本而已,这个副本作为方法的局部变量保存在栈中. 1.假设參数类型为基本数据类型,改动这个值并不会影响作为參数传进来的那个变量,由于你改动的是方法的局部变量,是一个副本. 2.假设传的是一个对象的引用,也是一样的,也是一个副本,可是这个副本和作为參数传进来的那个引用指向的是内存中的同一个对象,所以你通过这个副本也能够操作那个对象.可是假设你改动这个引用本身,比方让他指向内存中的另外一个对象,原来作为參数传进来的那个引用

Java值类型和引用类型

[定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变.值类型表示复制一个当前变量传给方法, 当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.通俗说法: 值类型就是现金,要用直接用:引用类型是存折,要用还得先去银行取现.----(摘自网上) [值类型] 也就是基本数据类型 基本数据类型常被称为四类八种 四类: 1,整型 2,浮点型 3,字符型4,逻辑型 八种: 1,整型3种 by

java 值类型和引用类型的区别

1. Java中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变.值类型表示复制一个当前变量传给方法, 当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.通俗说法: 值类型就是现金,要用直接用:引用类型是存折,要用还得先去银行取现.----(摘自网上) [值类型] 也就是基本数据类型 基本数据类型常被称为四类八种 四类: 1,整型 2,浮点型 3,字