java中的传值

Python012

java中的传值,第1张

你这写的也太简单了吧 而且都是错误的.以开始最好就严格要求自己

public class demo{

public static void main(String[] args){

A a = new A()//创建对象

string str = "123"

a.c(str) //调用方法

}

}

class A{

public string c(String str){

return str

}

}

import java.util.Scanner

public class aaaaa {

    private static int temp

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in)

        System.out.println("请输入a的值")

        int a = sc.nextInt()

        System.out.println("请输入b的值")

        int b = sc.nextInt()

        System.out.println("请输入c的值")

        int c = sc.nextInt()

        int[] res = swap(a, b)

        a = res[0]

        b = res[1]

        System.out.println("交换后的值为" + a + b + c)

    }

    private static int[] swap(int x, int y) {

        if (x >= y) {

            temp = x

            x = y

            y = temp

        }

        int[] result= {x, y}

        return result

    }

}

1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没用改变。 

2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。

因此在change方法中交换x,y是成功的,但是不会影响到static x ,y的值,在change方法中输出是可以得到交换成功的x,y,因为它们都是基本类型。可以通过一个int[]的返回值来得到交换后的数值。

简单点说

1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的

2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。