A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tfy 中级黑马   /  2012-12-1 11:21  /  1700 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public void swap(int x, int y){
                int temp = x;

                x = y;

                y = temp;
}
int a = 1;
int b = 2;
system.out.println("a = " + a + "; b = " + b);
swap(a,b);
system.out.println("a = " + a + "; b = " + b);


最经典的交换的例子。上面的swap函数本意是想交换传入的参数 a和b的值, 但是实际上是没有交换的,可以完成测试程序观测。

原因在于在函数内部,x和y是函数内部生成的局部变量,得到的只是a和b的值,即1和2,我们对x和y做的操作的确生效了,但是并没有影响到外部的变量a和b,所以a和b的值不变。

java的传值只针对基本数据类型,int,byte,char等等;而所有的对象引用传递全是传址。
传值---传递基本数据类型参数
public    class           PassValue{
    static void exchange(int a, int b){//静态方法,交换a,b的值
        int temp;
        temp = a;
        a = b;
        b = temp;
    }
    public static void main(String[] args){
       int i = 10;
       int j = 100;
       System.out.println("before call: " + "i=" + i + "\t" + "j = " + j);//调用前
        exchange(i, j);                                                                    //值传递,main方法只能调用静态方法
        System.out.println("after call: " + "i=" + i + "\t" + "j = " + j);//调用后
    }
}
运行结果:
        before call: i = 10        j = 100
        after    call: i = 10        j = 100
说明:调用exchange(i, j)时,实际参数i,j分别把值传递给相应的形式参数a,b,在执行方法exchange()时,形式参数a,b的值的改变不影响实际参数i和j的值,i和j的值在调用前后并没改变。
String str1 = "123";
        String str2 = new String("123");
        str2 = str1;
        System.out.println(str1.equals(str2));
        System.out.println(str2.equals("123"));
        System.out.println(str2=="123");

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
向你学习啊加油哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马