在Java中交换对象数据的方法-创新互联

这篇文章主要介绍在Java中交换对象数据的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

成都创新互联 - 眉山联通机房,四川服务器租用,成都服务器租用,四川网通托管,绵阳服务器托管,德阳服务器托管,遂宁服务器托管,绵阳服务器托管,四川云主机,成都云主机,西南云主机,眉山联通机房,西南服务器托管,四川/成都大带宽,机柜大带宽、租用·托管,四川老牌IDC服务商

                                                           假设我们有一个名为“Car”的类,它具有一些属性。我们创建了Car的两个对象,car1和car2,如何交换car1和car2的数据?

一个简单的解决方案是交换成员。例如,如果类Car只有一个integer(整数)属性“no”(Car number),我们可以通过简单地交换两辆车的成员来交换汽车。

class Car 
{ 
    int no; 
    Car(int no) { this.no = no; } 
} 
  
class Main 
{  
    public static void swap(Car c1, Car c2) 
    { 
        int temp = c1.no; 
        c1.no = c2.no; 
        c2.no = temp; 
    } 
    
    public static void main(String[] args) 
    { 
        Car c1 = new Car(1); 
        Car c2 = new Car(2); 
        swap(c1, c2); 
        System.out.println("c1.no = " + c1.no); 
        System.out.println("c2.no = " + c2.no); 
    } 
}

输出:

c1.no = 2
c2.no = 1

如果我们不知道Car的成员呢?

上面的解决方案是有效的,因为我们知道Car中有一个成员“no”。如果我们不知道Car的成员或者成员列表太大怎么办。这是一种非常常见的情况,因为使用其他类的类可能无法访问其他类的成员。下面的解决方案有效吗?

class Car 
{ 
    int model, no; 
  
    Car(int model, int no) 
    { 
        this.model = model; 
        this.no = no; 
    } 
  
    void print() 
    { 
        System.out.println("no = " + no + 
                           ", model = " + model); 
    } 
} 
  
class Main 
{ 
    public static void swap(Car c1, Car c2) 
    { 
        Car temp = c1; 
        c1 = c2; 
        c2 = temp; 
    } 
  
    public static void main(String[] args) 
    { 
        Car c1 = new Car(101, 1); 
        Car c2 = new Car(202, 2); 
        swap(c1, c2); 
        c1.print(); 
        c2.print(); 
    } 
}

输出:

no = 1, model = 101
no = 2, model = 202

从上面的输出中我们可以看到,没有交换对象。参数在Java中是通过值传递的。因此,当我们将c1和c2传递给swap()时,swap()函数会创建这些引用的副本。

解决方案是使用Wrapper类如果我们创建一个包含Car引用的包装类,我们可以通过交换Wrapper类的引用来交换Car。

class Car 
{ 
    int model, no; 
  
    Car(int model, int no) 
    { 
        this.model = model; 
        this.no = no; 
    } 
  
    void print() 
    { 
        System.out.println("no = " + no +  
                           ", model = " + model); 
    } 
} 
  
class CarWrapper 
{ 
   Car c; 
  
   CarWrapper(Car c)   {this.c = c;} 
} 
  
class Main 
{ 
    public static void swap(CarWrapper cw1,  
                            CarWrapper cw2) 
    { 
        Car temp = cw1.c; 
        cw1.c = cw2.c; 
        cw2.c = temp; 
    } 
  
    public static void main(String[] args) 
    { 
        Car c1 = new Car(101, 1); 
        Car c2 = new Car(202, 2); 
        CarWrapper cw1 = new CarWrapper(c1); 
        CarWrapper cw2 = new CarWrapper(c2); 
        swap(cw1, cw2); 
        cw1.c.print(); 
        cw2.c.print(); 
    } 
}

输出:

no = 2, model = 202
no = 1, model = 101

因此,即使user 类无法访问要交换对象的类的成员,Wrapper类解决方案仍然有效。

以上是在Java中交换对象数据的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:在Java中交换对象数据的方法-创新互联
新闻来源:http://bzwzjz.com/article/geeij.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 做网站设计 盐亭网站设计 企业网站建设 成都网站建设 网站建设方案 定制网站建设多少钱 营销网站建设 定制级高端网站建设 品牌网站建设 泸州网站建设 成都网站制作 重庆网站建设 重庆手机网站建设 网站建设推广 营销型网站建设 手机网站制作 成都品牌网站设计 成都网站建设公司 商城网站建设 网站建设方案 成都网站建设 网站建设费用