Java语言入门教程(九):Java语言中的值传递

来源:互联网 发布:2016最新网络伤感歌曲 编辑:程序博客网 时间:2024/04/27 14:28

在第八篇博文中,介绍了编写方法体必须了解的基本知识点,初学者已经可以自己写简单的例子进行练习。在练习过程中,我们不可能把所有的代码都放在main方法中,Java类一定会有或多或少的方法成员,调用这些方法将是必要的步骤。而调用方法成员时,如果该方法有参数,就必须要传递实际参数给方法的形式参数。所以了解Java语言中的值传递是非常必要的。

       Java中的数据类型分两种,基本数据类型和引用类型。所以本文中也将分别对这两种数据类型的值传递特征进行介绍。

1.基本数据类型的值传递:基本数据类型传递的是值。

如下程序:

package com.csst.test;

 

public class Test5 {

 

    /**

     * @param args

     */

    public void printX(int x){

       x++;

       System.out.println("printX: x="+x);

    }

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Test5 test5=new Test5();

       int x=10;

       test5.printX(x);

       System.out.println("main:x="+x);

      

    }

}

运行结果如下:

printX: x=11

main:x=10

 

    可见,基本数据类型x传递给printX方法时,仅仅将值10传递给参数x,所以参数x1后,输出了11,而main方法中的x仍然为10

2、引用类型

引用类型传递的是虚地址。

如下程序:

package com.csst.test;

 

public class Test6 {

 

    /**

     * @param args

     */

    public void printName(Student stu){

       System.out.println("printName: name is "+stu.getName());

    }

    public void printPwd(Student stu){

       stu.setPwd("abcdef");

       System.out.println("printPwd: pwd is "+stu.getPwd());

    }

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       Test6 test6=new Test6();

       Student stu1=new Student("Rose");

       test6.printName(stu1);

       System.out.println("main: name is "+stu1.getName());

       Student stu2=new Student("John","123");

       test6.printPwd(stu2);

       System.out.println("main: pwd is "+stu2.getPwd());

    }

 

}

class Student{

    private String name;

    private String pwd;

   

   

 

    public String getPwd() {

       return pwd;

    }

 

    public void setPwd(String pwd) {

       this.pwd = pwd;

    }

 

    public Student() {

       super();

    }

 

    public Student(String name) {

       super();

       this.name = name;

    }

   

    public Student(String name, String pwd) {

       super();

       this.name = name;

       this.pwd = pwd;

    }

 

    public String getName() {

       return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

   

}

运行结果为:

printName: name is Rose

main: name is Rose

printPwd: pwd is abcdef

main: pwd is abcdef

 

    在该类main方法中,将stu1stu2传递给printName,printPwd时,是将stu1,stu2的虚地址传递给了对应的方法参数。因此,在printNameprintPwd中打印出的namepwd,与main中打印的namepwd永远相同,尤其在printPwd方法中,通过参数改变了其pwd属性后,main方法中的stu2pwd属性也随之变化,足以说明stu2printPwd的参数本质上是一个对象。

    通过本篇学习,可以基本了解Java语言中值传递的特征,进一步,初学者可以继续学习类与类之间的关系。

原创粉丝点击