java中返回临时对象的问题,求大神破解
2014-05-22 10:36
344 查看
我写了个矩阵类,遇到了临时变量返回值都为0的情况,以下用矩阵转置的例子来细说下:
类定义:
class Matrix{
private int row,column; //矩阵的行和列
private double array[][]; //数组的引用
public Matrix transpose(Matrix m) //矩阵转置实现
{
Matrix temp = new Matrix(m.column, m.row); //不能返回临时变量temp
for(int i=0; i<m.row; i++){
for(int j=0; j<m.column; j++){
temp.array[j][i] = m.array[i][j];
}
}
return temp;
}
}
调用:
double [][]aa = {{1,1,2},{4,2,5}};
Matrix a = new Matrix(aa); //用二维数组建立并初始化一个矩阵
Matrix b = new Matrix(3,2);//建立一个空的3x2的矩阵
b.transpose(a);
a.showMatrix();
b.showMatrix();
输出结果为:
1.0 1.0
2.0
4.0 2.0
5.0
0.0 0.0
0.0 0.0
0.0 0.0
按照这个结果,也就是说这里的临时对象不能返回给b对象,导致b的值依然为0.我把temp改成this之后计算的结果就正确了。
但是这个博客里说到,是可以返回临时对象的:http://blog.csdn.net/shkkhd/article/details/1829584
孰对孰错?为什么?
类定义:
class Matrix{
private int row,column; //矩阵的行和列
private double array[][]; //数组的引用
public Matrix transpose(Matrix m) //矩阵转置实现
{
Matrix temp = new Matrix(m.column, m.row); //不能返回临时变量temp
for(int i=0; i<m.row; i++){
for(int j=0; j<m.column; j++){
temp.array[j][i] = m.array[i][j];
}
}
return temp;
}
}
调用:
double [][]aa = {{1,1,2},{4,2,5}};
Matrix a = new Matrix(aa); //用二维数组建立并初始化一个矩阵
Matrix b = new Matrix(3,2);//建立一个空的3x2的矩阵
b.transpose(a);
a.showMatrix();
b.showMatrix();
输出结果为:
1.0 1.0
2.0
4.0 2.0
5.0
0.0 0.0
0.0 0.0
0.0 0.0
按照这个结果,也就是说这里的临时对象不能返回给b对象,导致b的值依然为0.我把temp改成this之后计算的结果就正确了。
但是这个博客里说到,是可以返回临时对象的:http://blog.csdn.net/shkkhd/article/details/1829584
孰对孰错?为什么?
相关文章推荐
- 浅解返回值式的函数中临时对象的问题
- java 方法返回对象的问题
- 返回临时对象时的拷贝构造函数问题
- 一个函数返回临时对象引起的编译器优化问题
- 函数的返回值和临时对象的问题
- java中返回局部对象问题
- Java单例对象同步问题探讨
- 使用java处理HTTP返回302的问题
- Java Puzzlers笔记--puzzle 13: Animal Farm 优先级以及对象引用问题
- 关于java对象序列化问题
- 关于java对象初始化的问题
- Java对象数组初始化与NullPointerException问题
- Java对象赋值引发的问题
- java问题小集:编码转换 bat文件,提交对象流
- 关于Java String对象创建问题解惑
- Java对象数组初始化与NullPointerException问题
- 临时对象地址的小问题
- 关于XMLHTTP对象返回编码问题的各种方法整理
- 函数返回文档对象的问题
- java基础教程-对象的传递与返回