您的位置:首页 > 编程语言 > Java开发

关于java函数传值的学习深化

2012-10-02 13:58 183 查看
java函数传递

1.值传递,传递过去的值的副本

2.对象传递,传递过去的是对象地址的副本。当然数组传递的过去对象的地址。

所以,在函数中,如果给对象进行新建的操作等等,都不会影响原来的数据,但是如果更具对象的数据来进行修改的话,就可以成功的修改数据成功

以上是测试代码:

第一个是bean类

package com.test1;

import java.util.Date;

//简单的bean类,用于测试简单的对象问题,有date类型,int数据,string数据
public class DataBean
{
    private int num;
    private String string;
    private Date date;
    public int getNum()
    {
        return num;
    }
    public void setNum(int num)
    {
        this.num = num;
    }
    public String getString()
    {
        return string;
    }
    public void setString(String string)
    {
        this.string = string;
    }
    public Date getDate()
    {
        return date;
    }
    public void setDate(Date date)
    {
        this.date = date;
    }
    
    
    
}


第二个是测试代码:

package com.test1;

import java.util.Date;

public class Test2
{
    // 测试java 普通对象函数传值的问题

    public static void main(String[] args)
    {
         //========测试是否建立的问题
         //建立一个空对象
//         DataBean dataBean = null;
//         //在函数里面简历
//         create(dataBean);
//         //报错,因为函数传递过去的是地址的引用
//         System.out.println("num="+dataBean.getNum());
//         System.out.println("string="+dataBean.getString());
//         System.out.println("data="+dataBean.getDate().toString());

        // ===测试修改内容的问题
        DataBean dataBean = new DataBean();
        dataBean.setNum(0);
        dataBean.setString("adsjakldjs");
        dataBean.setDate(new Date());
        // 修改内容
        change(dataBean);
        // 修改成功,传递过去的对象的地址副本,在这地址上做修改,结果会保存的,但如果重新建立一个dataBean的话,就不会修改成功
        System.out.println("num=" + dataBean.getNum());
        System.out.println("string=" + dataBean.getString());
        System.out.println("data=" + dataBean.getDate().toString());

    }

    public static void create(DataBean dataBean)
    {
        dataBean = new DataBean();
        dataBean.setNum(1000);
        dataBean.setString("ljz");
        dataBean.setDate(new Date());
    }

    public static void change(DataBean dataBean)
    {
        dataBean.setNum(-1000);
        dataBean.setString("king");
        dataBean.setDate(new Date());
    }
}


第一个测试的结果:传递null对象,在函数中赋值的结果:

Exception in thread "main" java.lang.NullPointerException

at com.test1.Test2.main(Test2.java:17)

第二测试的结果:修改成功

num=-1000

string=king

data=Tue Oct 02 14:03:02 CST 2012
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: