• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メソッドの中身の構成要素)

Javaメソッドの構成要素とは?

このQ&Aのポイント
  • Javaのメソッドは9つの構成要素で書けます。
  • 構成要素には他メソッドの呼び出し、ローカル変数の宣言、代入、インクリメントとデクリメント、オブジェクトの生成、条件分岐・判断、繰り返し・反復、出力、例外処理があります。
  • これらの要素を組み合わせて、Javaのプログラムを構築します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

9種類で書けるというのは知りませんでしたが、Java Language Specificationを見る限り、フィールドへのアクセス、配列の作成など色々と不足点があるように思います。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html System.out.printlnの実装についてはこれが詳しいです。 http://luckytoilet.wordpress.com/2010/05/21/how-system-out-println-really-works/ この中で出てくるJNIというのはJava Native Interface (http://ja.wikipedia.org/wiki/Java_Native_Interface)といって、Javaからそのプラットフォームで動くコードを直接呼び出す方法です。 要するに、Javaの世界だけで収まらずJNIを通じてOSに処理を依頼しているということです。まあ、ある意味OSへの命令をメソッド呼び出しをしているとも言えると思いますが...

その他の回答 (2)

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.3

>どんなプログラムも9種の合成で書けると聞いた事があります。 それは誰がどんな根拠で言った事なのでしょうか。 少なくとも ・内部クラス定義 ・算術演算 ・論理演算 ・ビット演算 ・ジャンプ:continue、break ・オブジェクトの型判定:instanceof ・キャスト ・排他制御:synchronized ・アサーション機能:assert は足りません。考えたら他にもありそうですが。 「算術演算・論理演算・ビット演算」の結果を代入することは多いですが、演算と代入は別の事です。演算結果を代入せずにメソッドの引数として呼び出す事もできますし、演算をしたときに例外が発生しない値である事を確認するために演算をするという使い方も出来ます。 returnは「出力」ではなく、「メソッドの終了および返値」だと思います。で、それが独立しているレベル感なら「continue、break」も必要でしょう。またassertを例外処理に含めているのはおかしな話です。独立させるべきです。 …など、はっきり言って穴だらけ・突っ込みどころ満載の分類です。どうでもいい人がテキトーに無責任に作った分類なのではないかと思います。そんなどうでもいい情報は気にしないほうがいいと思いますよ。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

理論と実装との違いといいましょうか。 例えば int a,b ;(ともに正)として a+b は a ++ を b回繰り返すことで実現できます。 a*b は、 a を b回足すことで実現できます。上記のように足し算はインクリメントで実現できるので、「かけ算はインクリメントとループで実現できる」と言えます。 a-b は a -- を b回繰り返すことで実現できます。 加減乗算ができると、筆算の要領で割り算もできます。 四則演算ができると、数学の定理を使って、複雑そうな関数でも四則演算に分解して計算することができます。 無限の桁がある実数は、コンピュータで扱うことができません。double等は、内部では整数を使って X*2のn乗の形で値を保存しており、整数演算の組み合わせで小数点以下の計算を実現しています。 と、やっていくと、おおよそコンピュータでやるような数値演算は、インクリメント、デクリメント、ループ、分岐だけで実現できる、ということになります。 これに、途中経過を記憶するためのローカル変数と、それに記憶させるための代入を加えれば、プログラムとして作成することができます。 こういう変換を繰り返していけば、(1)~(9)で実現できる、ということです。 あとは、Javaのプログラムとして正しくするには、class, メソッドの定義構文が必要ですが。 # 配列のアクセスも if(i==0){return a_0;}else if(i==1){return a_1;}else... と等価だと言えます。 ただ、実際にそんな計算していません。低機能の組込みマイコンならありえない話ではないですが、PCに入っているようなCPUでは、より高速な手段を使って演算回路を実現しており、それで瞬時に計算します。 画面表示も、最終的には「グラフィックボードにかかっている電圧を制御」という感じにはなりますが、それは特殊な命令ではなく、「Zahyo_0_0=White;」としたら「座標(0,0)の点が白になる」というイメージです。 こういう処理をするのはOSやドライバーの仕事で、Javaから直接ということはありません(少なくとも、PCでは。マイコン組込みだとそういうケースもあるかもしれません) Javaからは「OSに座標(0,0)の点が白にするように頼むメソッド」を実行することになります。 理論の話になると、チューリングマシン、構造化定理、といったキーワードで調べるとよいでしょう。

関連するQ&A

専門家に質問してみよう