スペースニムラを整理し尽くす -12ページ目

スペースニムラを整理し尽くす

スペースニムラに関する情報を整理し尽くし、
いったい彼は何がしたいのか考えるブログ

いきなりプログラミングの話にすっとびますけど、

アバターを作るのに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 中島省吾(著)