Submit Search
Upload
C#とJavaの違い
•
Download as PPTX, PDF
•
0 likes
•
236 views
K
KenjiroUehara
Follow
JavaプログラマーにC#を勉強させるための資料です
Read less
Read more
Education
Report
Share
Report
Share
1 of 11
Download now
Recommended
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
Go入門
Go入門
Takuya Ueda
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Kohsuke Yuasa
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
Sho Okada
async/await不要論
async/await不要論
bleis tift
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
ryuz88
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
Recommended
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
Go入門
Go入門
Takuya Ueda
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
Kohsuke Yuasa
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
Sho Okada
async/await不要論
async/await不要論
bleis tift
Verilator勉強会 2021/05/29
Verilator勉強会 2021/05/29
ryuz88
Quine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
Yuichi Ito
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
Satoshi Kubo
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
智啓 出川
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
Qt × Reactive Extensions
Qt × Reactive Extensions
TetsuroMatsumura
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
go_router が隠してくれるもの
go_router が隠してくれるもの
cch-robo
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
Google Cloud Platform - Japan
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
Fixstars Corporation
例外設計における大罪
例外設計における大罪
Takuto Wada
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
Yahoo!デベロッパーネットワーク
More Related Content
What's hot
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
Yuichi Ito
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
Satoshi Kubo
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
智啓 出川
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
Qt × Reactive Extensions
Qt × Reactive Extensions
TetsuroMatsumura
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
go_router が隠してくれるもの
go_router が隠してくれるもの
cch-robo
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
Google Cloud Platform - Japan
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
Fixstars Corporation
例外設計における大罪
例外設計における大罪
Takuto Wada
What's hot
(20)
SpringBootTest入門
SpringBootTest入門
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
Qt × Reactive Extensions
Qt × Reactive Extensions
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
go_router が隠してくれるもの
go_router が隠してくれるもの
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
いまさら聞けない!CUDA高速化入門
いまさら聞けない!CUDA高速化入門
例外設計における大罪
例外設計における大罪
Similar to C#とJavaの違い
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
Shinichi Hirauchi
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
Yahoo!デベロッパーネットワーク
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Yahoo!デベロッパーネットワーク
Spock's world
Spock's world
Takuma Watabiki
C++14 variable templates
C++14 variable templates
Akira Takahashi
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
Hiroko Tamagawa
C++の復習
C++の復習
Toshihiko Ando
今からでも遅くないC#開発
今からでも遅くないC#開発
Kazunori Hamamoto
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
和弘 井之上
Coderetreat
Coderetreat
YAMANE Toshiaki
pi-1. プログラミング入門
pi-1. プログラミング入門
kunihikokaneko1
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
Kaz Aiso
Laravelとテストについて
Laravelとテストについて
Takeo Noda
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
テストコードの定型化
テストコードの定型化
Shinichi Hirauchi
Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?
m ishizaki
Gradleどうでしょう
Gradleどうでしょう
Takuma Watabiki
C#coding guideline その2_20130325
C#coding guideline その2_20130325
Yoshihisa Ozaki
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
Kenta Oono
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
simotin13 Miyazaki
Similar to C#とJavaの違い
(20)
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
Spock's world
Spock's world
C++14 variable templates
C++14 variable templates
脱・独自改造! GebでWebDriverをもっとシンプルに
脱・独自改造! GebでWebDriverをもっとシンプルに
C++の復習
C++の復習
今からでも遅くないC#開発
今からでも遅くないC#開発
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第2回 ‟変数と型„
Coderetreat
Coderetreat
pi-1. プログラミング入門
pi-1. プログラミング入門
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
Laravelとテストについて
Laravelとテストについて
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
テストコードの定型化
テストコードの定型化
Microsoft Learn で C# を学ぶとどんな感じ?
Microsoft Learn で C# を学ぶとどんな感じ?
Gradleどうでしょう
Gradleどうでしょう
C#coding guideline その2_20130325
C#coding guideline その2_20130325
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
Recently uploaded
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
Ken Fukui
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
Ken Fukui
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
yukisuga3
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
Ken Fukui
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
Ken Fukui
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
Ken Fukui
Recently uploaded
(8)
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
C#とJavaの違い
1.
C#とJavaの違い Javaプログラマー向けC#導入資料
2.
主な違い ● ポリモーフィズムとメソッドのオーバライド ● プロパティ ●
Enumの扱い ● 例外処理 ● その他(演算子多重定義、struct、引数のref/out・・・)
3.
JavaとC#の機能追加のポリシー ● 基本的にC#の方が多機能だと思って良いです ○ Javaは、文法に影響する新機能の追加に慎重 ○
C#は新機能の追加を積極的に行う
4.
ポリモーフィズムとメソッドのオーバライド class Parent { public
void TestMethod() { Console.WriteLine("Parent"); } } class Child : Parent { public void TestMethod() { Console.WriteLine("Child"); } // 警告は無視 static void Main(string[] args) { Child child = new Child(); Parent parent = child; parent.TestMethod(); child.TestMethod(); } } 出力される内容は?
5.
ポリモーフィズムとメソッドのオーバライド class Parent { public
virtual void TestMethod() { Console.WriteLine("Parent"); } } class Child : Parent { public override void TestMethod() { Console.WriteLine("Child"); } static void Main(string[] args) { Child child = new Child(); Parent parent = child; parent.TestMethod(); child.TestMethod(); } } 出力される内容は?
6.
ポリモーフィズムとメソッドのオーバライド ● 子クラスで同名のメソッドを定義しても、オーバライドとは限らない ● オーバライド出来るのは以下のメソッドのみ ○
仮想メソッド(virtualをつけたメソッド) ○ 抽象メソッド(抽象クラス内のabstractをつけたメソッド) ○ インタフェースのメソッド ● オーバライドするメソッド(子クラスのメソッド)にはoverrideが必要 ● 条件を満たさないと、変数の型に応じたメソッドが呼ばれる
7.
プロパティ ● C#では、set/getするフィールドを簡単に定義するためのプロパティという機能がある class Foo
{ string Text { get; set; } static void Main(string[] args) { var foo = new Foo(); foo.Text = "aaa"; // 代入と同じ文法で変更可(実際は関数呼び出しがかかる) Console.Write(foo.Text); // フィールドのように参照可(実際は関数呼び出しがかかる) } }
8.
Enumの扱い ● C#のEnumは数値型です(C言語のEnumと同じもの) ● Javaと違い、フィールドやメソッドを持つことは出来ない ●
メソッドを定義したい場合、拡張メソッドを使用すれば、 近いことが可能
9.
例外処理 ● C#の例外には、実行時例外しかない ● メソッドの宣言時に例外は宣言しない(出来ない) ●
Javaのチェック例外に当たるエラーは、戻り値等で返す必要がある
10.
その他 ● 演算子多重定義: クラスに対して演算子(+、-、=等)の動作を変えることが出来る ○
クラスのインスタンスを比較する場合、=を定義しなおせば、equalsと同じ比較ができる ○ インスタンス同士の足し算、引き算を+、-で定義、大小を>で比較する等が出来る ● struct:独自の値型を定義できる(newしなくても使える型) ● ref/out:メソッドの引数を参照渡しにできる ○ ref: メソッド内で値の参照、変更が可能(変更した値は呼び出し元の変数に影響する) ○ out: メソッド内で値の設定が可能(メソッド内参照は不可。設定した値は呼び出し元の変数に影響する) ● 拡張メソッド:クラス、インタフェース外でメソッド定義が可能
11.
まとめ ● C#とJavaは結構違います。似ていると思うのは気のせいです ので、しっかり勉強しましょう ● 全体にC#はJavaより多機能です ●
機能がどんどん足されていくので、しっかり追従しましょう
Editor's Notes
この資料は、あくまでC#とJavaが違っていて、C#の勉強が必要なんだ、ということを説明する資料です。 この資料を見れば、C#を覚えられるわけではありません。 C#については、各自勉強してください。
JavaとC#は、if文やsitch文、ループ等の構文は近いです (どちらも、C、C++の影響を受けているためです) ですが、動作、機能には結構な違いがあります。 似ているのは見た目だけと思ったほうが良いです。
行数削減のため、コードスタイルがおかしいのは許してください。 それぞれのTestMethod呼び出しによる出力は? Parent、childとも、インスタンスは一緒です。 正解はParent/Childです
こちらは? 正解はChild/Childです
これがC#とJavaの一番の違いだと思います。
プロパティは値を保持するだけのフィールドを簡単に定義するための機能です。 ここで記載した例はシンプルにgetter/setterを定義していますが、 getterのみ、setterのみの定義も可能ですし、getter、setterの細かい処理も定義可能です。
enumについては、大きな違いではないですが、意外と不便だと思います。
Javaのチェックを強制する例外というのは、最近のはやりではない様です。 個人的には、堅牢なシステムをつくろうとする場合は、悪くないものだと思うのですが・・・ エラーの通知の仕方と処理の仕方は、システム全体としてポリシーを決める等、コーディング方法を統一したほうが良いです。
その他にもJavaにはない、色々な機能があります。 C#は構文の追加、変更を躊躇なく行う印象です。 対して、Javaはかなり慎重です(バージョンアップ時に新機能が見送られたりします) C#の機能を使いこなせば、Javaより効率的にコーディングを出来ると思います。 ただ、多機能な分、正しく使わないとコードが分かりづらくなる可能性があります。
Download now