快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

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

时间:2011-06-13 csdn博客 taomoon719

在第八篇博文中,介绍了编写方法体必须了解的基本知识点,初学者已经可 以自己写简单的例子进行练习。在练习过程中,我们不可能把所有的代码都放在 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,所以 参数x加1后,输出了11,而main方法中的x仍然为10。

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

时间:2011-06-13 csdn博客 taomoon719

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方法中,将stu1和stu2传递给printName,printPwd时,是将 stu1,stu2的虚地址传递给了对应的方法参数。因此,在printName,printPwd中 打印出的name和pwd,与main中打印的name和pwd永远相同,尤其在printPwd方法 中,通过参数改变了其pwd属性后,main方法中的stu2的pwd属性也随之变化,足 以说明stu2与printPwd的参数本质上是一个对象。

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号