返回信息流突然发现java不支持重载运算符 。那怎么解决= 的重载
这是一条镜像帖。来源:北邮人论坛 / java / #43613同步于 2015/8/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java怎么重载=
ywg557
2015/8/21镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
看看java.math.BigInteger。运算全都是用名称,而不是符号。可以认为这是java的局限性吧。
BigInteger x = BigInteger.valueOf(3);
BigInteger y = BigInteger.valueOf(4);
BigInteger z = x.multiply(x).add(y.multiply(y));
另外,还有一个微妙的概念区别:C++里面,“对象”的真实意思是“存储空间”。
C++里面,除了函数和引用以外的变量,都直接对应着对象(存储空间),默认的=运算符只不过是把另一个对象的值拷贝到当前对象里而已。所以这样说来,=运算符也只不过是某个对象的普通的方法而已。
但Java里,变量不是对象,变量是对象的引用。赋值运算符=的意思是让这个变量引用另一个对象。所以,Java里不能靠重写=运算符来改变“拷贝”的语义。
【 在 nuanyangyang 的大作中提到: 】
: 另外,还有一个微妙的概念区别:C++里面,“对象”的真实意思是“存储空间”。
:
: C++里面,除了函数和引用以外的变量,都直接对应着对象(存储空间),默认的=运算符只不过是把另一个对象的值拷贝到
: .........
谢大神。还有一个问题。c++ 函数 可以传递引用,但java 好像只能传值。现在我想改写 传递引用的cpp函数 成 java 函数。有什么方法吗?
发自「贵邮」
【 在 ywg557 的大作中提到: 】
:
: 谢大神。还有一个问题。c++ 函数 可以传递引用,但java 好像只能传值。现在我想改写 传递引用的cpp函数 成 java 函数。有什么方法吗?
: 发自「贵邮」
如果只是想修改另一个对象的值,要不要考虑用返回值呢?
void plusone(int &x) {
x = x + 1;
}
int main() {
int y = 42;
plusone(y);
printf("%d\n", y); // 43;
return 0;
}
int plusOne(int x) {
return x+1;
}
void main() {
int y = 42;
y = plusOne(y);
assert(y==43);
}
谢谢啊 ,没想到会有这样的解决办法 。。不过当要能返回多个值,还是有问题的。 THX
【 在 nuanyangyang 的大作中提到: 】
:
: 如果只是想修改另一个对象的值,要不要考虑用返回值呢?
: [code=c++]
: ...................
【 在 ywg557 的大作中提到: 】
: 谢谢啊 ,没想到会有这样的解决办法 。。不过当要能返回多个值,还是有问题的。 THX
可以返回一个对象。比如:
class Answer {
private String name;
private Date expire;
// getters and setters
}
public Answer getMyAccountInfo() {
Answer a = new Answer()
a.setName(...);
a.setExpire(...);
return a;
}
Java new出来的对象做参数是传引用,int[],ArrayList这些。
int[] result
【 在 ywg557 的大作中提到: 】
:
: 谢大神。还有一个问题。c++ 函数 可以传递引用,但java 好像只能传值。现在我想改写 传递引用的cpp函数 成 java 函数。有什么方法吗?
: 发自「贵邮」
来自「北邮人论坛手机版」