【Java初心者】今から始めるJava Part01
MSのJVM?
>>930 それ定数。
配列やImmutableじゃないクラスの場合はそうでもないが。
935 :
デフォルトの名無しさん:04/02/23 13:15
volatileって複数スレッドからアクセスされ得る変数につけるということでいいんでしょうか?
volatile Object data;
とか宣言した場合にはオブジェクトへの参照をもつdataが複数スレッドからアクセス可能という
ことですか?それともdataの指すオブジェクトがそうなのでしょうか
volatileはVMの動作で最適化を防ぎます
Cとかだと効果分かりやすいけどね
基本的にvolatileで変数を宣言するより
synchronizedで最適化を防止するほうがいい
1つのメソッドだけ使う場合ってのはあまりないはず
937 :
デフォルトの名無しさん:04/02/23 15:02
int データを char に変換して出力したいのですが、どう書いたらいいでしょうか?
性的メソッド?とそうじゃないメソッドってどう違うの?
静的メソッドはクラスに関連付けられているので
className.Method()
で呼び出す。
通常のメソッドはインスタンス(オブジェクト)に
関連付けられているので
clsName Object = new clsName;
Object.Method();
で呼び出す。
静的メソッドの場合は引数で変更するオブジェクトを
伝えてやらないとオブジェクトの中身を変更することは
できないです。
Java学習して3日目なんで、違ってたら
指摘おながいします。
>>940 Objectってクラスがあるので、例だとしても混乱のもとになるので
clsName Object 〜 なんて書き方やめましょう。
んーそうじゃなくて、なんで区別する必要があるの?ってこと。
例えば、
a = b.length( );
じゃなくて、
a = String.length(b);
でもいいじゃん。
>>942 Mathクラスなんかは非staticメソッドだと
使いにくくないですか? いちいちオブジェクトを
作成して、別にオブジェクトへの操作をするわけ
でもなし、かえって分かりづらい。
>>942の例は逆に全部staticメソッドにしたらどうかという
提案だと思いますけど、言語としてはそういう使い方
もできますけど、オブジェクトに対する操作というのが
明確にならなくて分かりにくいと思います。
>>942 オブジェクトの中身を熟知しているのはそのオブジェクト自身というのが基本
引数aだけの場合はいいけど、同じようにlengthを取得する、
ただし引数はクラスBといった場合その引数をかえた関数を
どんどん追加していかないとダメでしょ?
オブジェクト指向プログラムってのは相手の敷地に入って
いじくり回すのではなく、メッセージを投げ合うもの
つまり、「君のAクラスのlengthはいくつ?」って感じできくのだよ
C言語やってた人だと勝手に上がり込むstaticメソッド
多用したくなるのはわかるけどね
つまり、「Bクラスさんちょっくらあがらせてもらいますよ、lengthはこれですね」
Bクラスが変更されたらstaticメソッドもってるクラスもいじらないといけないし
java 2 SDK Standard Edition
ってドコからダウソするんだっけ?
前見た時とHPの内容が変わっててワカンネ
>>946 な、なんだってー
URLミスかな・・・indexに飛んじゃうんだよorz
アリガd
948 :
デフォルトの名無しさん:04/02/24 17:07
オブジェクト自体に対するsynchronizedブロックもしくはsynchronizedインスタントメソッドと
オブジェクトのインスタンス変数についてのsynchronizedは互いに相互排除されるのですか?
949 :
デフォルトの名無しさん:04/02/24 19:44
↑の補足です
class SharedData {
Data d;
synchronized void exampleMethod() {・・}
void exampleMethod2() {synchronized(this) {・・・}}
void exampleMethod3() {synchronized(d) {・・・・}}
}
これら3つのメソッドは相互排除されるんでしょうか?
exampleMethodとexampleMethod2はお互いにされる。
exampleMethod3はロックしてるものが違うからされない。
952 :
デフォルトの名無しさん:04/02/24 21:31
Socket sから入出力ストリームをgetInputStream/getOutputStreamで取得した場合、
ソケットを閉じる前にストリームを閉じた方がいいのでしょうか?
955 :
デフォルトの名無しさん:04/02/25 23:50
標準API以外によくつかわれるライブラリにはどんなものがあるんでしょうか?
知っておいた方が便利とかよく用いられるものがあったら教えてください
>>955 J2EE Servlet API…サーブレットのAPI。
JAX-P/B/M/RPC/etc…XML使っていろいろするAPI。
Jakarta-Commons…大抵の人が再発明を繰り返すであろうユーティリティ
が一堂に。それぞれいちいち便利です。
このへんは普通に使うようになるんちゃうかな。
957 :
デフォルトの名無しさん:04/02/26 09:42
winxp amd64でアプレットを使うためには、どのようにインストールすればよいのですか?
ただインストールすると、IEにJavaVMが出てこないのですが。
>>957 インストールしたってのはJRE?それともWinXP?
WinXPだったら、デフォルトでJavaVMが入らなくなってるので、
1. Windows Updateを使って、MicrosoftのJavaVMを入れる。
2. SunからJREをダウンロードしてきて入れる。
のどちらかでOK。
JREだったら、コンパネのJava Plug-inを開いて、
ブラウザタブの中のMicrosoft Internet ExplorerにチェックでOK。
959 :
デフォルトの名無しさん:04/02/26 19:22
NetBeansを入れてみたのですが、これは
コンソールアプリは作成できないのでしょうか?
javac と java で実行できるファイルなのですが、
NetBeansで実行すると
java.lang.NoClassDefFoundError: Example2/Example2 (wrong name: Example2)
at java.lang.ClassLoader.defineClass0(Native Method)
こういった感じのエラーがでます。
IDE Tutorial の SwitchColor は実行できました。
それと、Cでいうところの getchar(); のように、
コンソール起動した場合に自動的に終了しないような
メソッドがあれば教えてもらえるとありがたいです。
普通に作れるけど?
実行もおわれば自動的にプロセス終了するよ
あ、2つめまちがえた入力があるまでまつってことね?
リターンキーが押されるまでまつなら
System.in.read();
でいいのでは?
普通に使えてる方が多いみたいですね。
コンソールだと、
E:\Data\Dev_Java\PROJECT\Practice>java practice
8
class java.lang.Integer
こんな感じでうまく実行されるんですが。
どっか設定がまずいのかな。
>>962 これ使えました。ありがとうございます。
パッケージを指定したらうまく動作しました。
これは必須なんですかね?
package Practice;
public class practice
{
public static void main(String args[]) {
パッケージのディレクトリがずれているんじゃないの?
966 :
デフォルトの名無しさん:04/02/27 05:54
Javaって Mutexみたいな待ち時間付きの同期機構は
ないんですかね?
968 :
デフォルトの名無しさん:04/02/27 10:46
>>958 レスありがとうございます.
SUN jre 1.5.0 AMD64をいれました。
しかし、アプレットが動きません。
win2000では、IEにjavaVMが表示されるのですが、WinXP AMD64では、IEに表示されません。
JRE 1.4.2でも出てきません。
なにか手続きがあるのでしょうか。
AMD64ってわざわざかくってことは
XPのx86-64対応版?
jre1.5と並んで正式版じゃないしなー
x86-64版はIEが2つあった気がする
>>968 すまそ。AMD64はよく知らないっす。
Windows Updateから入れるMSのJVMは?
バージョンが1.1で古いけど・・・。
971 :
デフォルトの名無しさん:04/02/27 18:25
*.classファイルをダブルクリックで起動させる方法ってありますか?
x.class というファイル名の場合、
java x
で起動できますが、エクスプローラでこういう指定はできるのかな?
ふつうに出来るよ
ただ、配布して簡単に起動させたいのならjarにするべし
ダブルクリックで起動できるし圧縮もされる
リソース類もまとめれる
973 :
デフォルトの名無しさん:04/02/27 18:31
ファイル選択ダイアログ(javax.swing.JFileChooserクラス)みたいなやつでフォルダ選択できるものってないですか?
探してるんですけど見つからないんですが、ひょっとしてないですか。
>>973 それでディレクトリ選択の設定すればいいだけ
もしかしてAPIマニュアル読まない人?
975 :
デフォルトの名無しさん:04/02/27 19:46
>>974 すみません。
まだ読み方がわかってないみたいでした。
976 :
デフォルトの名無しさん:04/02/27 22:01
Baseクラスから派生されたDeriveというクラスのインスタンスを
作るときに、Baseクラスの引数付きコンストラクタを
呼ぶにはどうすればいいんですか? C++だと
class Derive : public Base {
Derive() : Base(a,b) { }
};
こんな感じですが。
>>976 class Derive extends Base {
public Derive() {
super(100);
System.out.println("Deriveコンストラクタ");
}
1階層上のコンストラクタはsuperで呼び出せました。
2階層上の引数付きコンストラクタは呼べないんですかね?
Baseクラスのコンストラクタで superを使うのが一般的なのかな?
ぬ
る
ぽ