Java 学习笔记 (2) -Java 对象 间的 传递 赋值

Java 对象 间的 传递 赋值 

Java中不存在拷贝构造函数(Copy Constructor) 对象间的传递实际上是引用(Reference)传递,就是说传递的不是对象,而是指向对象地址的指针(Pointer)

例如:Java
MyObject mo1=new MyObject();
MyObject mo2=new MyObject();
mo1=mo2;
这里mo1=mo2;相当于
C#中的
mo1=ref mo2;
C++中的
mo1=& mo2;

程序示例:

class  Number  {
    
int i;
}

public   class  Assignment  {
    
public static void main (String[] args) {
        Number n1
=new Number();
        Number n2
=new Number();
        n1.i
=9;
        n2.i
=47;
        System.out.println(
"(1)n1.i:"+n1.i+",n2.i:"+n2.i);
        n1
=n2;
        System.out.println(
"(2)n1.i:"+n1.i+",n2.i:"+n2.i);
        n1.i
=27;
        System.out.println(
"(3)n1.i:"+n1.i+",n2.i:"+n2.i);
        }

}

运行结果:
(1)n1.i:9
,n2.i:47
(2)n1.i:9,n47.i:47
(3)n1.i:9,n27.i:27

Java函数中对象传递也是一样
Java:
functionName(MyObject mo) {
}
相当与C#中的
FunctionName(ref MyObject mo)
{
}

程序示例:运行结果:
a
b

class  Letter  {
    
char c;
}

public   class  PassObject  {
    
static void f(Letter y) {
        y.c
='b';
    }

    
public static void main (String[] args) {
        Letter x
=new Letter();
        x.c
='a';
        System.out.println(x.c);
        f(x);
        System.out.println(x.c);
    }

}

 

另外还有一个例子

public   class  Equivalence  {
    
public static void main (String[] args) {
        Integer i1
=new Integer(18);
        Integer i2
=new Integer(18);
        System.out.println(i1
==i2);
        System.out.println(i1
!=i2);
    }

}

这里i1和i2实际上是指两个对象的地址
所以他们并不相等
运行结果:
false
true

Java对象数组
MyObject[] a;
数组a里面存储的是对象的地址
a是指向地址数组的指针,是指向指针的指针
int[] a1;
数组a1里存储的是int数据
a1是指向数据数组的指针

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值