5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【初心者】Java質問・相談スレ23【大歓迎】

1 :デフォルトの名無しさん:03/04/26 00:27
☆★☆こんなメッセージが出たら >>2 へ☆★☆
『'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』

>>2-3 初心者によくある質問と回答・他のFAQサイトへのリンク
>>4  JDKの配布元とAPIドキュメントへのリンク
>>5-6 過去スレの一覧
>>7-10 関連スレ
>>11 2ちゃんねる外のJavaサイト・無料の開発環境の配布場所
(諸般の事情でずれた場合は >>2-20 )

Google で検索 ⇒ http://www.google.co.jp/
JavaFAQ で探す ⇒ http://www.gimlay.org/~javafaq/javafaq.html
ご要望によりじゃばこサイト ⇒ http://www.javaco.org/
JavaScriptの質問はWeb製作板へどうぞ ⇒ http://pc3.2ch.net/hp/
パソコンの基本操作に関しては、PC初心者板へどうぞ ⇒ http://pc.2ch.net/pcqa/

これからJavaのプログラムを始めたいかたは >>2-4
必要な情報やコンパイラのダウンロード先へのリンクがあります。

基本的に sage 進行でおねがいします。また煽り厨は放置でお願いします。


952 :デフォルトの名無しさん:03/05/10 20:40
>>949 そのmainメソッド、一番最後でSystem.exit(0);してる。
ああいう雑誌のサンプルプログラムはあくまでも機能の使い方を学ぶ
ものなんだから、そしゃくしてちゃんと自分でコード起こさないと駄目だよ。

953 :デフォルトの名無しさん:03/05/10 21:01
オレジャヴァ暦1ヶ月なんだけど、今からブロック崩し作ろうと思うんだ。
そいでまずはブロックとボール動かすとこまでは来たわけ。
次はさ、マシーンみたいのをキーボードで操って
そっからボールが出てくるみたくしたいんだけど
キーボードからの入力がぜんぜんわからんくてさ
教えてください。

954 :デフォルトの名無しさん:03/05/10 21:07
>>953
Cで実装して、JNIで拾え

955 :デフォルトの名無しさん:03/05/10 21:45
>>953
KeyEvent とか KeyListener とか。

956 :デフォルトの名無しさん:03/05/10 22:19
えーと、Canvsクラスを継承してpaintをオーバライドしますよ?
paintってどこでも呼び出せてないのに、どうしてちゃんとイメージが描写されるんでつか?

957 :デフォルトの名無しさん:03/05/10 22:28
>>956
awtたんとかswingたんが呼んでまつ。

958 :デフォルトの名無しさん:03/05/10 22:32
>>956
ウィンドウ(Frame)の再描画イベントで呼び出されます。

959 :デフォルトの名無しさん:03/05/10 22:32
>>956
ん?どゆことでつか?
awtが呼ぶようになってるのはどうしてでつか?
Canvasを継承したらそういうふうになるの?

960 :デフォルトの名無しさん:03/05/10 22:35
ごめんなさい。見つけますた。
paint()メソッドは Canvasが Componentから継承したメソッドです。
すべての JDKのコンポーネントは、再描画が必要になった時(
それを知らせるイベントが伝達された時)、
この paint()メソッドが自動的に呼び出される仕組みになっています。つまり描画処理のメソッド名はあらかじめ定められているわけです。また描画に必要となる Graphicsのオブジェクトは、 paint()の引数として与えられます。
原則として描画の処理はすべて
paint()のような描画専用のメソッド
(もしくはそこから間接的に呼び出される下請けのメソッド)
の内部にまとめて記述します。そうしておかないと、
再描画の処理が完全に実行できないからです。


961 :デフォルトの名無しさん:03/05/10 22:35
>>956 java.awt.GraphicsCallback

962 :デフォルトの名無しさん:03/05/10 22:36
ソースうpするとこないの?

963 :デフォルトの名無しさん:03/05/10 22:39
>>962
どぞ。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

964 :デフォルトの名無しさん:03/05/10 23:08
java のコンパイラがソースをどの程度最適化してくれるのか
知りたいのですが, どこで勉強できるのでしょうか?

最適なコードを見やすく書きたいのでよろしくお願い致します.

965 :デフォルトの名無しさん:03/05/10 23:13
>>964
結構改善の動きが早いから昔の情報は役に立たないし、
http://www.gimlay.org/~andoh/hatena/JavaPerformanceTuning/
から関係ありそうな話題をピックアップしてくとかかなあ。
もちろん自分でバイトコードとかベンチマークを調べるのは当然として。

966 :964:03/05/10 23:32
>>965 さん 感謝.

なるほど, 見てみます.

964 質問の追記.
# 私が知りたいことを簡単に書きますと,
2 つの連続したSystem.out.print() が
バイトコードに変換された際には1 つに結合される
と言ったことなんですけど.

967 :デフォルトの名無しさん:03/05/10 23:47
>>964
まずはここからJDKのソースを入手する。
http://wwws.sun.com/software/java2/download.html

で、展開されたソースの hotspot/src/share/vm 以下とか
hotspot/src/cpu/i486/vm 以下を読んでみると良いんでない?

968 :967:03/05/10 23:49
って、Hotspot VMの最適化について知りたいわけじゃなかったのね。
忘れてちょ。

969 :デフォルトの名無しさん:03/05/10 23:52
超初心者の質問イイっすか?
インターフェイスってなんの為にあるんですか?
インターフェイスの宣言で、メソッドの中身って書かないじゃないですか。
じゃあ、なんで実装する必要があるの??
継承はメソッドの中身等も全て引き継ぐから分かるんですけど。
アホな質問スマソ。

970 :デフォルトの名無しさん:03/05/10 23:55
>>969
オレも初心者だが、Javaでは多重継承(二つ以上継承すること)ができないため
インタフェイスがあると思われ。インタフェイスなら複数実装可能だから、
ほとんどすべてのクラスに共通するような変数とかまとめてインタにしておいて
全部で実装とかだと思ってるんだけど

合ってまつか?(((((( ;゚Д゚)))))ガクガクブルブル

971 :デフォルトの名無しさん:03/05/10 23:56
クラスを使う人が便利になる。

972 :953:03/05/10 23:57
>>963
ごめん。ソースまるごとうpできるやつないでつか?


973 :デフォルトの名無しさん:03/05/11 00:00
http://www.h5.dion.ne.jp/~tuyano/JavaTutor/JavaTutorZ3.html
↑ここに書いてあるとおりにjarファイルを作ってみたんですが、
ダブルクリックしても
Could not find the main class. Program will exit!
とか出て実行できないんです。
ちゃんとMain-Class: P1って指定してるのに。
なぜだかわかる人いませんか?
コマンドプロンプトでなら実行できるんですが、めんどいんです。

974 :デフォルトの名無しさん:03/05/11 00:02
>>969
そのインターフェース実装してるクラスは、必ずそのインターフェースで定義されてるメソッドを実装している。
つまり窓口があらかじめ決められてるのと同じなので、他の人から見ても扱いやすくなる。

975 :969:03/05/11 00:08
なるほど。じゃあ更に質問イイっすか?
スレッドではRunnable、アクションイベントではActionListenerといった様に
実装させないといけないのは何故ですか?
「クラスを使う人が便利になる・扱いやすくなる」
っていうだけだったら、別に必要ないような気もするんですけど・・。
あぁ、なかなか理解できない・・。

976 :953:03/05/11 00:10
>>975
ん?実装すればいいだけだから便利だろ?
スレッドの時はRunnnable使えばいいってそれだけ覚えておけば
自分のやりたいことが出来るしょ?

977 :デフォルトの名無しさん:03/05/11 00:17
たとえばスレッド処理をしたい場合に
別に Runnable を実装しなくても run() メソッドを書けばいいのでは?
と思っているのかもしれない。
言語によっては実際にこういうことも可能である。

しかし Java では人間が run() メソッドを書き忘れるという可能性をなくすために
スレッド処理では Runnable を実装して run() メソッドがあることを保証する
というアプローチになっている。

978 :デフォルトの名無しさん:03/05/11 00:20
>>975
適切な Interface を実装しているかどうかコンパイル時にチェックできる。

979 :969:03/05/11 00:28
う〜ん、結局何の利点があるのかは微妙に分からないです・・。
よく参考書等に、「javaは多重継承を認めていないが、インターフェイスの
実装により、多重継承を可能にしている」みたいな文が書かれているが、
中身を引き継いでいないなら意味ないジャン!って思ってしまいます。
こんな超初心者に色々答えてくれてアリガトウございました。

980 :デフォルトの名無しさん:03/05/11 00:32
>>979
気持ちはよくわかる。漏れも勉強したての頃は必要性がよくわからなかった。

981 :デフォルトの名無しさん:03/05/11 00:33
>>979
要するに、「このインターフェースを継承してるクラスは、確実にこういうメソッドを実装していることを保証しますよ」ということだ。

982 :デフォルトの名無しさん:03/05/11 00:45
interfaceはデザインパターンでも有効に使われてるし、ものは使いよう。
個人的には、C++とOMTなんて時代の人間なので多重継承できなくて
モデリングで悩む事がしばしばあるが。

983 :名無しさん@monalipse:03/05/11 00:46
>>979
中身を引き継がなくてもいい場合というのがある。例えば件のActionListenerなんてそう。
ActionListener.actionPerformed()にデフォルトの実装があったって誰も使わないでしょ。
だから、
>中身を引き継いでいないなら意味ないジャン!
ってことは無い。
インタフェースは役割を果たせるとか能力があるといったこと(英語が話せる)ことを示すもので、
実装を引き継ぐこと(アメリカ人である、とか、帰国子女である)とは区別します。

984 :デフォルトの名無しさん:03/05/11 00:48
>>979
これを読んでみ。
http://java-house.jp/~takagi/archive/fj.comp.lang.java-interface-Sep1998/000066.html#body

985 :デフォルトの名無しさん:03/05/11 00:56
インターフェースは多重継承の代わりではない。
チーム開発の場合、インターフェースの威力は凄まじい。
変更に強いコードも作り易い。
インターフェースに対してプログラミングしろ!


986 :デフォルトの名無しさん:03/05/11 00:59
インターフェースの理解を深めたかったら、java.sqlパッケージを見てみろ。

987 :デフォルトの名無しさん:03/05/11 01:01
test.javaファイル

public class test{
public static void main (String args[]){
Chart c = new Chart();
}
}

Chart.javaファイル

public class Chart{
public void Chart(){
System.out.println( "called" );
}
}

簡略化するとこんな感じのクラスを作りました。
しかし、コンストラクタが呼ばれていないようでなにも表示されません。
仕方がないので、コンストラクタは空っぽにして、メソッドで実行しています。
これはどこがマズいのでしょうか、ご指摘をお願いします。


988 :続きです:03/05/11 01:01

また、コンストラクタをChart(String name)として、
文字列を引数に取るコンストラクタにして、
インスタンス化のときも、Chart c = new Chart( "aaaa" );
のような感じにするとシンボルが解決できませんと
コンパイルエラーになってしまいます。
これについても、ご指摘をお願いします。

環境は
java version "1.4.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-39)
Java HotSpot(TM) Client VM (build 1.4.1_01-14, mixed mode)
となっています。

FAQのコンストラクタ編とか、過去ログを「コンストラクタ」で検索はしました。

989 :デフォルトの名無しさん:03/05/11 01:06
public void Chart(){}
そもそもこれがコンストラクタだと思っているのかと小一時間

990 :デフォルトの名無しさん:03/05/11 01:08
>988
1000直前で質問ってのはかなりきわどいぞ。
あ、あとエラーメッセージはちゃんとこぴぺしてね。
といいつつ、おれ、スレ立てられないから誰かよろしく。
じゃ、おやすみ。

991 :デフォルトの名無しさん:03/05/11 01:14
>>989
ワロタ

992 :デフォルトの名無しさん:03/05/11 01:17
>>988
つまり、おまえさんのコードは、
常にデフォルトコンストラクタを呼び出す作りってことよ。


993 :名無しさん@monalipse:03/05/11 01:19
>>987
SJC-Pの問題に出てきそうなネタだ。

994 :デフォルトの名無しさん:03/05/11 01:21
くくしゲーーーット!!

995 :デフォルトの名無しさん:03/05/11 01:23
Java厨は氏ねよ

996 :デフォルトの名無しさん:03/05/11 01:23
JavaはC#のパクリ

997 :デフォルトの名無しさん:03/05/11 01:24
import microsoft.csharp.specification.*;

998 :デフォルトの名無しさん:03/05/11 01:26
import sun.java.license.*;

999 :デフォルトの名無しさん:03/05/11 01:26
Javaは死滅

1000 :デフォルトの名無しさん:03/05/11 01:26
C#はJavaのパクリ


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

291 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)