web-dev-qa-db-ja.com

C#からJavaに切り替えて、気にする必要のある「落とし穴」はどれですか。

Javaに切り替える必要があるかもしれません。主にC#を研究して使用してきたため、Javaに関する知識はほとんどありません。これら2つの言語の違いを恐れています。/platformは私に多くの問題を引き起こす可能性があります。

私が気にする必要のある落とし穴/落とし穴はどれですか?

9
Vimvq1987

ここにいくつかの重要なJava C#から来るときの落とし穴があります:

  • Javaでは、switchのケースが静かに次のケースにフォールスルーする可能性があるため、適切な場合は常にbreakを常に指定してください。また、JavaではswitchStringを実行できません。
  • ジェネリックスは、参照タイプでのみ具体化およびパラメーター化できません。 _List<int>_はなく、_List<Integer>_のみです。自動ボックス化は冗長性を隠しますが、NullPointerExceptionをボックス化解除するときにnullを取得できます。また、2つのボックス化されたプリミティブ型の_==_および_!=_は、参照比較を実行します。
    • ... 2つの参照型(Stringなど)の_==_および_!=_は常に参照比較であるため
    • intIntegerにオートボックス化できます。 _int[]_から_Integer[]_へのオートボクシングはありません。
  • Javaのbyteshortintlongは署名のみされています。意図しない符号拡張に注意してください。
  • 多次元配列ではなく、Javaの配列の配列のみ。
  • ほとんどの_sub*_範囲クエリメソッドは、包括的下限と排他的上限を使用します

こちらもご覧ください

関連する質問

上記のいくつかのトピックについて:

一般的にJava gotchas:

36

明らかな落とし穴の1つは、Java style string1.equals(string2)ではなく、C#スタイル_string1 == string2_(Javaは参照のみを比較する)で文字列を比較することです。

もう1つは、privateがC#のデフォルトのアクセス修飾子、Javaのpackageがデフォルトのアクセス修飾子であることです。

また、ToString()メソッドは、Javaの現在のカルチャによって自動的にローカライズされません。

13
Cloudanger

Javaサブストリング 引数はbeginIndex、endIndexでしたが、 C#Subtring 引数はstartIndex、長さです。それはそれを煩わしいものにするのに十分な違いであり、どちらの方法で切り替えてもインデックスが範囲外になる可能性が高くなります。

12
krock
  • LINQはありません
  • よくない-見栄えのUI(WPFなし)
  • プロパティなし
  • あなたはエジプト人を踊ります
  • 例と優れたドキュメントなしでAPIを取得します

うーん。

10
Turing Complete
  • Java列挙型は、はるかに強力で複雑です。実際、名前付き整数ではなく、実際のクラスです。
  • Javaの内部クラスはより強力です(そして動作が異なります)
  • デリゲートなし、機能オブジェクトのみ
  • ものを連鎖するコンストラクターは両方の言語で完全に異なる構文を持っています、私はそれをc#で行う必要があるたびに失敗する傾向があります
  • Javaは、サブクラス化のために拡張されており、インターフェースを実装しています。代わりにC#は、インターフェイスが名前の大文字のIで始まるという命名規則を中継します。他の誰かが失敗したかどうか確信が持てないので、私はその慣習が好きではありません。
  • Javaオートボクシングはa **
  • Javaの型消去は本当に事態をより複雑にします
10
atamanroman

最大の落とし穴は仮定 Java言語とライブラリはC#での見た目が似ているものと同じように動作することです。チュートリアルを実行し、javadocsを読んで、想定しない...

もう1つのメタ落とし穴は、Java equallyでC#でできる/できるように/簡単にできる)という事実を想定することです。 。Javaははるかに古い言語であり、間違いがありました...

そして最後のメタ落とし穴はthinkが欠落しているものについて不満/ Java on SO思いやりのある/支持的な応答!

6
Stephen C

デフォルトのアクセス修飾子の違いに注意してください。また、Javaのすべての非静的メソッドは仮想メソッドであることに注意してください(最終としてマークしない限り)。

少し古くなっていますが、これは素晴らしいリファレンスであることがわかりました。

Dare ObasanjoによるC#とJavaの比較

3
user5631

どのようなプログラムに取り組んでいるかによります。ウィキペディアにはこの記事があり、非常に広範です。 (最後の「外部リンク」セクションも確認してください) http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp

また、C#からJava http://www.25hoursaday.com/CsharpVsJava.html に切り替えたときにもこの記事を読んだので、とても役に立ちました。

2
Louis Rhys

あなたの質問は主観的だと思います。ここではすべてを説明することはできません。 Java Puzzlers、By Joshua Bloch and Neal Gafterを読むことをお勧めします。あなたはもっと学び、落とし穴から安全になることができます。

0
ven coder