• ベストアンサー

Java初心者です。クラスライブラリについて

Java初心者です。 オブジェクト指向やクラス・インスタンスの意味が少しずつ分かってきたような状態です。 実際にコーディングしてみて理解していこうと思うのですが、 例えば、「~~~みたいなことをしたい」と思ってプログラミングする際に、javaclassライブラリを検索して使い方を調べていくといった地道な作業をしていくのでしょうか。 また、そのクラスライブラリを使う際は、import ライブラリの入っているクラス名みたいなことを必ずつけるといった解釈で合ってますでしょうか。 初心者なので質問が的外れでしたらすみません。。。

  • smew
  • お礼率16% (7/42)
  • Java
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

文法だけ知っていても外国語を読み書きすることはできず、ある程度の基礎語彙力が必要なのと似ています。Javaの標準クラスライブラリやサードパーティーが作ったクラスライブラリにどんなクラスがあってどんな機能を持っているのかを把握していれば、プログラミングが容易になります。今やネットで大概のことは検索できるので楽なものです。また、やりたいことからサンプルコードを引くための逆引き辞典的な本も売られています。 > import ライブラリの入っているクラス名みたいなことを必ずつけるといった解釈で合ってますでしょうか。 import文は必須ではありません。プログラム中でFileクラスを参照している部分全てでjava.io.FIleとパッケージ名をつけて書くようにすれば、"import java.io.*;"を書く必要はありません。ほとんどの場合はimport文を書いたほうが楽ですけど。

その他の回答 (2)

回答No.3

#1さんの回答でだいたい網羅されているのですが、一つだけ追加を。 目的にあったライブラリーを探す方法として、検索するとだいたい答えが見つかるということや、使っているうちに鼻が効くようになってくるというのはありますが、それに加えて行うことは他人のコードを読むことと、コードレビューをすることを追加します。 Javaなどプログラミング言語にかぎらず、本をたくさん読んだほうが語彙力も読解力も高まりますし、それがまわりまわって自分の文章力になりますよね。様々な本を読めば、自分が同じような文章を書くときに応用でき、それだけ豊かな表現力となります。 また、外国語を覚える近道の一つに、その言葉を話す友人・彼氏・彼女を作ることというのがあります。その状況では、相手が話す言葉からTPOに応じた言葉遣いを理解できますし、自分の表現も相手に伝わったかどうかでどんどん修正されていきます。 プログラミング言語でも同じです。まず、他人が書いたコードをたくさん読むことでそれだけライブラリーの使い方やそれをどういう時にどういう形で使うかというノウハウが蓄積されます。あるいは、インタフェースの切り方などもそこから学べるかもしれません。 コードレビューをすることで、他の人の知識やノウハウを盗めますし、自分のノウハウも教えることができます。逆に、人にレビューをしてもらうことで、プログラムの書き方を向上してもらえたり、ノウハウを教えてもらえたりします。 ちなみに、ライブラリーが思い当たっても、自分が使い慣れていない場合はJavadocのその項目を一読したほうが良いと思います。引数や返り値の取りうる値、発生しうる例外、スレッドセーフかそうでないかなどはJavadocを読まないとわかりませんからね。 というわけで、他の人のコードを読んだり、コードレビューをしあったりすると結構勉強になりますよ。 余談ですが、エレガントな英文の書き方の指南書に"The Elements of Style"という本がありますが、Javaには"Effective Java"というエレガントなJavaのコードを書くための良い参考書があります。基本概念が理解できてきたということなので、これを一読されることをおすすめします。 > import ライブラリの入っているクラス名みたいなことを必ずつけるといった解釈で合ってますでしょうか。 #1さんの回答を言い換えると、 import java.io.File; というのは、「このファイルの中ではFileと言ったらjava.io.Fileクラスのことを指しますよ」と宣言するということです。省略記法を宣言しただけなので、省略前の名前であるjava.io.Fileでもちゃんと使えます。 そして、同名のクラスを複数使いたいときに、そういう書き方をします。 http://stackoverflow.com/questions/2447880/change-name-of-import-in-java-or-import-two-classes-with-the-same-name ちなみに、 import java.io.*; という書き方は、java.io以下のクラス一つ一つに対して上記で述べたような略記を宣言するという意味です。import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io....と各代わりに一発でそういう宣言ができるわけです。 余談ですが、この場合、java.io以下にクラスが追加されて、たまたまimport java.io.*;という宣言を使っているファイル内で宣言されていたクラスや他のimport文でimportされているクラス名と名前がかぶった時にコンパイルできなくなります。この状況を避けるために、import文に*を使うという書き方をコーディング規約で禁止していることもあります。製品レベルのコードサイズだとその修正もバカにならないですので。それに、IDEを使っていたらimportすべきライブラリーを示唆してくれるので、*を使わないでも結構快適にプログラムを書けます。

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

最初のうちは、~~~クックブックや~~~逆引きリファレンスといった感じの本を参考にすると良いかも知れません。 慣れてくると、配列操作をやりたければ java.util.Arrays か org.apache.commons.lang.ArrayUtils に何か有りそうだ、とか、文字列操作なら java.lang.String 自体か org.apache.commons.lang.StringUtils に使えるメソッドが有るだろう、とか鼻が利くようになってくるでしょう。 まずは、標準ライブラリの java.lang, java.util, java.io の主だったクラスを押さえれば、基本的な操作で困る事は無いと思いますよ。 余裕があれば、java.nio, java.nio2, apache-commons-lang, apache-commons-collections, apache-commons-io などもチェックしてみると良いかと。 また、大きな粒度の問題に関しては「java PDF ライブラリ」「Java Web フレームワーク」などとして検索をすればいろいろと見つかるでしょう。

関連するQ&A

  • Java:クラスをたくさん使ったプログラミング?

    Java言語勉強中のものです。 Eclipseをつかっています。 初心者ですので、易しい言葉でご回答いただければ幸いです。 Javaの基礎についてひととおり勉強しました。 オブジェクト指向についても、だいたい・・なんとなくは理解できていると思います。 ただ、自分で作成するときに、 うまくオブジェクト指向を取り入れたプログラミングができません。 なんだかあっちこっちのものを呼び出してきてとてもややこしいです。 クラスがたくさんつかわれているプログラムは、 ほかの人がつくったプログラムをなんとかがんばって読む、というのが精一杯です。 自分ではとても思いつかない構造ばかりです。 あっちこっちからよんできているので、図やらリストやらを書いて 本当に「なんとか」理解できた、というレベルです。 クラスが5個以上になると正直もう嫌だってなります。。実用レベルにはまだまだ至っていません。 本当の意味でオブジェクト指向を理解できていないのかもしれません。 どうすればそういった、オブジェクト指向をとりいれたプログラムが書けるようになるのでしょうか? いろんなプログラムを見る、数をこなすことでしょうか? 何かおすすめの参考書や、 「こういう考え方をすれば・・・」というものがありましたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • JAVA初心者(プログラミング初心者)

    現在、転職を考えていますがオブジェクト指向の勉強をするにあたって まず、何から始めればいいでしょうか? 先日面接時にオブジェクト指向の勉強をした方がいいと言われましたので。 プログラミングは全くの初心者です。

    • ベストアンサー
    • Java
  • クラス?オブジェクト?インスタンス?何がなんだか・

    一般的なオブジェクト指向の 定義として下記で合っているのでしょうか お願いします クラス:第2実体(人間) インスタンス:第1実体(例:山田) オブジェクト:色々なインスタンスをさして、抽象的に総称としてオブジェクト 例えば・・クラス:人間、インスタンス:山田 クラス:犬、インスタンス:ゴン 違うクラスのインスタンスをまとめて呼ぶ際にオブジェクト? よく分からなくなっています、よろしくお願いします

  • C++とJava

    オブジェクト指向を採用しているC++とJava。オブジェクト指向プログラミングに関連している部分で、二つの言語の大まかな違いは何でしょうか。

  • JAVAのクラスの考え方は・・?

    JAVAの勉強をしていている学生です。 常々思っていたのですが、クラスの考え方がしっくりきてませんヽ(~-~ よく参考書などで書かれていることで 「クラスは設計図のようなもの、オブジェクトはそこから作成した実体」 「鋳型がクラスでどんどん作れるのがインスタンス」 といった話が疑問でならないのです。 というのも・・クラスの設計って、自分自身をフィールドに宣言したりできますよね。。 でそこから生成して、また自分自身のフィールドに生成して・・とか。 インターフェースを実装したクラスで、、、内部クラスを持ったクラスで、、、ジェネリッククラス、、。 となってくると、最初の考え方では、論理的に無理?私の脳内では変換しきれないです(´;ω;) 多分前提となる考え方が間違っていたり、私の想像力が乏しいだけだと思います。 どなたか、「クラスってこう考えればオブジェクト指向が見えてくる」と表現している本やサイトなどご存じないでしょうか。 一朝一夕で理解しようとは思っていませんので、きちんと参考にして理解しようと頑張ります! 「私的には・・」や「あなたが勘違いしている箇所は・・」といったご意見もぜひお聞きしたいです! クラスかオブジェクト指向かどっちかというより、クラスありきでJAVAのオブジェクト指向が本当に理解できると考えています。参考書やWEBを探してみた限りではやっぱり理解できないです(´;ω;) ちなみにC言語を中学生で始め、プログラミングに触れました。

  • マルチプルインスタンスのメリット

    100%の自信をもって回答できる方のみ回答をお願いします。 Java等のオブジェクト指向プログラミング技術において、クラスからインスタンスを たくさん作れるというのが特徴の一つとなっていますが、クラスからインスタンスを たくさんつくれるメリットはなんでしょうか。 クラスからインスタンスをたくさん作れなくても、1つ作れば動くプログラムはたくさんありますし、 そういうプログラムであれば、staticなアクセスにすればよいですよね。 クラスからインスタンスがつくれることを説明した本やサイトは山ほどありますが、 インスタンスがたくさん作れることのメリットを説明した本をみたことがなく、 「なぜオブジェクト指向でつくるのか」という本を買って読みましたが、 納得がいくメリットを感じられませんでした。 また世の中のソースをみると、みんな、すぐにクラスを作ってオブジェクトを作っていますが、 みなさんがどうして、オブジェクトを作らなくてもコーディングできるケースのプログラムを オブジェクトを作るのか不思議でしかたありません。 どうしてオブジェクトを作らなくてもいいケースでもオブジェクトを作るのか、 またたくさんオブジェクトを作れるメリットはなんなのか、教えてください。

  • Cに慣れてしまった人、どのようにJAVAを克服しましたか?

    JAVAについて質問です。 私はC言語をこの1年間勉強してきました。 そしてC言語のコーディングの仕方に慣れきってしまったせいか、どうしてもJAVAのオブジェクト指向 というものが理解できません。 コーディングも上手くいきません。 クラスやメソッドやインスタンスがどうとかコンストラクタが・・・などの横文字が全然意味が分かりません。 C言語で言うとどれがどこに当たるのか!? とかいう風に置き換えて考えようとしても上手く行きません。 こういう、横文字が理解できて、オブジェクト指向の考え方に慣れる為にはどのようにしたらいいでしょうか? また、C言語からプログラミングに入って、後からJAVAを勉強する場合、どのような点に気をつければ良いでしょうか? また、JAVAの克服法を教えてください。

    • ベストアンサー
    • Java
  • Importしたクラスとメモリとの関係は

     こんにちは、JAVA初心者です、宜しくお願いします。  JAVAでクラスをImportしますが、これはどのような意味でしょうか。 (メイン)メモリの上に呼び出されると いうことでしょうか。  インスタンス化したクラスはメモリの上で領域を確保するとありますが、Importしたクラスはコンパイルまでは どのような状態なのでしょうか。

  • 本当にオブジェクト指向プログラミングっていいのでしょうか?

    いつもお世話になっております。 VC++初心者です。 現在、VC++6.0、MFCのソース修正で四苦八苦しています。 (コーディングするよりも。ソースを追うので苦労してます。) (初心者の私が言うのも難ですが、オブジェクト指向云々言う前に  ソースのif文節が異常に長かったり、3重以上ループが出てくると  とても嫌になります、、、) 一般的(?)に、プログラミングは 手続き型プログラミングよりオブジェクト指向プログラミングが 開発効率がよい、と重宝されているようですが、 どうも納得できていません。 (その手の書籍を2,3冊読みましたが消化不良に終わっています。) 個人的には、手続き型プログラミングの方が好きです。 というのも、慣れているからかもしれませんが、 ソースが追いやすいし、見やすいと思います。 逆にオブジェクト指向プログラミングでは、 ・継承されすぎると、基本クラスまで追うのが一苦労。 ・インスタンスをつくってから、関数を呼ぶのが面倒な気がする。  (手続き型なら関数呼び出しのみで済みます。) ・インスタンスをdeleteし忘れて、メモリを圧迫する危険がある。  (ガーベージコレクションというものもあるようですが、  どこで何を消しているか不安です。) ・ソースを追いにくい(慣れの問題なのでしょうか、、、) そこでですが、 「手続き型は~~で大変だけど、オブジェクト指向ならこんなにすばらしい」 というような対比的に具体例を挙げて説明されている 書籍、サイトの紹介、または、よい助言を頂けませんでしょうか。 また、上記に伴い、 ・手続き型で組んで失敗した例(オブジェクト指向型にすれば良かった例) ・オブジェクト指向型で組んで失敗した例(手続き型にすれば良かった例) も宜しければ教えて頂きたく、お願いします。 (成功例のみよりも、失敗からの成功例を教えて頂けると嬉しいです。) 長くなりましたが、宜しければご教授下さい。

  • Cとjavaの違い

    学校でC言語プログラミングを学んでおり,新たにjavaも習うことになったのですが, C言語とjava言語の違いはどのような所なのでしょうか? java言語は「オブジェクト指向」ですが,C言語は何指向なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう