Java中的参数传递

来源:互联网 发布:淘宝破碎群岛飞行成就 编辑:程序博客网 时间:2024/06/10 13:46

Java中没有指针,所以也没有引用传递了,仅仅有值传递,不过可以通过对象的方式来实现引用传递 。

值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。(实参和形参指向不通的内存空间)

引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。(实参和形参指向相同的内存空间)

a.传递值的数据类型:八种基本数据类型和String(这样理解可以,但是事实上String也是传递的地址,只是string对象和其他对象是不同的,string对象是不能被改变的,内容改变就会产生新对象。那么StringBuffer就可以了,但只是改变其内容。不能改变外部变量所指向的内存地址)。 b.传递地址值的数据类型:除String以外的所有复合数据类型,包括数组、类和接口 

值传递的例子:

public static void test(int b){        b++;        System.out.println("b="+b);    }    public static void main(String[] args) {        int a=1;        test(a);        System.out.println("a="+a);    } 

输出结果为:
b=2
a=1
a只是将值传递给b,b的值改变并不会影响a的值,因为两者指向不同的内存空间。

引用传递的例子:(以对象为例)

public class Parameter {    int a=1;    public static void test(Parameter parameter2){        parameter2.a++;        System.out.println("parameter2="+parameter2.a);    }    public static void main(String[] args) {        Parameter parameter1=new Parameter();        test(parameter1);        System.out.println("parameter1="+parameter1.a);    }}

输出结果为:
parameter2=2
parameter1=2

形参parameter2的改变影响了实参parameter1,因为二者是对象的引用指向同一块内存区域,所以操作的也是同一块内存的数据。


抽象类、接口作为方法形参、返回值

类名作为形参
   1、表示可以传递本类对象的引用作为实参
   2、可以传递本类子类对象的引用
   3、可以传递null,但会报NullPointExcepoion异常
一、抽象类作为形参
   1、使用抽象类作为形参意味着可以接受一个它的子类对象的引用,即将子类对象的引用作为参数传到方法中。
   2、可以传递null,但会报NullPointExcepoion异常

二、接口作为形参
   1、使用接口作为形参意味着可以使用这个接口的实现类的对象的引用作为实参传递给方法
   2、可以传递null,但会报NullPointExcepoion异常

三、类名作为方法的返回值类型(返回一个对象的引用)
   1、返回此类对象的一个引用
   2、可以返回null;
   3、可以返回此类子类对象的引用

四、抽象类作为方法的返回值(返回一个对象的引用)
   方法的返回类型为抽象类型意味着:
   这个方法会返回这个抽象类的子类对象的引用。由于不确定是具体的哪个子类类型,所以不能用子类类型来接收返回值,只能用抽象类类型接收,同类名作为方法的返回值。

五、abstract不能和哪些关键字共存:
   1、private:因为一个抽象方法就是留给子类重写的。要重写就必须不能private。
   2、final:因为一个抽象方法就是被子类重写的,而final表示最终方法,不能被重写。所以这两个关键字冲突;作用在类上也是一样,一个抽象类就是用来被继承的。而final类,表示最终类,不能被继承。所以也冲突。
   3、因为一个抽象方法没有方法体。所以不能被static修饰,因为无法被分配空间。

六、接口作为方法的返回类型
接口作为方法的返回值意味着:
   1、这个方法会返回实现该接口的类的对象的引用。由于不确定具体是哪个子类,所以不能用子类类型来接收返回值,只能用接口类型
   2、可以返回null

原创粉丝点击