• ベストアンサー

JavaでのAPIの覚え方ってみさなんどうされてますか?

初めまして。最近Javaを勉強し始めたんですが、 友人に聞いたところ短期間にJavaが理解出来るコツは 『Java (TM)2 SDK ドキュメント(API仕様)』を読みながら 次の順番でサンプルを作りながら主要なパッケージを覚えて行けばいいんじゃない? と言われました。 (1)JAVA.LANG (2)JAVA.IO (3)JAVA.UTIL (4)JAVA.NET (5)JAVA.TEXT (6)JAVA.STRING (7)JAVA.MATH 必死でメソッドやインターフェース等のサンプルを作っている所なのですが、 同じような単語があったり、継承関係が複雑だったり。。。 頭の中で整理出来ず、ただ闇雲にやっているだけのような感じがしてきました。 皆さんはどのような工夫や方法でAPIを覚えて行きましたか? 是非ご回答の程お願いします。

  • Java
  • 回答数4
  • ありがとう数5

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

  • ベストアンサー
  • neuron-x
  • ベストアンサー率52% (139/266)
回答No.4

JavaのAPIを覚えることは、そんなに重要ではありません。 一番大切なのは、必要なときにAPIを調べて実際に使えるかどうかですね。(慣れてくると、よく使うAPIは覚えてしまいます) あとは、Javaの言語仕様を理解することでしょうか。言語仕様は、SUNのSJC-Pなどの試験の問題集などを見るのが一番良いと思います。 Javaを覚える上でのポイントは、 (1)APIは覚える物ではなく、必要なときに調べられる事。 (2)Javaの言語仕様を理解すること。 (3)オブジェクト指向を理解すること… こんな感じだと思います。 更に、効率的な設計を行いたければ、デザインパターンなどを勉強すると良いでしょう。

takikisugi
質問者

お礼

返事が遅れまして申し訳ありませんでした。 ご回答ありがとうございました。 APIを覚えるよりも、いろんなプログラムを作ってみる。 その過程でAPIを使えばいい。僕はこのように解釈致しました。 APIドキュメントが目移りしていた僕にとっては精神的にかなり楽になりました。 アドバイスを頂きましてありがとうございました。

その他の回答 (3)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

私も同じく、いちいちそんなもの覚えません。 必要時に見るだけです。 Javaの文法やオブジェクト指向について理解できたなら、「Java言語で学ぶデザインパターン入門(著・結城浩)」がお勧めです。Javaのソースによるサンプルを交えながらオブジェクト指向プログラムの書き方を覚えられるので良い勉強になると思います。

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/4797316462/250-1232543-3778649
takikisugi
質問者

お礼

返信が遅れて申し訳ありませんでした。 回答頂きましてありがとうございました。 是非、薦めて頂いた本を参考に読んでみようかと思います。 ありがとうございました。

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

API なんか覚えてません。API を覚えることが重要なんじゃなくて必要な機能を API の中から探し出す能力を身につけることが重要です。そうじゃないと、自分の知らない機能を使おうとしても何もできなくなってしまいます。 API の中でも特に重要なものは実際にプログラムを作るときに何度も使うので自然に覚えられます。 それに、API を使ってサンプルを作るだけじゃ Java 言語の「理解」はできません。理解するにはできる限り API に頼らずに自分で作ることが大切です。 クラスの仕組みなどを理解しないうちに API を使いまくると、API がただの便利なブラックボックスと化してしまう恐れがあります。 クラスの継承の仕方とか四つのアクセス権の違いとか、そういう文法的なことを身につけてから、実際にそれらが API でどのように使われているかを見ていくのがいいと思います。

takikisugi
質問者

お礼

返信が遅れて申し訳ありませんでした。 また、回答頂きましてありがとうございました。 APIよりもJava言語仕様を理解していく方が、 効率が良くスムーズに勉強が出来ると思うようになりました。 アドバイスありがとうございました。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

覚えてません。 いまだにAPIドキュメントを見ます。 ブラウザのブックマークに入れて。 (高速化のため、ダウンロードしてHDDの中に入れてます) 基本的には、「オブジェクト指向」なので、 「関連するメソッドはクラスの中にある」 と考えます。 Stringクラスに何メソッドがあるか…ということは覚えません。 「とにかく関係するメソッドはその中にあるだろう」 との見当で、クラスを開いてメソッドを探します。 そうはいっても、java.ioなどはたしかに複雑で、 使いこなせないこともあろうかと思います。 これはやはり、多少の金を掛けても参考書を買って読むのが近道だと思います。 IOについて簡単に言うと、あそこにあるクラスはだいたい4種類に分類されます。 ・バイナリ入力 ・バイナリ出力 ・テキスト入力 ・テキスト出力 そしてそれぞれに対して、「ファイルとつなげる」 「他のストリームとつなげる」「メモリとつなげる」 などの種類があります。 たとえばjava.utilにあるコレクションクラスは 「setの仲間」と「Listの仲間」がに分かれます。 setの仲間は、要素が重複しないもの。 Listの仲間は、同じ要素が何回も出てくる(可能性がある)もの。 というふうに単純化して覚えます。 Listの仲間にはArrayListとかLinkedListなどありますが、 対して変わりないので、好きな方を使ってかまいません。 「継承関係が複雑」と思わず、 「継承関係によって分類されている」と考えれば多少覚えやすくなるのではないでしょうか?

takikisugi
質問者

お礼

返信が遅れて申し訳ありませんでした。 また、回答頂きましてありがとうございました。 回答を読んで、今までAPIに拘りすぎていたような気がしてきました。 APIを覚える事に越したことはありませんが、 『こんな感じのものがあったな~』という程度で抑えておいて、 Javaの言語仕様を十分理解出来るように努力したいと思いました。 ありがとうございました。

関連するQ&A

  • APIの非奨励クラス?

    失礼致します。 質問させてください。 今、java.util.regex.PatternをインポートしてPattern下のquoteメソッドを使ったところ「java.lang.NoSuchMethodError: java.util.regex.Pattern.quote(Ljava/lang/String;)Ljava/lang/String;」 というエラーが出ました。 ローカルではこのメソッドを使い、問題なく動いているにもかかわらずです。PatternクラスはAPIに掲載されているのですがquoteはありませんでした。このメソッドは削除されたのでしょうか?誰かご存知の方、教えて頂けますでしょうか?

    • ベストアンサー
    • Java
  • JAVAであるAPIの使い方

    JAVA初心者です。 あるブループウェアの連携APIを使うことになってしまったのですが、 (そのため現在JAVA入門から勉強しています) サンプルプログラムを動かすことはできました。 多分新しく作ったクラスにJARファイルを追加?することになると思い、 まず試しにJARファイルを解凍して同じファイル(ファルダ)構成で再びJARファイルを作りました。 コマンド:jar cmf garoon3api\META-INF\MANIFEST.MF garoon3api.jar garoon33api すると、サンプルプログラムは動きませんでした。 C:\java\garoon>java -cp garoon3api.jar com.cybozu.garoon3.usecase.GetUser -g log in.ini -i inG.csv -o outG.csv Exception in thread "main" java.lang.NoClassDefFoundError: com/cybozu/garoon3/us ecase/GetUser Caused by: java.lang.ClassNotFoundException: com.cybozu.garoon3.usecase.GetUser at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: com.cybozu.garoon3.usecase.GetUser. Program will exit. 何がおかしいのでしょうか? どなたか教えて下さい。 また参考となるHPとかあれば教えてください。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • JAVAのソートプログラムについて

    List1.txtの内容の単語の数を数え、その数を単語の隣に表示するプログラムを作りました。 (1)List1.txtの内容 ゲーム ゲーム 麻雀 麻雀 野球 ゲーム (2)実行結果 C:\>java Lists ゲーム 3 野球 1 麻雀 2 (3)プログラム import java.io.BufferedWriter; import java.nio.charset.Charset; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.*; public class Lists { public static void main(String[] args) throws IOException{ File file3 = new File("C:\\List1.txt"); BufferedReader br3 = new BufferedReader(new FileReader(file3)); FileWriter filewriter3 = new FileWriter(file3,true); TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); String line; while((line = br3.readLine()) != null){ String[] words = line.split("\\s"); for(String s : words){ if(!tm.containsKey(s)){ tm.put(s,1); }else{ tm.put(s,tm.get(s).intValue()+1); }} } for(String s : tm.keySet()){ System.out.println(s + " " + tm.get(s) ); }}} このプログラムを上から単語の数が多い順に表示したいのですがどこをどう修正したらいいのか悩んでます。 C:\>java Lists ゲーム 3 麻雀 2 野球 1 と表示されればOKです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaのソートプログラムについて

    List1.txtの内容の単語の数を数え、その数を単語の隣に表示するプログラムを作りました。 (1)List1.txtの内容 ゲーム ゲーム 麻雀 麻雀 野球 ゲーム (2)実行結果 C:\>java Lists ゲーム 3 野球 1 麻雀 2 (3)プログラム import java.io.BufferedWriter; import java.nio.charset.Charset; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import java.util.TreeMap; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.List; import java.util.*; public class Lists { public static void main(String[] args) throws IOException{ File file3 = new File("C:\\List1.txt"); BufferedReader br3 = new BufferedReader(new FileReader(file3)); FileWriter filewriter3 = new FileWriter(file3,true); TreeMap<String,Integer> tm = new TreeMap<String,Integer>(); String line; while((line = br3.readLine()) != null){ String[] words = line.split("\\s"); for(String s : words){ if(!tm.containsKey(s)){ tm.put(s,1); }else{ tm.put(s,tm.get(s).intValue()+1); }} } for(String s : tm.keySet()){ System.out.println(s + " " + tm.get(s) ); }}} このプログラムを上から単語の数が多い順に表示したいのですがどこをどう修正したらいいのか悩んでます。 C:\>java Lists ゲーム 3 麻雀 2 野球 1 と表示されればOKです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • サーブレットのコンパイルエラー

    会社の開発環境でコンパイルできたサーブレットを 自宅でコンパイルしようとすると、下のエラーが出てしまい困っています。だれか知恵を貸してください。 ちなみに自宅の開発環境は j2sdk1.4.0とtomcat3.2.3 です。 よろしくお願いします。 ----------------------------------- ReserveControlServlet.java:26: シンボルを解釈処理できません。 シンボル: メソッド setCharacterEncoding (java.lang.String) 位置 : javax.servlet.http.HttpServletRequest の インタフェース request.setCharacterEncoding("JISAutoDetect"); ^ ReserveControlServlet.java:33: シンボルを解釈処理できません。 シンボル: メソッド getRequestDispacher (java.lang.String) 位置 : javax.servlet.ServletContext の インタフェース sc.getRequestDispacher("/index.jsp").forward(request, response); ------------------------------------

    • ベストアンサー
    • Java
  • Javaでコンパイルできなくなりました

    javaでコンパイルできなくなりました。今まではJava2 SDK バージョン1.4.2_03をインストールしてコマンドプロンプトからjavac、javaコマンドを用いコンパイル、実行していました。 そして、Eclipse(バーション3.0)というIDE環境に興味を持ちインストールした後にとりあえずもう一度コマンドプロンプトからjavacコンパイルしてみたらエラーがでるようになりました。 ソースを書くと長くなってしまうので簡単に説明すると、String sに"Hello World"を代入してSystem.out.println()で表示させるだけのプログラムです。Eclipseをインストールする前は実行できたのでソースに問題があるという事はありません。エラーメッセージは以下のような感じでした //エラーメッセージ 検出値 : java.lang.String 期待値 : String String s = "Hello World"; その後にソースで String s="Hello World";としていた行を java.lang.String s = "Hello World";に変更しました するとjavacではエラーが出なくなるのですがjavaコマンドで実行すると Exception in thread "main" java.lang.NoSuchMethodError: main というメッセージが出て実行できないです。 環境変数は、SDKインストール後、PATHC:\j2sdk1.4.2_03\bin;を加え、Eclipseインストール後は何も変更していません。 何が問題なのでしょうか?お願いします。

    • ベストアンサー
    • Java
  • NetBeansをはじめたのですが・・・

    NetBeans5.0をはじめ、本を見ながら入力したのですが   シンボルを見つけられません。   シンボル:メソッド format   (java.lang.String.java.util.Date,java.lang.String)   場所:java.lang.Stringのクラス と出て実行できません。 とても困ってるのでお願いします。

    • ベストアンサー
    • Java
  • Javaの公式メソッドの中身を見るには?

    Javaの公式なメソッドやクラスの中身を見るにはどうすればいいでしょうか? jTextAreaクラスに、指定した位置に文字列を挿入する、 「insertメソッド」というメソッドがあるのですが、 このメソッドがどういうアルゴリズムかを勉強したいのですが、 JavaのAPIを見ても、引数や説明があるだけで、中のソースがありません。 http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/JTextArea.html#insert%28java.lang.String,%20int%29 何か中身を見る方法ありませんか?

    • ベストアンサー
    • Java
  • APIにまつわる言葉の言い方

    APIにまつわる言い方で教えていただきたい意味があります。 (1)Eclipse で API を叩く → Android開発ならベースがJavaだからJava以外の言語でメソッドを呼び出すイメージ ですか? (2)ネイティブAPI → 機械語で書かれたAPIということですか? 以上よろしくお願いします。

  • 現在Google App Engineにてtwitter4jのAPIを

    現在Google App Engineにてtwitter4jのAPIを使用してtwitterのトレンドを取得して表示するjspの画面作成をやっています。 そこで以下のエラーが取れずに、サーバーエラーとなるため困っています。 ◆エラー内容 ------------------------------------------------------------- java.lang.IncompatibleClassChangeError: Expected static method twitter4j.http.BASE64Encoder.encode([B)Ljava/lang/String; at twitter4j.http.BasicAuthorization.encodeBasicAuthenticationString(BasicAuthorization.java:59) at twitter4j.http.BasicAuthorization.<init>(BasicAuthorization.java:50) at twitter4j.TwitterFactory.getInstance(TwitterFactory.java:87) at com.twitter.Turuter.getTwitterTrends(TestTwitter.java:110) at org.apache.jsp.test_jsp._jspService(test_jsp.java:72) ・・・ ------------------------------------------------------------- ◆TestTwitter.java:110 ------------------------------------------------------------- public List<String> getTwitterTrends(){ boolean isExcludeHashTags = true; TwitterFactory tf = new TwitterFactory(); Twitter twitter = tf.getInstance(id, pwd); 【Line:110】 ------------------------------------------------------------- 環境は以下の通りです。 Eclipse:3.4.2 JDK:1.6.0_20 AppEngine SDK:1.3.3.1 GWT SDK:2.0.3 twitter4j:2.1.3 「java.lang.IncompatibleClassChangeError」はコンパイラのバージョンが異なるメソッドの呼び出しなどで出てしまう様ですが、twitter4jのMANIFESTでは「Build-Jdk: 1.6.0_17」と書かれています。SDKのバージョンは上記環境のバージョンと「1.6.0_20」を試しましたが、どちらも同様のエラーでした。 どなたか解決方法をご教授頂けないでしょうか。よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう