FrontPage 新規 編集 検索 一覧 ヘルプ

C#とJavaの比較

[カテゴリ:開発]

C# と Java のコーディングの違い

C# <-> Java の相互間での違いを扱います。Java から C#、C# から Java に移行する人の役に立てば幸いです。

ドキュメントの記述

C#

XML ドキュメントコメント

 /// <summary>
 /// 概要
 /// </summary>

Java

JavaDoc コメント

 /**
  * 概要。
  */

タグの比較

C#Java
概要<summary>概要</summary>概要。Java では最初に現れる '.' または '。' までが概要
解説<newpara>解説</newpara>解説Java では最初に現れる '.' または '。' 以降が解説。
引数<param name="変数名">詳細</param>@param 変数名 詳細
戻り値<returns>詳細</returns>@return 詳細
例外<exception cref="例外名">例外詳細</exception>@throws 例外名 例外詳細
参照<see>詳細</see>@see 詳細

クラスとプロパティ

C#

 namespace NameSpace
 {
     public class Class
     {
         private string str = null; //警告が出るため明示的に null を指定
 
         public string Str 
         {
             get
             {
                 return str;
             }
             set
             {
                 str = value;
             }
         }
 
         /// <summary>
         /// コンストラクタ
         /// </summary>
         public Class()
         {
         }
     }
 }

Java

 package packagename;
 
 public class Class {
     private String _str;
     
     public String getStr() {
         return''' _str;
     }
     
     public void setStr(String str) {
         _str = str;
     }
 
     /**
      * コンストラクタ。
      */
     public Class() {
     }
 }

継承とインターフェース実装

C#

 public class Class : BaseClass, Interface
 {
     //オーバーライド不可能なメソッド
     public void Method1() 
     {
     }
 
     //オーバーライド可能なメソッド
     public virtual void Method2() 
     {
     }
 }

Java

 public class Class extends BaseClass implements Interface {
     //オーバーライド不可能なメソッド
     public final void method1() {
     }
 
     //オーバーライド可能なメソッド
     public void method2() {
     }
 }

静的初期化

C#

 public class Class
 {
     private static readonly string field1 = "";
     private static readonly string field2;
 
     //スタティックコンストラクタ
     static Class() {
         field2 = "*";
     }
 }

Java

 public class Class {
     private static final String field1 = "";
     private static final String field2;
 
     //スタティックイニシャライザ
     static {
         field2 = "*";
     }
 }

同期

C#

 public void Method()
 {
     lock(this)
     {
     }
 }

Java

 public void method() {
    synchronized(this) {
    }
 }
 public synchronized void method() {
 }

シリアライズ

C#

 [XmlIgnoreAttribute]
 public string Field;

または

 private string field;
 
 [XmlIgnoreAttribute]
 public string Field
 {
     get
     {
         return field;
     }
     set
     {
         field = value;
     }
 }

Java

 private transient String _field;
 
 public String getField() {
     return _field;
 }
 
 public void setField(String field) {
     _field = field;
 } 

型の比較

C#.NET Framework 型Java プリミティブJava オブジェクト備考
boolSystem.BooleanbooleanBoolean
byteSystem.Byte------0〜255
sbyteSystem.SBytebyteByte-128〜127
charSystem.CharcharCharU+0000〜U+ffff
decimalSystem.Decimal---BigDecimal
doubleSystem.DoubledoubleDouble
floatSystem.SinglefloatFloat
intSystem.Int32intInteger-2147483648〜2147483647
uintSystem.UInt32------0〜4294967295
longSystem.Int64longLong-9223372036854775808〜9223372036854775807
ulongSystem.UInt64------0〜18446744073709551615
objectSystem.Object---Object
shortSystem.Int16shortShort-32768〜32767
ushortSystem.UInt16------0〜65535
stringSystem.String---String

定数

C#

 public const string CONST = "1";

Java

 public static final String CONST = "1";

コレクションオブジェクト[1]

コレクションインターフェース

C#Java
IList List
IDictionary Map
---SortedMap
ICollectionSet
IEnumeratorIterator

コレクションオブジェクトの違い

C#Java備考
Array
ArrayListArrayList
QueueLinkedListJava では addLast()/removeFirst() でスタック動作。
StackLinkedListJava では addFirst()/removeLast() でキュー動作。
HashtableHashMap
SortedListTreeMap

ネーミング

大文字小文字の使い分けを記述しています。
C#Java備考
名前空間(パッケージ)NameSpacepackagename
クラス名ClassNameClassName
インターフェース名IInterface---C# では I で始まる名前
定数名CONST
変数名valueNamevalueName
メソッド名GetLastgetLast

値変換

int 値を扱った例のみを記述しています。
C#Java
数値から文字列num.ToString()Integet.toString(数値)
String.valueOf(数値)[2]
文字列から数値int.Parse(文字列)Integer.parseInt(文字列)

型の比較

C#

 if (o is ArrayList)
 {
    :
 }

ヒント:as 演算子

Java

 if (o instanceof ArrayList) {
    :
 }

最終更新時間:2007年09月04日 22時37分12秒

ページの内容について何かありましたら以下に連絡ください。

上記のメールとドメインを@でつないだものがメールアドレスになります。