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

前端之家收集整理的这篇文章主要介绍了java – 有没有办法对重构因子交换整数进行编码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

    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方法.

原文链接:https://www.f2er.com/java/438005.html

猜你在找的Java相关文章