a=a=b 求解释

heardy 2011-09-15 04:54:47
A: List list = list = jdbcTemplate.queryForList(sql);

B: List list = jdbcTemplate.queryForList(sql);

这两句有什么区别,A这样写有什么好处
...全文
365 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrj86345811 2011-09-18
  • 打赏
  • 举报
回复
这种小问题就算了,没区别的
lzy125361539 2011-09-16
  • 打赏
  • 举报
回复
没实用价值
  • 打赏
  • 举报
回复
没有任何价值存在!
daijope 2011-09-16
  • 打赏
  • 举报
回复
呵呵,List Y = Y = X;
相当于 Y = (Y = X);啊
完美灬缺陷 2011-09-16
  • 打赏
  • 举报
回复
没什么区别吧、就是同一个变量赋了2次值,没意义。
Alexander 2011-09-16
  • 打赏
  • 举报
回复
这个估计是笔误。实际上A比B的效率低。编译成字节码看下:
A:Test1 test=test=new Test1();

Compiled from "Test1.java"
public class com.codetest.test.Test1 {
public com.codetest.test.Test1();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return

public static void main(java.lang.String[]);
Code:
0: new #2 // class com/codetest/test/Test1
3: dup
4: invokespecial #3 // Method "<init>":()V
7: dup
8: astore_1
9: astore_1
10: return
}
[/cdoe]
B:Test1 test=new Test1();
[code=Assembly]
Compiled from "Test1.java"
public class com.codetest.test.Test1 {
public com.codetest.test.Test1();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return

public static void main(java.lang.String[]);
Code:
0: new #2 // class com/codetest/test/Test1
3: dup
4: invokespecial #3 // Method "<init>":()V
7: astore_1
8: return
}

很明显A执行的代码比B要多。
heardy 2011-09-16
  • 打赏
  • 举报
回复
恩 看来A的写法真的是没有价值,暂时告一段落, 多下大家的回答。稍后结贴。。。
小笨熊 2011-09-16
  • 打赏
  • 举报
回复
却是没啥区别,lz不错嘛
wd9053 2011-09-16
  • 打赏
  • 举报
回复
没什么区别
ID取的很后悔 2011-09-16
  • 打赏
  • 举报
回复
呵呵,我觉的A手贱了 。、、
lyhmy 2011-09-15
  • 打赏
  • 举报
回复
学习了
qybao 2011-09-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 heardy 的回复:]
现在这个语句是用来进行数据库的查询的

我主要认为 数据库查询出来的数据在X这一块,而Y指向了这个X,现在把x的结果集清空过后,那么获取的Y也就是为空了

但是Y指向了X,Y再次指向Y的话,会不会将结果集赋值过来,将X结果集清空的时候后,获取Y会不会还是有值


我主要是这么认为的,那些对这块理解的比较深的人帮帮忙,解释下吧!
[/Quote]
看来LZ没理解引用啊
首先
List X;
List Y = X; //Y也指向X所引用的对象
X.clear(); //X清空就是清空X所引用的对象,Y和X引用同一个对象,所以也就是Y(所引用的对象)被清空

List Y = Y = X;
相当于 Y = (Y = X);
相当于 Y = X; Y = Y; //首先Y指向X所以用的对象,接着Y指向Y所引用的对象,归根还是Y指向X引用的对象
X.clear(); //X清空就是清空X所引用的对象,Y和X引用同一个对象,所以也就是Y(所引用的对象)被清空


TKD03072010 2011-09-15
  • 打赏
  • 举报
回复
学习了
楼主钻石精神不错
lidanzi 2011-09-15
  • 打赏
  • 举报
回复
这种写法编译器应该会直接处理掉
walkman_22 2011-09-15
  • 打赏
  • 举报
回复
我认为这样写是极其不规范的。
shenshenpanpan 2011-09-15
  • 打赏
  • 举报
回复
貌似从右向左执行,在VC中不会报错,不过这样写帧没必要啊!
icemansuccess 2011-09-15
  • 打赏
  • 举报
回复
这个真没有什么意义...
24K純帥 2011-09-15
  • 打赏
  • 举报
回复
囧,为什么我也觉得A会报错
qqhw123 2011-09-15
  • 打赏
  • 举报
回复
要是不是这样的第二个list要是换成别的话 还有点意思
dxndsc 2011-09-15
  • 打赏
  • 举报
回复
Java中a=a=b是要报错的啊!
加载更多回复(20)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧