質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.03%

JavaにはJavascriptのような関数はないのですか?

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 1,792

score 82

こんにちは

二つ疑問があります。
今、Javaを勉強しているのですが、関数やメソッドの一覧を暗記したいと思い、検索してみても出てきません。一方でJavascriptの場合は関数・メソッドともに一覧表がすぐに見つかるのですが、Javaはありません。

①つめの疑問 「JavaにはJavascriptのように一つ一つの関数やメソッドというものがないのでしょうか?」

似たようなもので、http://docs.oracle.com/javase/jp/6/api/
というサイトを発見したのですが、↓↓↓

イメージ説明
一つ一つではなくてなにやらごちゃごちゃしています。
javaには一つ一つの関数やメソッドというものがないのでしょうか?

逆に、クラスの一覧表というものは検索すると出てくるのですが、ここで第二の疑問が生まれました。
②つめの疑問「クラスの一覧といってもしたいことは人それぞれバラバラなのだから、一覧表になんてできないはずではないの?」という疑問です。


大変長ったらしい質問になってしまいました。すみません

それでももし、宜しければ回答お願い致します
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+2

・1つ目
貴方が見つけたページのリンク先にメソッドは記載されていますよ。
また、Javaの主体は関数やメソッドではありません。関数やメソッド、変数を持ったクラスが主体です。

・2つ目
基本的に用意されているのは「このクラスは◯◯したい時に使う」と言ったものです。
これらのクラスをいろいろな使い方をして「自分のやりたい事ができるクラス」を作る必要があります。

・Javaを覚える
どのような言語もそうですが全てを覚えるのは辞めた方がいいです。
「何ができるか」を理解し、「どのように実装するか」はその都度考えるべきだと思います。もちろん参考書の目次に載っているような簡単な実装内容はある程度覚え必要がありますが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/28 01:44

    回答ありがとうございます

    まるまる一つのクラスがjavascriptでいうところの関数やメソッドという扱いなのですね!

    そして、
    >>>・Javaを覚える
    どのような言語もそうですが全てを覚えるのは辞めた方がいいです。
    「何ができるか」を理解し、「どのように実装するか」はその都度考えるべきだと思います。もちろん参考書の目次に載っているような簡単な実装内容はある程度覚え必要がありますが。

    とのことですが、みなさん暗記したりしないのですね・・・!!
    意外でした!そうだったのですか
    そのように効率よくやっているのですね!
    私も常になにか辞書のようなものを持ち歩いてその都度できるように頑張ります

    回答有難うございました!

    キャンセル

checkベストアンサー

0

「オブジェクト指向」という物の理解が必要かと思います。

「Javaは、あるクラスのmainメソッドからスタートし、
実装したクラスをインスタンス生成してオブジェクト化しながら
処理を進めていきます。」

あるクラスのmainメソッドからスタート
これは、コマンドラインで「C:\hoge>java App」とした場合、
App.javaで実装した、mainメソッドが処理開始となるということです。

実装したクラス
これは、後述します。

インスタンス生成してオブジェクト化
これは、例えばmainメソッドで「Huga huga = new Huga();」とすることで、
Hugaクラスの実体(クローンみたいなもの)をメモリに配備します。
Huga hugaA = new Huga();
Huga hugaB = new Huga();
とやれば、Hugaという1つのクラスから、
hugaA、hugaB2つのオブジェクトが作られることになります。

処理を進めていきます
huga変数またはhugaA、hugaBでメソッド操作していく形になります。

さて、ここからオブジェクト指向の説明になります。

オブジェクト指向とは、プログラム設計の仕方を、
ある一塊の処理する物(オブジェクト)に分解して定義(=クラス)しよう
という指向になります。

ここから質問①の回答:
こうする事により、どこかの誰かが作ったクラスを使用する際、
内部処理がどうなっているか気にすることなく、公開(=public)された
メソッドやフィールドの挙動を把握するだけで使用する事が可能になります。
それがJavadocといって、あなたが探し当てたサイトのような形式になります。

質問②の回答:
コーディングする際に、コメントなどjavadocの仕様に即して対応してあれば、
c:\hoge>javadoc -d dest *.java
(拡張子javaのファイルに定義されたクラス全部をdestフォルダにjavadoc出力)
で生成可能です。
Eclipseでもっと簡単に出力するやり方もあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/28 01:47

    回答有難うございます!

    人が作ったクラス(部品)をとってつけて動かすことができるのですね!!
    すごいですね
    そしてそれが私が見ていたサイトということだったとは・・・!サイトの謎が解けました

    そしてそれがJavadocというものなのですか。初めて知りました
    また、javadocについてのURLも貼ってくださり有難うございます!

    調べてみます!

    回答有難うございました!

    キャンセル

0

既に TetsujiMiwaさんや yonaさんがご回答されているように「クラス」というものについての理解を深めることが疑問解決の近道です。

というのは、JavaScript も Java も、共にオブジェクト指向言語に分類される(名前も似ているので誤解に拍車を掛けている?)のですが、プロトタイプベース および クラスベース といって、オブジェクトに対する考え方もプログラムの実装方法も全く異なります。

その辺が分かってくると、Javadoc で クラスの仕様 を記述し 共有する仕組み が非常に合理的であることに納得されると思います。

ですので、たとえば下記のような説明をよく読み、まずは JavaScript と Java は 「全く別の言語である」 という前提に立ってから、Javaの学習を進められてはいかがでしょうか?

Javaと比較しつつ、JavaScriptのプロトタイプについて調べてみる
プロトタイプ(prototype)によるJavaScriptのオブジェクト指向
クラスベースとプロトタイプベース

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/28 01:39

    回答有難うございます!

    クラスという単語があまりわかっていないのだなと実感しました。
    わかった気でなんとなく流していましたがここに落とし穴があったのですね

    そして、javaとjavascriptを比較したURLがとても役立ちました!
    また、私が知らないことを察してか、オブジェクト指向言語とプロトタイプベースのURLまで貼ってくださって・・・!
    有難うございます!

    キャンセル

0

①つめの疑問 「JavaにはJavascriptのように一つ一つの関数やメソッドというものがないのでしょうか?」 
Javaではあらゆるメソッドが何かしらのクラス(またはインタフェース)に属しています.クラス,またはクラスから生成したインスタンスを通じてメソッドを起動して処理や操作を行い,返り値を得たりします.
試しに一つ,文字列を表すStringクラスを見てみましょう.質問の画像の中にある"java.lang"というリンクから飛び,その中に"String"という物があるのでそこから行くことができます.ここにStringクラスでできることが並んでいます.
ある文字列のn文字目を返したり,文字列の長さを取得したりなどと言った操作が,Stringオブジェクトに対するこれらのメソッドでできることを表しています.

②つめの疑問「クラスの一覧といってもしたいことは人それぞれバラバラなのだから、一覧表になんてできないはずではないの?」
ここで表示されているのはJavaが標準で提供しているAPIで,いわばツールボックスです.
ユーザーはこれらの「道具」を使って好きなように自作のクラスを作成することができるのです.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/28 01:35

    javaではクラスというひとまとまりの大きな単位でjavascriptの関数のような役割を担っているということでしょうか・・・?
    類似点を探すよりも、そういうものだと思って考えたほうが良さそうですね(それができないのですが・・・);;;
    クラス単位で覚える必要がありそうですね!

    新しい発見を有難うございました!

    キャンセル

0

①について。

Javaのメソッドは、必ずクラスに所属していて、クラスは必ずパッケージに所属しています(デフォルトパッケージは例外)。

現在のJavaの現在の最新バージョンは8ですので、下記のページを見てみましょう。

Java Platform SE 8 API仕様

フレームが分かれていて、左上がパッケージ名一覧、左下がクラス一覧、右がパッケージと概要の一覧になっています。

Java実行環境(JRE)がインストールされていれば、これらのクラスをすべて使うことができます。


(参考までに、あまりにクラスが多いので、使うパッケージを限定する機能、compactプロファイルというものがあります。)



②について。

クラスだけで一覧にすると、クラスが多すぎてとても分かりにくいので、パッケージで分類しています。
パッケージの分類はJava独自のもので、ある程度、機能別に分別されています。


JavaScriptでも基本となるObjectStringというクラスはjava.langパッケージに属しています。java.langはJava言語の基本となるクラスを収めたパッケージです。
java.utilというパッケージも基本となるパッケージのひとつです。ただこのパッケージはコレクション、旧日付ユーティリティー、その他ユーティリティーなど雑多すぎるので分類といえるかどうかは怪しいです。
I/O関連は、java.ioパッケージにまとめられています。
ネットワーク関連は、java.netパッケージにまとめられています。

やりたいことが違っても基本パッケージのクラスのいくつかはほとんどの人が使うものです。


基本クラスとは別に、機能ごとに分けられたものもあります。
GUIを扱うjava.awtjavax.swingパッケージなどは、GUIを使わない人には不要です。
JDBC、DBとSQLを扱うjava.sqlパッケージは、DBを使わない人には不要です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/28 01:32

    回答有難うございます

    新しいバージョンが出ていたのですね・・・!

    そして、なにより私はパッケージという言葉すら初耳でしたので、それらの単語を理解することから始めます(汗;;)
    とても丁寧に書いてくださり有難うございました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る