いきなりプログラミングの話にすっとびますけど、
アバターを作るのにUNITYで使うC#を習得する必要があったので、JAVAと比較して違いを書き出しておきます。
めちゃ似とる。
違うのこんだけかって感じです。(自分が使う範囲内でのことですが)
じゃん!
■■■■■ JAVAとC#の違い ■■■■■
・標準出力へのメッセージ出力
JAVA
System.out.println();
C#
System.Console.WriteLine();
・最初に呼び出されるメソッド
JAVA
main
C#
Main
・データ型
JAVA(基本データ型)
boolean
C#(論理型)
bool
(varやsbyte等C#固有のデータ型は色々あるが割愛)
JAVA(文字列型)
String
C#(文字列型)
string
・変数名に$使えるか
JAVA
可
C#
不可
・ループ文の中のgoto的文
JAVA
ラベル付きbreak (例 : break Loop1;)
C#
goto (例 : goto Loop1;)
・switch文 defaultのbreak省略
JAVA
可
C#
不可
・クラスのメンバーのデフォルトアクセス制限
JAVA
package private
C#
private
・多次元配列の有無
JAVA
なし(但し、配列の配列あり 例 : array[0] = new int[3]; か、int[][] array = int[2][3];)
C#
あり(例 : int[,] array = new int[2,3];)
・要素数を保持するフィールド
JAVA
length(例 : for(int i = 0; i < array.length; i++){})
C#
Length(例 : for(int i = 0; i < array.Length; i++){})
・要素完全取り出し
JAVA
拡張for文(例 : for(int i : scores){})
C#
foreach文(例 : foreach(int i in scores){})
・メモリ解放、他のクラスから呼び出し可能か
JAVA
ファイナライザ 可
C#
デストラクタ 不可
・アクセサ
JAVA
あくまでルールだが、get大文字~ set大文字~等
C#
プロパティ構文(例 : public string Name{get{return name;}set{name = value;})
・継承
JAVA
extends
C#
:
・例外処理
JAVA
チェック例外、非チェック例外あり
C#
チェック例外という概念はなく、例外処理しなくてもコンパイルエラーにはならないが、
JAVA同様キャッチしなければ、プログラムは強制終了する
・オブジェクト(インスタンス)の初期化
JAVA
static初期化ブロック->初期化ブロック->コンストラクタ
C#
静的コンストラクタ->コンストラクタ オブジェクト初期化子 readonlyなど多彩
・列挙型
JAVA
enum(例 : enum Eto{Dragon,Tiger,rabbit,hose..)
C#
enum(例 : enum Eto{Dragon = 1,Tiger,rabbit=5,hose.. 結果1256..)
・ポリモーフィズム、レイトバインディングするには、
JAVA
オーバーライドすればよい
C#
オーバーライドされる側にvirtual、オーバーライドする側にoverrideキーワードが必要
(但し抽象メソッドの場合はvirtual不要)
・インターフェースの実装
JAVA
implements
C#
インターフェースをクラスに継承する(記述は継承と同じ)
・ラムダ式
JAVA
関数型インターフェース(抽象メソッドを一つだけ持つインターフェース)を実装、匿名クラスをnew
これの省略形(例 : SampleLambda s1 = name -> System.out.println(name);)
C#
(例 : Calculation c = (x, y) => x+y; 引数がないときは()だけ記述、省略はできない
参考 : 5日間でJavaとC#を同時に学ぶ本 日経BP 中島省吾(著)