加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有没有办法对重构因子交换整数进行编码

发布时间:2020-12-14 19:17:54 所属栏目:Java 来源:网络整理
导读:我们在很多地方都有这个代码,如果一个值高于另一个值,我们就会交换整数.有没有办法重新考虑这个代码,所以它可以重复使用? int numerator2 = 最佳答案 你的问题归结为你想要一个整洁和可重用的方式来交换交换一对裸变量的值. (我知道你想有条件地这样做,但是

我们在很多地方都有这个代码,如果一个值高于另一个值,我们就会交换整数.有没有办法重新考虑这个代码,所以它可以重复使用?

    int numerator2 = 
最佳答案
你的问题归结为你想要一个整洁和可重用的方式来交换交换一对裸变量的值. (我知道你想有条件地这样做,但是对于无条件的情况更容易解释.)

不幸的是,在Java中无法做到这一点. Java中没有可用于实现此目的的各种编程语言机制.这是一个总结:

>在某些语言中,您可以使用引用调用(例如FORTRAN)或INOUT参数传递(例如ObjectiveC)来执行此操作:

int a = 1;
int b = 2;
swap(a,b);

>在某些语言中,您可以通过传递地址(例如C和C)来模拟通过引用进行调用:

int a = 1;
int b = 2;
swap(&a,&b);

>在某些语言中,有一个元组赋值语句(例如Perl):

int a = 1;
int b = 2;
a,b = {b,a};
// or ...
a,b = swap(b,a); // where swap returns an explicit or implicit tuple.

>在某些语言中,过程/方法可以返回多个结果,并且有一种特殊的语法可以将单个结果分配给不同的变量(例如,Mesa …而且我确信有一些不太模糊的例子):

int a = 1;
int b = 2;
a,a);

不幸的是,Java中没有这些机制.你能做的最好的就是使用某种可变的包装类而不是简单的原始类型;例如

   IntHolder a = new IntHolder(1);
   IntHolder b = new IntHolder(2);
   swap(a,b);

跟进

可以使用AtomicType或Apache Commons的MutableInteger等现有类型作为包装类.我推荐后者,因为它稍快一点.此外,使用AtomicType实例并不意味着您可以原子方式实现swap方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读