对于新项目,我可能不得不切换到Java。我对Java的了解很少,因为我主要研究和使用C#,而且我担心这两种语言/平台之间的差异可能会给我带来很多问题。
我应该关注哪些陷阱/陷阱?
对于新项目,我可能不得不切换到Java。我对Java的了解很少,因为我主要研究和使用C#,而且我担心这两种语言/平台之间的差异可能会给我带来很多问题。
我应该关注哪些陷阱/陷阱?
Answers:
以下是来自C#的一些重要Java陷阱:
switch
案例可能会悄无声息地进入下一个案例,因此请确保始终break
在适当的时候进行处理。您也无法switch
使用String
Java。List<int>
,只有一个List<Integer>
。自动装箱隐藏了详细信息,但是将NullPointerException
装箱时,您可以得到null
。此外,==
和!=
在两个原语盒装类型执行参考比较。
==
和!=
在两个参考类型(例如String
)上总是参考比较int
可autoboxed到Integer
; 从int[]
到没有自动装箱Integer[]
。byte
,short
,int
,long
只签名。注意意外的标志扩展名。sub*
远程查询方法使用包含下限和排除上限
关于上面列出的一些主题:
new Integer(i) == i
Java?(是!)==
/的整数时,!=
是否会出现自动拆箱?(没有!)int num = Integer.getInteger("123")
抛出NullPointerException
?(!!!)在一般的Java陷阱中:
让我着迷的是Java子字符串 args是beginIndex,endIndex,而C#Subtring args是startIndex,length。这足以使它变得烦人,并且有很大的可能性使索引无论采用哪种切换方式都超出范围。
嗯
注意默认访问修饰符之间的差异。还要注意,Java中的所有非静态方法都是虚拟的(除非您将它们标记为最终方法)。
尽管有些过时了,但我发现这是一个很好的参考。
Also note that all non-static methods in Java are virtual.
我多么希望C#是这样太
取决于您正在开发哪种程序。维基百科上有这篇文章,内容相当广泛。(另请参见最后的“外部链接”部分)http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp。
另外,当我从C#切换到Java http://www.25hoursaday.com/CsharpVsJava.html时,我阅读了这篇文章,它非常有用。
在Java语言中,原始类型(例如int,char)的目标等效项不是“值类型”(例如,Integer是引用类型)。在C#中,System.Int32是一个结构。