Java参数值传递 swap(a,b)--如何交换a、b的值

首先明白Java的数据类型分为两种:基本数据类型引用数据类型 

æ°æ®ç±»ååå

java中的参数传递机制:值传递 

  • 形参是基本数据类型的,将实参的传递给形参的基本数据类型的变量
  • 形参是引用数据类型的,将实参的引用类型变量的值(对象的首地址)传递给形参

二者的概念:

1)基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

2)引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

Java数据类型在内存中的存储

1)基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种数据类型是这种存储模型;

2)引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;

区别:基本数据类型和引用类型的区别主要在于基本数据类型是分配在栈上的,而引用类型是分配在堆上的(需要java中的栈、堆概念)

 

那么如何交换两个数值呢?

那么可以传递引用类型的数据,如对象或者数组,下面是传递的数组:

public class Swap5
{
    public static void main(String[] args)
    {
        int[] i = {3, 5};

        swap(i);
        System.out.println(i[0]);
        System.out.println(i[1]);
    }

    public static void swap(int[] a)
    {
        int temp = a[0];
        a[0] = a[1];
        a[1] = temp;
    }
}

 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java参数传递可以分为引用传递和值传递两种方式。对于原始类型数据(如整型、浮点型、字符型、布尔型),传递的是它们的,称为值传递。而对于对象类型(如数组、类、接口),传递的是它们的引用,称为引用传递。 在值传递,方法的参数是按值传递的,即方法内对参数的改变不会影响到原始。例如,下面的示例swap方法交换参数a和b的,但在main方法打印出的num1和num2的并未改变: ```java public static void main(String[] args) { int num1 = 10; int num2 = 20; swap(num1, num2); System.out.println("num1 = " + num1); System.out.println("num2 = " + num2); } public static void swap(int a, int b) { int temp = a; a = b; b = temp; System.out.println("a = " + a); System.out.println("b = " + b); } ``` 输出结果为: ``` a = 20 b = 10 num1 = 10 num2 = 20 ``` 在引用传递,方法的参数是按引用传递的,即方法内对参数的改变会影响到原始。例如,下面的示例,updateBaseValue方法改变了baseValue的: ```java private static int baseValue = 30; public static void updateBaseValue(int value) { value = 2 * value; } public static void main(String[] args) { System.out.println("调用前baseValue的:" + baseValue); updateBaseValue(baseValue); System.out.println("调用后baseValue的:" + baseValue); } ``` 输出结果为: ``` 调用前baseValue的:30 调用后baseValue的:30 ``` 可以看到,调用updateBaseValue方法并不会改变baseValue的,因为在方法内部,形参value是对实参baseValue的拷贝,并不影响原始
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值