论坛首页 Java企业应用论坛

Java 中的语法糖 (Syntactic Sugar)

浏览 14907 次
精华帖 (10) :: 良好帖 (11) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-03  
如此说来,for和while至少有一个是语法糖,如果开放了goto则for/while全是语法糖了
0 请登录后投票
   发表时间:2011-10-04  
java7的语法糖呢?
0 请登录后投票
   发表时间:2011-10-04  
总结的挺好,继续。
0 请登录后投票
   发表时间:2011-10-04  
嗯,总结得到位!
请问你的反编译工具是?
我用的javap和jd-gui对于for-each这样没有效果.
0 请登录后投票
   发表时间:2011-10-04  
ol_beta 写道
需要注意的是:包装类型的“==”运算在没有遇到算数运算符的情况下不会自动拆箱,而其包装类型的equals()方法不会处理数据类型转换

这句没看懂,请LZ略加解释一下
0 请登录后投票
   发表时间:2011-10-04  
kidneyball 写道
ol_beta 写道
kidneyball 写道
ol_beta 写道
kidneyball 写道
内部类和断言应该不算语法糖吧

也算


那它们的非语法糖形式分别是?

写一个内部了和断言 然后反编译class文件 就可以知道了 呵呵


断言是需要用-ea编译参数打开的,否则根本不会被编译。如果对应的形式没有这种特性,那么断言就不算是语法糖了。

而内部类可以访问其外部类的私有成员,甚至会导致外部类的对象被引用(无法GC,这时内部类的对象实例类似于闭包)。我也想不到java里有其他东西与它是完全一致的。

我记得是的,现在电脑没有工具 等放假回去我测试看看。
0 请登录后投票
   发表时间:2011-10-04  
rainsilence 写道
java7的语法糖呢?

http://openjdk.java.net/projects/jdk7/features/
0 请登录后投票
   发表时间:2011-10-04   最后修改:2011-10-04
Rainbow702 写道
ol_beta 写道
需要注意的是:包装类型的“==”运算在没有遇到算数运算符的情况下不会自动拆箱,而其包装类型的equals()方法不会处理数据类型转换

这句没看懂,请LZ略加解释一下

可以试试这个代码
@Test
public void javaEyeTest(){
    Integer int1 = new Integer(1);
    Integer int2 = new Integer(2);
    System.out.println(int1==int2);
    Double double1 = new Double(2.0D);
    System.out.println(double1.equals(2));
}
0 请登录后投票
   发表时间:2011-10-04  
不知道楼主的重点是什么,这种语法糖是好还是不好?

我想高级语言带来的是方便和实用,而不是追究他是如何实现的。

如果带来了方便,语法糖也没什么不妥,比如ArrayList, HashMap其实你也可以看作语法糖。是不?
  • 大小: 3.2 KB
  • 大小: 9.4 KB
0 请登录后投票
   发表时间:2011-10-04  
Ben.Sin 写道
不知道楼主的重点是什么,这种语法糖是好还是不好?

我想高级语言带来的是方便和实用,而不是追究他是如何实现的。

如果带来了方便,语法糖也没什么不妥,比如ArrayList, HashMap其实你也可以看作语法糖。是不?

1.语法糖是好的,能方便我们开发,增强代码可读性,减少我们出错的几率。
2.语法糖是语法,不是类库和工具类。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics