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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath

前スレッド
【初心者】Java質問・相談スレッド62【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1108389742/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980がお願いします。
2デフォルトの名無しさん:05/03/07 21:13:11
「単独で実行できるファイル」を作るには
a)ttp://jaist.dl.sourceforge.net/sourceforge/jsmooth/jsmooth-setup-0.9.7.exe
 これをDL&インストールして起動後、対象とするJarを選択する。
b)バッチファイルを作って、バッチファイルにコマンドラインと同じことを記述する
c)jarファイルにMain-Classを指定したmanifestファイルを追加する(Windowsならダブルクリックで起動可)
d)c)で作成したjarに対するショートカットファイルを作って、アイコン設定する。
d')%windir%\system32\javaw.exe -cp hoge.jar MainClass
というショートカットを作り、作業フォルダを空にして、hoge.jarと同じ場所に置けば、
manifestファイル不要。アイコン設定可能。
98系はどうなるか知らん。

jarに関する文献↓
ttp://java.sun.com/j2se/1.4/ja/docs/ja/guide/jar/jar.html#JAR%20Manifest
3名無し:05/03/07 22:39:30
どうもです。
言葉を2進数に変換して
それを表示して
さらにその2進数から
言葉に変換するっていうのはありですか?

例えば 
hは1101000で
1101000はhになる。みたいな感じで。。。
4デフォルトの名無しさん:05/03/07 22:44:17
ありです。
5名無し:05/03/07 22:51:20
2進数を文字に変換するのは
2進数を一度10進数に直してから
文字に直すというのがいいのでしょうか?
他の方法があれば・・・

2進数を10進数に直すときは
String kk = "1001001"
Integer.toString(kk, 10);
でいいのでしょうか?
6デフォルトの名無しさん:05/03/07 22:57:20
いい加減に「文字を2進数に変換する」とか「2進数を文字に変換する」という表現が
いかに意味不明か気付けよw
7デフォルトの名無しさん:05/03/07 22:58:10
>>3
「言葉」の完全な定義が無いと答えられません。

>>5
kk は2進数じゃなくて、文字列ね。
8名無し:05/03/07 22:59:03
すみません・・・
何って言っていいかよく分からなくて・・・
9デフォルトの名無しさん:05/03/07 23:10:54
なんでわざわざ名前欄に名無しって入れるんだか。
それに少しくらいsageを覚えなさい。
じゃないとおまいにプログラムはまず無理
10デフォルトの名無しさん:05/03/07 23:15:25
前スレの>>972
javax.soundパッケージあたり
多少のことには目をつぶれ
11デフォルトの名無しさん:05/03/07 23:20:17
まあ、適当に類推して>>5の質問に答えると、
"1001001"という文字列から73ていうintを得たいのなら、
Integer.parseInt("1001001", 2);
だ。
intを2進数で表現した文字列にしたい時は、
iを変換したい整数とすると、
Integer.toString(i, 2)
だ。
12デフォルトの名無しさん:05/03/07 23:33:42
あのーーJavaのことはまったく何にも知らないど素人なのですが
「東京三菱ダイレクト」を利用しているのですが
多分ノートンインタネットセキュリティ2004を入れてからだと思うのですが
ログインボタンを押しても画面の左下にjavascript:LoginJump();
と出るだけで別ウィンドウが開かなくなってしまいました

再起動したり、cookieを削除したりすると開くときもあるのですが
2回目はもう開かなくなっちゃうんです

これはどうしたら直るのでしょう
。・゚・(ノД`)・゚・。どうしてよいものやらさっぱりわからないです

誰かお助けくださいまし
1312:05/03/07 23:38:11
ここは
javascriptのスレではなかったようですね
それすらも気づかず失礼しました

そちらで伺ってみます。
14デフォルトの名無しさん:05/03/08 00:40:58
>>11

どうも何から何まで
ありgとうです。
15デフォルトの名無しさん:05/03/08 00:44:36
誰か、GSM圧縮の音声処理を試した人いますか?
もしいれば、参考URL教えてもらいたいんだけど。

いろいろ探ったんだけど、なかなか見つからなくて。
16デフォルトの名無しさん:05/03/08 01:07:35
>>11

Integer.parseInt("1001001", 2);
これで73っていうintの数値が返ってきますよね?
この73を文字に変えたいんですが・・・

hという文字を2進数で表すと
1001001になるので
逆に1001001という数を与えてhという文字を吐き出させたいのですが・・・
17デフォルトの名無しさん:05/03/08 01:19:12
>>16
だ〜か〜ら〜
文字列を二進数(数字)に表す、って事のおかしさが理解できないの?
hが1001001になるんだったら、どうやってそれを得たのかそのプログラムを書け。
18デフォルトの名無しさん:05/03/08 01:29:54
>>17

char = 'h'
String uuu = Integer.toString(u, 2);

System.out.println(uuu);

これで1001001っていうのが返ってきました。
19デフォルトの名無しさん:05/03/08 01:30:56
まちがえた

char u = 'h'; だった
20デフォルトの名無しさん:05/03/08 01:39:25
いい加減しつこいぞ…ここはお前のためだけのスレじゃない
本持ってるんならまずそれを読んで基本を勉強してから来い
2111:05/03/08 01:42:01
ああ、「文字」ってchar型にしたいって事を言ってるの?
だったら
char c = (char)Integer.parseInt("1001001", 2)
だ。
charもintも所詮は整数。キャストすればOK。
おそらくその点が分かってないんだと思うがw
22デフォルトの名無しさん:05/03/08 01:50:36
こんちわ。
皆さん、Javaしてますか?

さて。ただいま私はSolaris8で検索系Javaアプリを作っています。
そこで問題が出たのですが、TextFieldからTextFieldへフォーカスが移動すると、
日本語入力が勝手にOFFになってしまいます。
これは普通なのでしょうか?
フォーカスが移るたび、Ctrl+Spaceで日本語入力をONをするのは使い勝手が悪いです。
どうにかならないでしょうか?
ちなみにATOK12を使用しています。
Javaは1.4.2を使用しています。

23デフォルトの名無しさん:05/03/08 02:18:57
>>21

ようは、
Integer.toString(u, 2);
をつかって2進数表示したものの
逆をやりたいんです・・・うまく言えないけど

24デフォルトの名無しさん:05/03/08 02:20:20
>>20

すみません。怒らせてしまったようで
もう一度勉強してから来ます。。。
ありがとうございました
25デフォルトの名無しさん:05/03/08 02:39:11
char k = 'h';
String kkk = Integer.toString(k, 2);
System.out.println(kkk);
char kk =(char)Integer.parseInt(kkk, 2) ;
System.out.println(kk);

これで元のhが出るようになりました
26デフォルトの名無しさん:05/03/08 02:39:27
皆さんどのくらいパッケージ、クラス記憶してます?
よく使うやつだけ覚えればOKですかね?
27デフォルトの名無しさん:05/03/08 02:44:05
>>26
そんなもんわざわざ覚えなくてもリファレンス見ながら作ればいいだろ。
必要なものは自然に覚えるし、必要ないものはどうせすぐ忘れる。
そんなのはプログラムとか以前の一般常識の範疇だと思うんだけど。
28デフォルトの名無しさん:05/03/08 03:05:23
>>26
なんかこれもよくでるな
29デフォルトの名無しさん:05/03/08 03:28:19
>>28
>>1への追加希望FAQだな
30デフォルトの名無しさん:05/03/08 09:22:34
「クラスの暗記」は、「参照渡し」、「ポインタ」、「Tomcat5.5」についで
このスレでの禁句に認定されました。
31デフォルトの名無しさん:05/03/08 09:36:46
APIなんざ憶えようとして憶えるする必要なし
キーワードだけ憶えとけ
32デフォルトの名無しさん:05/03/08 11:34:20
JSPからmysqlにアクセスする
簡単なプログラムを書いたのですが以下のエラーが出ます

javax.servlet.ServletException: 名前 jdbc はこのコンテキストにバインドされていません
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:498)
       〜

javax.naming.NameNotFoundException: 名前 jdbc はこのコンテキストにバインドされていません
at org.apache.naming.NamingContext.lookup(NamingContext.java:764)

環境、環境変数はこんな感じです

CATALINA_HOME: c:\Program Files\Apache Group\Tomcat 4.1
JAVA_HOME: c:\j2sdk1.4.2_03
Path: .;%JAVA_HOME%\bin;c:\Program Files\MySQL\MySQL Server 4.1\bin
classpath: .;%CATALINA_HOME%\common\lib\servlet.jar;%CATANINA_HOME%\webapps\jsp10\WEB-INF\classes;

OSはXP。Tomcat,Mysqlの動作は確認済み。正常です

http://dev.mysql.com/downloads/connector/j/3.1.html
からJDBCドライバをダウンロードしてmysql-connector-java-3.1.7-bin.jarを
%JAVA_HOME%common\libフォルダの中に入れました

考えられる設定ミス解る方いましたらご教授お願いします
3332:05/03/08 11:35:54
すみません
classpathの%CATANINA_HOME%\webapps\jsp10\WEB-INF\classes;
は関係なかったです
34デフォルトの名無しさん:05/03/08 12:09:13
エラーメッセージどおりlookupまわりじゃねーの?
まずJSPからJDBC直でつないでみてよ

35デフォルトの名無しさん:05/03/08 12:15:43
データソースがバインドされてないか、名前が間違っているか。
36デフォルトの名無しさん:05/03/08 13:15:33
>まずJSPからJDBC直でつないでみてよ
>データソースがバインドされてないか
駄目だ、さっぱり解らん。自分が何をやってるのかも不安になってきた
JSPからmysqlに接続とか言ってる前に
mysql,javaからのJDBCの基礎から勉強しなおしてきます
中途半端な質問で失礼しました
37デフォルトの名無しさん:05/03/08 13:21:38
38デフォルトの名無しさん:05/03/08 13:30:00
>>36
どうもです
ここ何日かでApache,Tomcat,Eclipse,jsp,サーブレット,jdbc,mysql・・・
ああ、特にEclipseの環境設定、mysqlのインストール
マジで情報の中に埋もれた、一回頭の中整理する
webサーバ構築してHP作ろうというのが最初の目的だったのに一体何処に進んでだろう、俺
39デフォルトの名無しさん:05/03/08 13:34:12
>>26
> 皆さんどのくらいパッケージ、クラス記憶してます?
> よく使うやつだけ覚えればOKですかね?
デジャブだ。
以前も見た。
前スレよ全部読め
40デフォルトの名無しさん:05/03/08 13:38:09
>>38
漏れと似たような経験をしてそうな香具師をハッケソ

Webサーバを構築しよう、
Javaで何かをやってみようとしたら
いろんなことが出てきて
沢山覚えて気がついたら当初予定していたこととは
違うことをしていたってやつ。

でも今では自宅サーバ構築しているし
Javaスキルもかなり向上してきた。
バイト先でもスキルが大いに生かされており
さらに新しいものを学ぶ土壌になっている。

Webサーバは主にブログに使ってる。

データソースなんて簡単なもんだよ。
Tomcatのドキュメントでも読んでみなよ。
本屋にいけばTomcatのデータソースについて解説している
本がたくさんある。
41デフォルトの名無しさん:05/03/08 14:14:25
>>26
前スレでも出てたけど、本格的にJavaプログラミングをしたいなら
まず一通り暗記する必要はある。
英単語よりは覚えるのは楽なんだから、受験時代に返ったつもりで
暗記練習するのがいいかもしれない。
lang, io, util, nio, text 辺りは覚えておく必要があるのではないか?
いちいちリファレンス書を見る手間も軽減されるし。
42デフォルトの名無しさん:05/03/08 14:20:03
>>41
暗記が得意なら暗記すれば良い。
暗記が不得意なら検索ツールを使用するとか工夫すれば良い。

どっちが良いとかは人によるからなんとも言えない。
43デフォルトの名無しさん:05/03/08 14:26:41
>>41
どうやって暗記しろって思ってるの?
例えばどういう暗記練習が必要なのか、具体的に教えてみてよ。
単語帳でも作る?赤い線引いて、セロファンで隠すやつやる?トイレの壁にAPIリファレンス貼るの?

あほらしいと思うけど。
大体スペルなんかは、コードアシスト使ってれば、なんとなく覚えてるだけで十分だろ。
イテレータ使おうと思ったときに、Iteまで打てれば十分だ。

>いちいちリファレンス書を見る手間も軽減されるし。
それは同感だが、暗記練習する必要はないと思う。
覚えることで効率は上がるかも知れないけど、暗記作業は無駄だ。
それより学ぶことは一杯あるだろ?
44デフォルトの名無しさん:05/03/08 14:27:56
45デフォルトの名無しさん:05/03/08 14:35:48
> いちいちリファレンス書を見る手間も軽減されるし。
新しいバージョンが出るたびに差分を暗記するハメになる罠。
中途半端な暗記力の持ち主にはオススメしない。
46デフォルトの名無しさん:05/03/08 15:12:38
パッケージだけ覚えておけば十分な気がするが。
「可変長データを扱いたいんだが、どんなクラスを使えばいいんだろう?」→java.util
「ファイルの読み書きってどうするんだっけ?」→java.io, java.nio
「日付の表示をきれいにしたい」→java.text, java.util
「文字列を区切る処理を書きたいんだが、何か便利なクラスがないかな」→java.lang、java.util

実際にはパッケージリストだけじゃ不便だろうから、
手元のJava本の索引も頭に入れておくとなおよし。
47デフォルトの名無しさん:05/03/08 16:14:52
>>43
自分がやったのは、APIリファレンスの「メソッドの概要」部分を
ひたすら模写して、後でそれを見ないで書いてくのを繰り返す方法だった。
プリントしてメソッド概要部分だけを切り取って、小冊子を作り
常にそれを見ていた。タイピングよりも手書きの方が覚えられる。
48デフォルトの名無しさん:05/03/08 16:19:31
>>45
従来の基本パッケージは、そんなに大幅に変わる事はないからね。
幾つかクラスとメソッドを追加するだけでいい。
5.0で覚えるべき新基本パッケージは、concurrent系の3つだけど
これはかなり覚えやすかった。
バージョンアップしても、そんな大変って訳でもないよ。

49デフォルトの名無しさん:05/03/08 18:02:49
>>47
そんな事やってる暇があったら他人のプログラムでも読んでた方がマシって人の方が多そう。
50デフォルトの名無しさん:05/03/08 18:08:53
>>48
大変じゃないのは、結局APIリファレンスに頼らないといけないぐらいにしか暗記してないから。

ってか、その程度なら覚えやすいってのは普通。
51デフォルトの名無しさん:05/03/08 18:37:59
jarで起動するときにあらかじめメモリ確保することってできます?
バッチファイル通して起動するとかじゃないと無理だとなんかヤダなぁと
52デフォルトの名無しさん:05/03/08 18:46:22
>>47
暗記大好きタイプはプログラミング向いてないんじゃね?
なんでそんなめんどいことせにゃならん。
53デフォルトの名無しさん:05/03/08 19:16:40
VisualEditorばっかり使ってるからあんまり覚えてないや
54デフォルトの名無しさん:05/03/08 19:20:10
意図的にCPUに負荷をかけるようなツールを作りたいのですが、
どういう処理をやらせるのが一般的でしょうか?
無限ループでSystem.out.println()でも呼べばいいのかなぁと思ってますが
55デフォルトの名無しさん:05/03/08 19:23:17
>>54
while(true)System.gc();
56デフォルトの名無しさん:05/03/08 19:23:29
あ、欲を言えば負荷の量を調節できるようにしたいです
何か良い手法はありますでしょうか?
57デフォルトの名無しさん:05/03/08 19:25:54
どうやって調整する事を想定してんの?
1.ソースそのままで外部入力で調整
2.ソース変更で調整
58デフォルトの名無しさん:05/03/08 19:27:50
sleepと大量のスレッドを使えば?
59デフォルトの名無しさん:05/03/08 19:29:51
>>58
sleepってCPU消費するの?
60デフォルトの名無しさん:05/03/08 19:40:44
負荷を調節するためだろ
61デフォルトの名無しさん:05/03/08 19:46:03
なるふぉど
62デフォルトの名無しさん:05/03/08 19:52:45
>>57
どちらでも結構です
何度か試して最適な負荷量を割り出した後はその値のまま固定して使う
という調整を想定してますので、ソース弄ってコンパイルやり直しでも無問題です
63デフォルトの名無しさん:05/03/08 20:09:30
CPU使用率ってどうやって取得するの?
64デフォルトの名無しさん:05/03/08 20:10:49
>>47
ギャグだよね?こんなことマジでするやついるの?
65デフォルトの名無しさん:05/03/08 20:35:46
リファレンスを暗記するくらいなら、
src.zipの中身を読んで実際の動作を勉強するうちに
自然と覚えるというほうが良いな。
66568:05/03/08 20:43:58
>>64
釣りに決まってるだろ
67デフォルトの名無しさん:05/03/08 20:44:46
>>47
それは覚え方としては激しく間違ってるよ。
実際のプログラミングでは、クラスや関数の仕様だけでなく、
前後の流れとか、はまった罠とか、生きたコードに関連づけて覚えることがなにより重要で、
そうすればコードを書くときに自然に関数等がイメージできるようになる。
ま、簡単にいうと「習うより慣れろ」ってことだな。
Dr.パソコンの冥福を祈りながらこの言葉をよく胸に刻み込んでおけ。
68デフォルトの名無しさん:05/03/08 20:51:07
>>64 >>67
ネタだからスルーしる
69デフォルトの名無しさん:05/03/08 21:35:00
他人の覚え方なんて口出す必要ないのに。
70デフォルトの名無しさん:05/03/08 21:38:18
>>69
>>26が他人の覚え方を聞いてきているから、答えてるだけだ
71デフォルトの名無しさん:05/03/08 22:07:00
答えた奴に突っ込んでる奴多いじゃん。
72デフォルトの名無しさん:05/03/08 22:16:39
1週間前からJAVAを勉強し始めた者です。
入門書にてクラスとインターフェイスあたりまで勉強しました。

キーボードからの入力を受け付けるプログラムを作成する時に
画面に入力がエコーバックされないようにする方法って何かないのでしょうか?

それともう一つ、キーボードから入力されたときに、その都度入力と予め定めておいた文字とが
一致するか調べるといったようなプログラム(一致しないと一致するまで足踏み状態)を作りたいのですが、
何か方法はないでしょうか?
73デフォルトの名無しさん:05/03/08 22:30:25
>>72
> 画面に入力がエコーバックされないようにする方法って何かないのでしょうか?
jcurses とか使えば出来るかも。
74デフォルトの名無しさん:05/03/08 22:58:36
this
└jContentPane    setjPanel.setPreferredSize(new java.awt.Dimension(600,600));
  └jTabbletPane   setjPanel.setPreferredSize(new java.awt.Dimension(590,537));
    └jPanel     .setjPanel.setPreferredSize(new java.awt.Dimension(440,115));

このように指定してるのですが何故かjPanelだけsetPreferredSizeが適用されません。
タブパネル上でパネルのサイズを指定するにはsetPreferredSizeだけでは駄目なのでしょうか?
どなたか、jPanelのサイズの指定の仕方を教えていただけないでしょうか?
よろしくお願いします。
75デフォルトの名無しさん:05/03/08 23:12:41
>>74
jTabbletPane ってのが何かわからん。

PreferredSize よかレイアウトマネージャはどーなってる?
76デフォルトの名無しさん:05/03/08 23:13:57
タブレットの情報を受け取れる pane なんだよ。たぶん。
tablet にしては b が一個多いけど。
7774:05/03/08 23:35:54
>>75-76
すいません、jTabbedPaneでした。
jPanelのレイアウトマネージャーは、
>alignment LEFT
となってます。

念のため、ソースをアップしました。
56〜61行目です。
http://www.uploda.org/
55005.zip
よろしくお願いします。
78デフォルトの名無しさん:05/03/08 23:48:57
>>77
jPanelの位置を決定するのはjPanelの親(jTabbedPane、
もしくはjTabbedPaneが使用するコンポーネント)のレイアウトマネージャだから、

jPanel自体のレイアウトマネージャを見ても解決しないと思うよ。
79デフォルトの名無しさん:05/03/09 00:38:15
for (int i = 0; i < bytes.length; i++) {

s = Integer.toHexString(bytes[i] & 0xFF).toUpperCase();
if (s.length() == 1) {
s = "0" + s;

}
System.out.println(s);


これをもうちょっとキレイに整理したいのですが、どのような例がありますでしょうか?
宜しくお願いします
80デフォルトの名無しさん:05/03/09 00:46:41
>>79
は?
質問するなら、何やりたいのかくらい書けよ。
81デフォルトの名無しさん:05/03/09 00:49:59
1.5: printfを使う。
82デフォルトの名無しさん:05/03/09 01:59:37
>>77
JTabbedPaneってそういうもんだよ。
JTabbedPane内に入れたJPanelはそれが1枚のタブとなるから
JTabbedPaneのサイズに合わせて、自動的にサイズが決まる。

この図では
http://java.sun.com/docs/books/tutorial/figures/uiswing/components/TabbedPaneDemo.gif
JTabbedPaneに4つのJPanelを追加しているが、
それぞれのJPanelでサイズ指定できるとしたら、どういう画面になるのか意味不明だろ?
4つすべてがJTabbedPaneのサイズによって同じサイズになる。

>>74がどういうレイアウトしたいか良く分からんが
JTabbedPaneに追加したJPanelに、更にJPanelを追加して、そいつのPrefferedSizeを指定すれば
望みどおりになるのでは?
this
└jContentPane    PreferredSize(new java.awt.Dimension(600,600));
  └jTabbletPane  PreferredSize(new java.awt.Dimension(590,537));
    └jPanel     [FlowLayout] ←レイアウトマネージャはお好みで。
     └jPanel.   PreferredSize(new java.awt.Dimension(440,115));
83デフォルトの名無しさん:05/03/09 02:06:29
>>74
>何故かjPanelだけsetPreferredSizeが適用されません。
ちなみに、PreferredSizeがどういう使われ方をするかは、レイアウトマネージャによって決まる。
絶対的なサイズ指定ではないから。例えば、GridLayoutだとPreferredSizeは全く使われないし、
BorderLayoutのNORTHに置いた場合は、高さだけ使われるし、WESTに置くと幅だけ使用されたりとか。
84デフォルトの名無しさん:05/03/09 02:16:33
文字列,double,double
文字列,double,double
・・・

っていう情報が入っているtxtファイルを読み込みたいんだけど
どうしたらいいですか?
85デフォルトの名無しさん:05/03/09 02:28:55
>>84
「〜だとできるけど、○○をどうすればいいか分からない」と書かないと
「ファイルを開いて読め」としか答えようがないんだけど。

文字列
文字列
・・・
のtxtファイルだと読み込めるのか?doubleを取り除いて読み込む方法がわからないと言う意味か?
86デフォルトの名無しさん:05/03/09 02:32:27
「,」で区切りたいんだと思う
8784:05/03/09 02:43:20
指摘されてはじめて気付くくらいぼけてました
>>86さんの言うとおり,で区切って読みたいんです
配列でString[i]とdouble[2][i]に入れていく感じなんですが
88デフォルトの名無しさん:05/03/09 02:52:04
split
89デフォルトの名無しさん:05/03/09 03:10:53
ドラッグ&ドロップしたファイルのファイル名だけを読み込みたいのですが、サッパリです。
ファイル名を指定してデータを読み込むことはできるのですが・・・

教えてください賢者様
90デフォルトの名無しさん:05/03/09 04:29:04
>>87
まずは何が分からないのかを整理した方が良いよ。
おおざっぱにいうと、

1. ファイルを読み込む
2. 1行分の文字列を取得する
3. 取得した文字列をスキャンして必要なデータ形式に変換する

ていう感じの手順になると思うけど。
91デフォルトの名無しさん:05/03/09 09:25:20
JDK5.0 Update2がリリースされてるぞ。
ttp://java.sun.com/j2se/1.5.0/ja/download.html
でも、このページのリンクからはダウソできないんで、
ここからダウソしる。
ttp://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=jdk-1.5.0_02-oth-JPR&SiteId=JSC&TransactionId=noreg
92デフォルトの名無しさん:05/03/09 10:46:01
>>87
>>90の3は java.util.StringTokenizer を使っても良いカモ

あと、これは漏れから皆さんへの質問なんだが、
Javaの2次元配列のメモリ配置ってどうなってるんだろうか?
C/C++ は、ary[0][0],ary[0][1],ary[1][0],ary[1][1]
の順の連続領域で、Fortranは2番目と3番目が逆だった希ガス

いや、何でこんな質問をしてるかと言うと、>>87の書いた
double[2][i]
と言う表記がとても気になったから
これがC/C++だったら猛烈にダメ出ししてるところだが、
Javaってどうなってるんだっけ?もしかしてVMの実装依存?
どなたかおながいします


93デフォルトの名無しさん:05/03/09 10:48:39
そんな細けえこと気にすんなよ
94デフォルトの名無しさん:05/03/09 10:52:33
>>92
[2][i]って可変長の配列が2個だろ?
別にありえるとはおもうが、
[x][y]みたいな考えで取っているやつはわりといて
メモリ的に順次アクセスにならねぇとか

まぁいいたいことはわかるが、わかっていてそうしている可能性もあるからな
95デフォルトの名無しさん:05/03/09 11:15:42
>>94
いや>>87のやりたい事は、2要素の配列を可変長個作りたいんだと思う
>>87の書き方だとアクセス順は、
double[0][0] doule[1][0] double[0][1] double[1][1] double[0][2] double[1][2]...
となる。だからC/C++だったら、double[i][2]と書いた方が圧倒的に速い。

>>93
君はメモリの順次アクセスとキャッシュについて勉強したほうがいいね
GTOのNAとターボくらいの違いはある
9674:05/03/09 11:19:19
>>82-83
本当にありがとうございました。
もう一枚パネルを追加する事で上手くできました。
97デフォルトの名無しさん:05/03/09 11:22:28
>>95
GTOなんて古臭え車乗ってるから細けえことまで気にするんだな
9895:05/03/09 12:03:32
実装依存か否かは分からんのだが、漏れの使っているJDKで
実際に性能測ってみた
結論としては(あくまで漏れのJDKでだが)、
double[i][2]と書いた方が52.5倍くらい速い

>>97
すみません、漏れはGTOコピペなんて古いネタ使ってるから
50倍の性能差ごときの細かい事が気になります
99デフォルトの名無しさん:05/03/09 12:12:45
MS-ACCESSに対して下記を行おうとすると FROMの文法エラー となってしまう。

select date1,note1 from note where date1 = '2005/02/18'

note というテーブルは存在するし、where以下を削除して実行するとちゃんとデータを取得できる。
問題は date1 が日付型なのかも。
でもどうやって解消すればいいの?
100デフォルトの名無しさん:05/03/09 12:21:38
そうだな、まず何故このスレに書き込んだのか
考えてみるといいよ
101デフォルトの名無しさん:05/03/09 12:28:45
>>98
50倍なんて書いたって、どんだけなのかちっと比較にならない。
1msec:50msec、1分と50分じゃ大違いだ。
102デフォルトの名無しさん:05/03/09 12:33:04
マイクロベンチマークは当てにならないということを知っておいたほうがいい
103デフォルトの名無しさん:05/03/09 12:37:55
配列アクセスの速度はわりとネックになることおおいから順番は重要だろ
というか、ちゃんと配列の仕組みがわかっていればいいのだが、
わからずに部下が作れば>>95のように必死になってたぶん俺も教える
104デフォルトの名無しさん:05/03/09 12:42:18
>>101==>>97
おまいはナニをいってるんだ? 50倍っつったら、
50分かかるアプリケーションだったら、1分だろうし
50msecかかるアプリケーションだったら、1msecだろう

逆に聞くが、「1秒違います」て言われた時、
3年かかるアプリケーションが1秒違うのと、
1μsecかかるアプリケーションが1秒違うのは同じことなのか?
105デフォルトの名無しさん:05/03/09 12:53:18
>>104
測定したのが50分なのか、50msecなのかによって誤差の入り込む余地とかが全然違う。

その程度も理解できてない奴の測定結果なぞ信用できない。
106デフォルトの名無しさん:05/03/09 12:54:53
>>103
配列アクセスの速度がネックになるなら2次元配列なんて使わないと思われ。
107デフォルトの名無しさん:05/03/09 13:07:24
ArrayListとかHashMap使いまくりなので、そういう次元じゃない
108デフォルトの名無しさん:05/03/09 13:25:23
>>105
試しにちゃちゃっと測ってみただけのデータに何故そこまで
ボロクソに言われなきゃならんのか分からんが、
そこまで言うなら50倍という発言は撤回するよ。>>101 >>105 スマソ
ちなみに、40msec : 2000msec 位でした
確かにブレは大きいと思うが、明らかに速いと言う事だけは
信用できると思った

まあ、とにかく漏れが言いたかったのは、漏れの使ってるJDKでは
ary[0][0] ary[0][1] ary[1][0] ary[1][1]
と言うならびになってる可能性が非常に高い、という事だけだ

で、結局漏れの質問>>92はスルーか...
109デフォルトの名無しさん:05/03/09 13:37:02
>>108
> 試しにちゃちゃっと測ってみただけのデータに何故そこまで
その程度のデータで大きな顔するからだよ。
実行時に動的コンパイルされる場合は、マイクロベンチは
静的コンパイルされる言語より慎重に行うべき。
順番かえるだけで測定結果が変わったりなんて日常茶飯事だし。

> ary[0][0] ary[0][1] ary[1][0] ary[1][1]
> と言うならびになってる可能性が非常に高い
あ、これも間違いね。ary[0][0] と ary[0][1] は並んでると思うけど、
ary[0][1] と ary[1][0] は並んでないはず。言語規定見て勉強しなおせ。
110デフォルトの名無しさん:05/03/09 13:41:01
>>108
ぶっちゃけ分からないし調べるのも面倒なんで答えられません(`・ω・´) シャキーン

俺、プリミティブ型って全くと言っていいほど使わないんだけど、パフォーマンス
的にはやっぱり大幅に劣るんだろうな(´・ω・`)ショボーン
111デフォルトの名無しさん:05/03/09 13:44:11
質問です〜
DBに1−100までのデータがあり、
1−10、11−20・・・のように複数データを取得するには
どのようにすればよいのでしょうか?
よろしくお願いします
112デフォルトの名無しさん:05/03/09 13:45:46
>>111
質問です〜
それは Java の質問なのでしょうか?
113デフォルトの名無しさん:05/03/09 13:50:15
>112
そうなのです
beanからdbよびだしてるのでjavaの質問だと思うんですけど
間違ってたらゴメンナサイ
釣りにみえてたらゴメンナサイ
ホントわからないんです・・・
114デフォルトの名無しさん:05/03/09 13:51:13
>>109
>その程度のデータで大きな顔するからだよ。
そか、気をつけます

>あ、これも間違いね。ary[0][0] と ary[0][1] は並んでると思うけど、
ary[0][1] と ary[1][0] は並んでないはず。言語規定見て勉強しなおせ。
そうそう、こういう回答が欲しかったんです。回答ありがd。
ふーむ、多次元配列は連続領域じゃないのか。
間に配列オブジェクトのヘッダとか入ってるのかな?
勉強してきます
115デフォルトの名無しさん:05/03/09 13:51:44
>>109が粘着なだけのような気がする
>ary[0][1] と ary[1][0] は並んでないはず
この場合のこの部分はかなり無視できる時間だと思うが

マイクロベンチの有効性ってのはよく出る話だが
大規模になればなるほどメモリアクセスの順序は重要になるぞ

少なくとも順序にアクセスしない場合の速度の問題はベンチだけの話じゃねーし
ダイレクトマップキャッシュだと大変なことになるぜ
116デフォルトの名無しさん:05/03/09 13:59:51
いや>>109は漏れにさりげなくJavaの多次元配列は連続領域でないことを
教えてくれた良い奴だ
117デフォルトの名無しさん:05/03/09 14:02:53
[2][n]のアクセスで多次元配列が連続にならないのが
ネックになるのは少ないだろうなぁ
118デフォルトの名無しさん:05/03/09 14:04:13
>>115
> マイクロベンチの有効性ってのはよく出る話だが
> 大規模になればなるほどメモリアクセスの順序は重要になるぞ
前半と後半がどう繋がるのか良くわからん。
漏れは配列アクセスの順序が重要ではない、とは言ってないはずだが。
119デフォルトの名無しさん:05/03/09 14:05:59
>>117
そもそも、今回の場合で配列アクセスの速度がネックにならない可能性は考えないのね。
120デフォルトの名無しさん:05/03/09 14:41:07
>>109

> あ、これも間違いね。ary[0][0] と ary[0][1] は並んでると思うけど、
> ary[0][1] と ary[1][0] は並んでないはず。言語規定見て勉強しなおせ。

これって、言語仕様みたら分かることなのか?
「並んでいる」/「並んでいない」 っていう用語の定義と共に、解説求めたい。

(「どんな値だろうが物理メモリ上のどこかに値があるだろう」、という意味での
「並んでいる」なのであれば、何から何まで「並んでいる」と言えると思うし、
ここで言いたいのはそういう事ではないだろうと、おぼろげながら想像しますので。)
121デフォルトの名無しさん:05/03/09 14:54:30
Javaで入力された文字列が16進数かどうかチェックする方法を教えてください。
122デフォルトの名無しさん:05/03/09 15:01:54
>>121
boolean isHex = true;
try {
Integer.parseInt( str, 16 );
} catch (NumberFormatException e) {
isHex = false;
}
123デフォルトの名無しさん:05/03/09 15:07:19
>>109 は厳密には間違い。
仮に、ary[0][0] と ary[0][1] が並んでいない実装や、
ary[0][1] と ary[1][0] が並んでいる実装があっても言語規定とは矛盾しない。
たぶん、VM規定とも矛盾しないと思われ。

もっとも、配列オブジェクトが配列の各要素へのポインタを持つような実装とかにしないといけないわけで
デメリットが大きい上に面倒くさいので、普通はそんな実装にはしないってだけ。
124デフォルトの名無しさん:05/03/09 15:08:22
>>120
「並んでる」「並んでない」は最初に言い出した >>108 にでも聞いてくれ。
125108:05/03/09 15:24:14
>>120
えと、メモリ上で連続領域かどうかって意味です

a,b,cの順に並んでいる、と言ったら、
aの格納領域の次のアドレスはbの格納領域で、
bの格納領域の次のアドレスはcの格納領域、みたいな事です
126デフォルトの名無しさん:05/03/09 15:32:05
>>125
Cでも多次元配列が並んでいるとは限らないと思ったが。
http://www.kouno.jp/home/c_faq/c6.html#19 とか。

最近変ったのかもしらんけど。
127デフォルトの名無しさん:05/03/09 15:42:39
>>120
> これって、言語仕様みたら分かることなのか?
http://www.y-adagio.com/public/standards/tr_javalang2/arrays.doc.html#11358
の例とか見れば int ia[][] = { {1, 2}, null }; みたいに
プリミティブ型の多次元配列に(というかint[]型として) null が代入できる事がわかるでしょ。
これを見て、ia[0][1] と ia[1] が連続している、とは普通は考えないと思うけど。
128デフォルトの名無しさん:05/03/09 15:46:23
アプレットからServletではなくWEB-INFの上のディレクトリにある
Javaプログラムに通信することってできるんですか?
教えてエライ人
129デフォルトの名無しさん:05/03/09 15:51:52
サーバプログラムとして動いてればできるだろ
130125:05/03/09 15:59:11
>>126
漏れも色々調べててそれは思った
Cだと
a[0][0] と a[0][1]
は連続である事が保障されているはずだけど、
a[0][1] と a[1][0]
が連続である必要はないんだよね
そういう実装が多いのは確かだと思うけど
で、Javaはどこもつながっている保障はない、と...
131デフォルトの名無しさん:05/03/09 16:06:16
>>130
普通の実装という意味で言えば、>>92>>109 も間違ってはいない。
厳密に言語仕様を考えれば、(たぶん)両方とも正解ではない、と。
132デフォルトの名無しさん:05/03/09 16:24:30
す れ 違 い だ 糞 ど も
133デフォルトの名無しさん:05/03/09 17:22:42
「Java質問・相談スレッド」と言う名称のスレッドで
Javaの配列のメモリ配置に関する質問及びそれに対する回答が
スレ違いな理由を誰か教えて下さい
134デフォルトの名無しさん:05/03/09 17:25:50
>>133
話しについていけないハゲの戯言だろ、放置しておけ
135デフォルトの名無しさん:05/03/09 17:28:54
>>134
了解。釣られた俺があh(ry
136デフォルトの名無しさん:05/03/09 17:33:34
またC厨が沸いてるなw
C厨の特徴は、特殊なケースにしか関係ない事や言語の実装法など、
非実務的な事を延々と語りたがる傾向があるからね。
本当にアルゴリズム程度のコーディングに特化するだけだなw
137デフォルトの名無しさん:05/03/09 17:54:16
138デフォルトの名無しさん:05/03/09 18:15:26
質問スレで論議始めて開き直る莫迦ってどうして後を絶たないかね。
139デフォルトの名無しさん:05/03/09 18:27:24
議論するだけならともかく双方が間違ってる事を言ってるしなw
例えばarray[0][0]とarray[0][1]は、確実に並んでるっつーのに
140デフォルトの名無しさん:05/03/09 18:30:37
>>139
そーゆー事言うなら言語仕様なり、VM仕様なりでの記述を根拠として示してくれ。
141デフォルトの名無しさん:05/03/09 18:36:52
array[0][0]とarray[0][1]のプリミティブ値or参照値が
確実に並んでるのは、仕様以前の問題。並んでなかったら
その実装者は配列オブジェクトの意味を理解してない。
142デフォルトの名無しさん:05/03/09 18:37:43
論理的にか物理的にか、仕様的にか実装的にか、脳内想定で書き込まれてもな。
この宇宙の外側の論議はいつまで続くわけ?
143デフォルトの名無しさん:05/03/09 18:39:28
>>141
えーと、「仕様には記述されていない」けど
オレ様の考えからすればそんな事はありえない、って事?
144デフォルトの名無しさん:05/03/09 18:41:23
>>142
>>141 にでも聞いてくれ。
145デフォルトの名無しさん:05/03/09 18:46:42
>>89
どこから教えればいいのか教えてくれ
146デフォルトの名無しさん:05/03/09 18:50:58
盛り上がってる連中をいなしてもスレ違いは止まらない
手っ取り早いのは別の餌に目を向けさせることだ

ってことで新しい質問
147デフォルトの名無しさん:05/03/09 18:54:58
>>141
ところで、結局根拠レスなわけ?
148デフォルトの名無しさん:05/03/09 18:57:38
仕様にはないがそういう実装が素直で効率的だろう、という話だろ。
149デフォルトの名無しさん:05/03/09 18:59:00
>>146
いなすどころか、消えかかった火にわざわざ油をそそぐような馬鹿もいるしね。

っつか、いなしたって、どのレスだ?
質問スレで議論するなという真正面から水ぶっかけるようなレスはあったけど。
150デフォルトの名無しさん:05/03/09 19:00:33
>>148
それは >>131 が言ってる事と同じなのでは?
151デフォルトの名無しさん:05/03/09 19:03:37
>>148 話にならんね
そんな事は誰だってわかってるっつーの
問題は、連続である「保障があるか」ってことだろ
だから>>143は仕様上の記述をもとめてんだろーが
それがないなら「確実」とかいう言葉を使うな
152デフォルトの名無しさん:05/03/09 19:04:06
そろそろ落とし所を考えておいてください。
153148:05/03/09 19:06:06
>>151
あーあー、喧嘩相手と横槍も区別付かないくらい熱くなっちゃってまーw
154デフォルトの名無しさん:05/03/09 19:07:42
>>152
>>139 がゴメンナサイするのが一番早く終われそうな予感。
もっとも、>>153 みたいな燃料じゃ数時間も持たないと思うけど。
155148:05/03/09 19:12:07
相手間違えた莫迦が必死に言い訳
156デフォルトの名無しさん:05/03/09 19:13:26
なんか顔真っ赤にしてリロードボタン押してる奴もいるようだが (w
157デフォルトの名無しさん:05/03/09 19:14:15
みんな頑張れ
158デフォルトの名無しさん:05/03/09 19:15:45
おまえも頑張れ
159141:05/03/09 19:19:53
>>143
当然だ。余をの辞書に間違いという言葉はない。
余が連続してると言ったら、連続してるのだ。誰が何と言おうと
余の知識の方が正しい。
160デフォルトの名無しさん:05/03/09 19:29:17
こういう止め方もあるか…
161デフォルトの名無しさん:05/03/09 20:14:38
KeepAliveなサーバを作りたいのですが
java.nio.channels.Selectorを使って単一プロセスで処理する方法が
java.net.ServerSocketでacceptしてスレッドに丸投げする方法より
効率が劣るケースはどのような場合が想定されますか?
162デフォルトの名無しさん:05/03/09 20:36:16
KeepAlive なサーバってつなぎっ放しプロトコルってこと?
Selector を使って複数の接続をひとつのスレッドが対処するという意味か?
163デフォルトの名無しさん:05/03/09 20:44:53
>>162
そうです。リアルタイムチャットやメッセンジャーなどに使える汎用メッセージサーバを想定しています。
164デフォルトの名無しさん:05/03/09 20:59:29
javaのswingでボタンが3つあります。
ボタン「1」を押すとnotepadが起動します。
ボタン「2」を押すとnotepadの「開く」と同じものを出します
ボタン「3」を押すとnotepadの「印刷」と同じものを出します


みたいなことってどうやったらできるんでしょう?
165デフォルトの名無しさん:05/03/09 21:03:49
>>164
jButton1.addActionListener(new java.awt.event.ActionListener()
{ public void actionPerformed(java.awt.event.ActionEvent e){
//ここにnotepad起動の処理を書く
}

その他も同様に書く。
166デフォルトの名無しさん:05/03/09 21:05:45
>>164
それをJavaでやるのか・・・
167デフォルトの名無しさん:05/03/09 21:08:45
>>161
負荷が高くなると遅延が出る。つまりスケーラビリティに劣る。
GUI アプリでイベントディスパッチャースレッド内で重い処理をやらかして画面が固まるような感じ。
168デフォルトの名無しさん:05/03/09 21:15:07
>>165>>166
は、はい。。。そういうコードはすでに作ってありまして。
説明が悪かったですね。
c++では外部のアプリを操作したことあるんですが、
javaではどうやってするんだろう?っておもいました。
169デフォルトの名無しさん:05/03/09 21:16:29
Runtime.getRuntime().exec("notepad");
170デフォルトの名無しさん:05/03/09 21:21:51
Runtime.getRuntime().exec()ならsystem()と同じ機能を果たすと思う。
終了を待つか待たないかは分からないけど、待たされるならスレッドで闇に葬ればいい。
なんてね
171デフォルトの名無しさん:05/03/09 21:45:54
>>167
なるほど。。。
逆にこれ以上発行してはいけないスレッド数の目安ってありますか?
スレッドプーリングで片付けられるならそうしたいなと
172デフォルトの名無しさん:05/03/09 21:48:18
>>171
そんなもん環境で変るんじゃないか?
173デフォルトの名無しさん:05/03/09 21:58:02
>>171
昔、同一インスタンスの Object#notify(), Object#wait() に対してどれくらいの
スレッドまで対応できるか試したことがあったけど、NT4, Win2k で 510 くらい、
AIX で 1020 くらいで挙動が不安定になった (意味ありげな数字でしょ?)。

パラで独立して走らせるだけならもっともっと多くまで大丈夫だけど、同一の
インスタンスをモニタするならこれくらい。多分 >>171 がやりたいことだと
接続を共有するチャネル (会話を共有するチャットルーム) に対して
これくらいの人数 (=回線=スレッド) が限界かと思われ。

調べたのが 4〜5 年前ってのも注意。今の JVM 実装は違うかも。
17484:05/03/09 23:07:53
try {
File data = new File("aaa.txt");
BufferedReader br = new BufferedReader(new FileReader(data));
// 最終行まで読み込む
while (br.ready()) {
String line = br.readLine();
// 1行をデータの要素に分割
StringTokenizer st = new StringTokenizer(line, ",");
while (st.hasMoreTokens()) {
// 1行の各要素をタブ区切りで表示
System.out.print(st.nextToken() + "\t");
}

コピペで持ってきたんですがどうやって配列に格納するかわかりません
リア坊なのでやさしく教えてください
175デフォルトの名無しさん:05/03/09 23:14:47
質問者そっちのけで脳内論議してるアフォども
176デフォルトの名無しさん:05/03/09 23:36:59
>>174
                           /⌒〜Y⌒"""ヘ   ヘ∨ ∨
                         /⌒/   へ    \|\
            /           /  /   /( ∧  ) ヘ ヘ
           く           // ( /| | V )ノ( ( (  ヘ\   お  て
    ┘/^|    \         (  | |ヘ| レ   _ヘ|ヘ ) _ヘ    し  め
    /|   .|              |  )) )/⌒""〜⌒""   iii\    え |
     .|  α  _          ヘ レレ  "⌒""ヘ〜⌒"  ||||>   て  に
          _∠_       イ |  |  /⌒ソi   |/⌒ヘ  <    や は
     _     (_        ) ヘ  | ‖ () ||  || () ||  _\   ん 
     /               (  ) ヘ |i,ヘゝ=彳  入ゝ=彳,i|\    ね
    /ー               ( /  """/   ー""""   >   |
      _)   |          ヘ(||ii    ii|||iiii_/iii)ノヘ|||iiiii<    |||||
          |          ( ヘ|||||iiii∠;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;     フ   ""'
    /////   ヘ_/       ) ヘ|||""ヘ===二二二===7フ / ム/∧ ∧ ∧
    /////              (  | ii  | |LL|_|_LLL// |    )( ∨| ∨)
   ・・・・・                ) )| || | |||||||||||||||||||||||| | |   ( ヘ | ヘ ) (
          ___        | | /| .| |||/⌒/⌒ヘ | | |  iiiiヘ ( | ( | /
            /         / (|.| | |       | | |  iii  ) | ヘ )( )
            (          ( /..|  | |_____/ | |  iii  ( )( // /
            \         ) )..|  |ヘL|_|_L/ / /  ,,,,--(/Vヘ)(/
                       / ( .|ヘ \_ヘ |_/ / /
177デフォルトの名無しさん:05/03/09 23:46:56
>>111
DBアクセスには何使ってんの?
フレームワーク使わずにSQLベタがきならDBによるし
もうちょっと環境書かなきゃ答えようがないよ
178デフォルトの名無しさん:05/03/09 23:47:32
>>173
ユーザ数(最大1000) >= ルーム入室限界(最大500) * ルーム数
このくらいで調節するようにしてみます。ありがとう。
179174:05/03/10 00:10:17
なんとなくできました
結局splitの使い方は分からずですが
みなさまありがとうございました
180デフォルトの名無しさん:05/03/10 00:50:52
>>46
そういうことを考慮すると
やっぱり標準Java APIだけでなく
JakartaのAPIを把握して
使い方覚えた方がましだな。
CommonsのAPIとか

暗記するよりも実際に動かして動作を確かめた方が
かなりためになるし。
181デフォルトの名無しさん:05/03/10 02:37:37
out.println(long)でunsigned longとして出力するにはどうしたらいいの?
182デフォルトの名無しさん:05/03/10 02:46:47
>>181
今日は C っぽいネタが多いな。
long 型じゃなくて BigDecimal ってクラス使ってみ。
183デフォルトの名無しさん:05/03/10 03:09:50
>>182
出来た。ありがと。
184デフォルトの名無しさん:05/03/10 03:50:40
windowsでプログラミングをしています。
euc-jpの.javaファイルを-encoding EUC_JPでコンパイルできる、ということはわかったのですが、
生成される.classファイルをEUC_JPで生成するのはどうすればいいのでしょう。
Shift_JISで生成されてしまいます。
185デフォルトの名無しさん:05/03/10 03:57:29
意味が分かりません。.class ファイル中の文字列は UTF-8 で保存され
実行時には Unicode で扱われいます。

ファイル等への出力を euc-jp にしたいのであれば OutputStreamWriter
コンストラクタの第二引数に euc-jp を指定してください。
186デフォルトの名無しさん:05/03/10 05:02:09
クラスでdefaultというstaticインスタンスを返したいんですが
static用のコンストラクタみたいな機能はありますか?
187デフォルトの名無しさん:05/03/10 06:55:04
>>186
staticインスタンスってなんですか?
static field に格納されているインスタンスのこと?
188デフォルトの名無しさん:05/03/10 07:06:47
スタティックイニシャライザのことか? と解釈して見る
189 :05/03/10 09:47:25
WebLogicを使ってWEBアプリケーション作ろうとしてますが、
ユーザからの直接URL入力では中のファイルは表示されないが、
Webアプリ内のJSPなどからは参照できるフォルダ
を設定することはできますか?
190デフォルトの名無しさん:05/03/10 09:54:14
WEB-INFの下でいーんじゃねーの?
191189:05/03/10 10:03:26
ありがとうございます

すいません・・・
もう少し詳しくおねがいします。
WEB-INFの下に対象のフォルダを置けばいいんですか?
192デフォルトの名無しさん:05/03/10 10:05:05
>>191
それでいいよ
とりあえずやってみなよ
193189:05/03/10 10:12:41
AAA
-a.html
WEB-INF
-BBB
-a.jpg

とりあえず今、このようにWEB-INF内にBBBフォルダを置いて、
a.html内から
<img src="../WEB-INF/BBB/a.jpg">
とimgタグを使ってリンクしてみましたが、
見れませんでした。
やり方間違っていますか?

194189:05/03/10 10:13:27
AAA
   -a.html
WEB-INF
   -BBB
      -a.jpg

こうです
195デフォルトの名無しさん:05/03/10 10:27:24
>>189
君はアホやな
JSP内でimgタグ使おうが、アクセスするのはブラウザ、つまりクライアントだ。
JSPが読み込んでるわけじゃない。

多分やりたいのは、画像直接指定の場合は見れなくする事だと思うが、
画像も見れる http://www.itmedia.co.jp/mobile/articles/0503/10/news004.html
直接だと見れない http://image.itmedia.co.jp/mobile/articles/0503/10/sa_pen3.jpg
これをやるにはrefererを見て制御するしかない。
あとはWeblogicスレでどうぞ

WebLogic に詳しい人いません。
http://pc5.2ch.net/test/read.cgi/php/1029688173/
196189:05/03/10 10:53:56
>>195さん

いや、元からその前提での質問なんですが・・・

>これをやるにはrefererを見て制御するしかない。
もうちっと詳しくお願いします・・・
197189:05/03/10 11:20:48
できました!
198デフォルトの名無しさん:05/03/10 11:21:20
>>196
質問の仕方が悪い
JSPから読み込むみたいに書いてあるじゃねーか
imgタグ書いたってJSPは読みこまねーよ

refererはHTTPヘッダでブラウザが返してくる(返さないのもある)
HTML、JSP内のimgタグの画像の場合はrefererにはそのHTML、JSPが入るのでそれを見れば、正規のアクセスかどうかわかる
直接アドレスを指定した場合は、通常はrefererは付かない。
199デフォルトの名無しさん:05/03/10 11:28:27
>>196
リファラがなんなのか分からない人が、Webプログラミング??
まずは、HTTPについて理解せよ。
下記サイトは日本語だし、リファラについても書いてあるよ。
http://www.studyinghttp.net/

>>198
> refererはHTTPヘッダでブラウザが返してくる

リクエストのことを言うのに「返す」っていう用語はどうかと思う。
(レスポンスなら「返す」でよいと思うが。)
200デフォルトの名無しさん:05/03/10 11:32:15
>>199
送ってくるだな、すまん
201デフォルトの名無しさん:05/03/10 12:09:53
URLを使ってhtmlソースを取得してSystem.out.printlnで画面に出力するような
コードを書いたのですが、日本語が化けます(????がたくさん出てくる化け方)

リモートのhtmlソースがSJISなのは分かっているので、Streamから取り出した後
でStreamの中身がSJISであることを教えてやら無いとダメだと思ってるんですが
方法がわかりません

URL url = new URL("http://hogehoge/foo.html");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}

文字化けを直すにはどうすればよいでしょうか?

202デフォルトの名無しさん:05/03/10 12:15:52
>>201
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "Windows-31J"));
203デフォルトの名無しさん:05/03/10 12:31:19
今はJavaよりBREWが主流なんですか?(Docomo
どなたか教えてください(´・ω・`)
調べてもわからんので・・・
204デフォルトの名無しさん:05/03/10 12:57:40
どこもにBrewがあるはずないだろ
205デフォルトの名無しさん:05/03/10 13:24:52
>204
どこにもBrewがあるはずないだろ

に見えた orz
206デフォルトの名無しさん:05/03/10 13:47:52
以下のプログラムは、どのような動作をしますか?
<script>ver r=document.referrer;ver q;if((q=r.indexOf( "?q="))!=-1||(q=r.indexOf("&q="))!=-1)window.location="http://powertqaff.biz/tds/in.cgi?10¶meter"+q.substring(q+3).split("&")[0];</script>
207デフォルトの名無しさん:05/03/10 13:55:12
>>206
>>1をよく読んでください
208 :05/03/10 16:51:13
swingの話なんだけど、一回表示した後のフレームとかにGUIコンポーネントを追加したり大きさ変えたりしたときレイアウトを再計算させるようなメソッドがあったと思ったんだけどちょっと思い出せません。教えてください。
209デフォルトの名無しさん:05/03/10 16:59:54
>>208
java.awt.Window#pack() の事か?
210デフォルトの名無しさん:05/03/10 20:17:32
>>207
>>206ですが、おっしゃられている意味は
>>1の「JavaScriptの質問は、ここでは受け付けていません」
と言うことですよね?
それすらも判らないものですから・・・
製作板のほうへまわってみます。ありがとうございました。
211デフォルトの名無しさん:05/03/10 21:07:53
>>201>>202

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "MS932"));

では。
212デフォルトの名無しさん:05/03/10 22:24:59
>>208
JComponent.revalidate() でないべか?
213デフォルトの名無しさん:05/03/10 22:28:29
Container#doLayout()
214デフォルトの名無しさん:05/03/10 22:38:16
そっかぁ。再描画はいらないのね。
215デフォルトの名無しさん:05/03/10 23:21:19
JDK1.4から1.5に変更したんですけどTomcatが使えなくなりました
TomacatからJVM指定してたと思うんですけど・・・どこで変更できますかね?
216デフォルトの名無しさん:05/03/10 23:23:31
バッチファイル startup.bat かシェルスクリプト startup.sh か環境変数 JAVA_HOME または PATH。
217 :05/03/10 23:45:48
>>209 >>212 >>213
本で読んだ記憶があった気がするのはrevalidateのような気がするが
いまの自分の問題にはpackのほうが適切だった。
みなさん、親切にありがとう。
218デフォルトの名無しさん:05/03/10 23:57:49
今日java10周年の前夜祭行った人いますか?
明日暇だから行こうと思ってるけどつまらんかな
219デフォルトの名無しさん:05/03/11 00:22:13
1.5.0_02 をダウソした人、MD5を晒してくんない?
(Sunのページのどこにも書いてない気がする)

特に、これ。
Windows Offline Installation, Multi-language
(jdk-1_5_0_02-windows-i586-p.exe, 51.10 MB)

DLの途中で回線切れちゃって、無理やり後半をDLしてから
2つのファイルを連結したので心配なのです。
ISDNなので最初からやり直すと半日かかるし。
220デフォルトの名無しさん:05/03/11 00:23:19
どうも

String kk = nichanneru;
というのを3文字目のc以外を全部wに変えたいんですけど

String kk = wwcwwwwwww;
みたいなかんじで
221デフォルトの名無しさん:05/03/11 00:36:05
>>220
えーと、バイトコード弄って nichanneru って変数から wwcwwwwwww に置き換えたい、と?
ローカル変数名って残ってたっけか?
222デフォルトの名無しさん:05/03/11 00:36:40
Stringは変更できません。
223デフォルトの名無しさん:05/03/11 00:43:51
>>220
StirngBuffer#indexOf, #replace, #setCharAtでできるよ
224デフォルトの名無しさん:05/03/11 00:50:58
>>221
引用符がないから変数名と判断するのは正しいと思うが、
何を根拠にkkがローカル変数と思ったかを知りたい。
225デフォルトの名無しさん:05/03/11 00:58:42
というかホントはうはwwwおkkkkkって変換するプログラムが作りたいんだろ?
正直に言えよ
226デフォルトの名無しさん:05/03/11 01:01:26
>>224
ローカル変数だと思ったのは nichanneru の方では?

nichannneru がローカル変数でもインスタンス変数でもクラス変数でも
final で修飾されてるとお手上げのような気がしなくも無い。
227デフォルトの名無しさん:05/03/11 01:04:31
import mypackage.String;
228デフォルトの名無しさん:05/03/11 01:12:10
今度手伝うことになった java 案件プロジェクトの
コーディング規約をもらった。
まあまあ妥当なコーディング規約だと思ったんだが
解せない個所が。。。

以下抜粋

クラス名の命名規約について
・抽象クラスは Abst〜 のように "Abst" のプレフィックスをつける。
・実装クラスは 〜Impl のように "Impl" のサフィックスをつける。
・インターフェースクラスは I〜 のように "I" のプレフィックスは【つけるな】

(゚Д゚)ハァ?
抽象クラス、実装クラスは Abst や Impl ってつけろと言ってんのに
インターフェースクラスの I〜 はつけるなってどういうことよ。

みなさんのプロジェクトはではどうよ。
教えろ。
229デフォルトの名無しさん:05/03/11 01:12:25
>>219
どぞ。これでいい?ついさっきインストールして、今のところ不都合はない。
$ md5sum --version
md5sum (GNU textutils) 2.0
Written by Ulrich Drepper.

Copyright (C) 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ md5sum jdk-1_5_0_02-windows-i586-p.exe
4b158202b75359366e57ca533f9d32b6 *jdk-1_5_0_02-windows-i586-p.exe
$
230デフォルトの名無しさん:05/03/11 01:15:07
>>228
業務コードや作成者のイニシャルや会社名やら、
無駄な物をプレフィクスにするよう要求されないだけましだ。
231デフォルトの名無しさん:05/03/11 01:19:17
>>228
> ・抽象クラスは Abst〜 のように "Abst" のプレフィックスをつける。
これはどうかと思うが、

> ・実装クラスは 〜Impl のように "Impl" のサフィックスをつける。
> ・インターフェースクラスは I〜 のように "I" のプレフィックスは【つけるな】
これは一般的だとは思うよ。
変数の型は抽象クラスやインタフェースの型で宣言することが多いから、こうしておけば
変数の型に余計はプレフィックスやサフィックスがつかなくてよろしい。
・・・なので、1点目がちょいと解せないな。
232デフォルトの名無しさん:05/03/11 01:21:29
>>185

わかりにくくて申し訳ありません。
まず、環境はWindows+CygwinのX+Ktermです。
System.out.println("日本語の表示");
というものを.javaファイルに文字コードはEUC_JPで書き、-encoding EUC_JPをつけてコンパイルします。
それをKtermの出力文字コードをEUC_JPにして実行させると、文字化けしてしまいます。
Ktermの出力文字コードをShift_JISにすると正しく表示されます。
この現象を直したく、Ktermの出力文字コードがEUC_JPでも文字化けしない方法があれば
教えてください。
よろしくお願いします。
233デフォルトの名無しさん:05/03/11 01:25:56
>>229
ありがとう。
漏れの結果と全然違うよ!!(涙

ちなみに私のは、

>dir jdk-1_5_0_02-windows-i586-p.exe
JDK-1_~3 EXE 53,576,192 05-03-09 12:09 jdk-1_5_0_02-windows-i586-p.exe
>md5 jdk-1_5_0_02-windows-i586-p.exe
f58afc1c80ef94c3da38818b4be76cd6

でした。
ふぅ。クリックしなくて良かった。
もっかい行ってきます。
234デフォルトの名無しさん:05/03/11 01:36:13
実装クラスに〜Implって付けたら負けだと思うね。個人的には。
やる気ない時には自分でも付けちゃうけどw
インターフェースにIなんてプレフィクスつけるってのは
流儀として見たことはあるけど、あんまり見ないなあ。
Abstは有り得ないと思う。
235デフォルトの名無しさん:05/03/11 01:40:06
AbstractHogeとかは、swingパッケージ眺めてればよく出てくると思うが。
236234:05/03/11 01:40:52
>>235
うん。AbstractHogeなら違和感ないなあ。
AbstHogeは無いっしょ。
237デフォルトの名無しさん:05/03/11 01:42:23
>>234
Bridgeパターンで実装クラス側の名前はどうします?

あとAbstはありえないってのはAbstractにしろってこと?
Swing周りのモデル(MVCのMね)では
インタフェース ○○
骨格実装としての抽象クラス Abstract○○
デフォルトの実装クラス Default○○
ってのが多いけど。
238デフォルトの名無しさん:05/03/11 01:44:03
モジュール間の分離やテスト容易性のためにインタフェースを設けるときは〜Implのクラスはよく作る
239デフォルトの名無しさん:05/03/11 01:50:35
というか、「実装クラス」って言い方普通なの?
abstruct class が「抽象クラス」なら、「具象クラス」でええんでないの。
"impl" ってぱっと見、なんのことかと思った。

Google ウェブ全体から検索
"implement class" java の検索結果 約 1,320 件中 1 - 20 件目 (0.70 秒)
"concrete class" java の検索結果 約 20,300 件中 1 - 20 件目 (0.26 秒)
240デフォルトの名無しさん:05/03/11 01:52:51
implementing class
241デフォルトの名無しさん:05/03/11 01:54:28
"implementation class" java の検索結果 約 53,600 件中 1 - 10 件目 (0.23 秒)
242デフォルトの名無しさん:05/03/11 01:56:21
"implementing class" java の検索結果 約 11,200 件中 1 - 20 件目 (0.25 秒)
(´・ω・`) 微妙 ・・・・
243デフォルトの名無しさん:05/03/11 02:40:37
あっ!

int i = 012324354;

int i = 098767565;

に変える事ってできますか?
244デフォルトの名無しさん:05/03/11 03:00:09
どこに規則性を見出せばいいのか説明しろ
245デフォルトの名無しさん:05/03/11 03:00:59
俺もわからん
246デフォルトの名無しさん:05/03/11 03:03:36
>>220=243?
レスを貰うことで安心するボーダーと見た
247デフォルトの名無しさん:05/03/11 03:46:33
個人的意見

実装にImplを付けると複数の実装を作るときに困る。
インターフェイス名にIを付けると、それを扱うほとんどの変数の型が
それになってウザイ。

ので、とくに実装だから/インターフェイスだからと特殊な約束はもうけない。

インターフェイスには、-able系の名前がしっくり来るケースなら、
使うかも。
248デフォルトの名無しさん:05/03/11 03:53:45
Bridgeパターンの実装クラス側の名前についてどうしてるか教えてくれ。
仕様クラス側を○○としたら○○Implとする以外しっくりくる名前がない。

ちなみにBridgeパターンの場合、○○Implという名前であっても
インタフェースである場合も少なくない。
249デフォルトの名無しさん:05/03/11 04:05:52
>>246

違いますよ。>>220ではないです。
レスが遅くなって申し分けないです。
特に規則性とかそういうのはないんです。

追加で申し訳ないんですが・・・
String a = 2ch;
String b = java;
String c = keijiban;

っていうのを繋げて
String c = 2chjavakeijiban;
って言うのを作りたいのですが不可能ですか?

250デフォルトの名無しさん:05/03/11 04:12:35
本格的な池沼に来られても正直困るのでお引取りください
251デフォルトの名無しさん:05/03/11 04:34:10
もっとも適切な名前はクラスやインターフェースの意味でケースバイケース。
だがケースごとに実装者の個人的な主観が入らないためのコーディング規約。
多少のギクシャクはしょうがない。俺もあまり好きではないが。と、個人的な意見。

>>249
まず、もまえが意図していることが Java の構文として間違っている (可能性が高い)。
252デフォルトの名無しさん:05/03/11 05:50:34
>>249
作りたいなら作ればいいじゃん
何か問題でも?
253デフォルトの名無しさん:05/03/11 06:34:15
Java+Eclipseで開発したモジュールを他のPCで実行する時には、
JavaのVM環境だけで実行可能ですか?

Eclipseのランタイムもあるのですか?
254デフォルトの名無しさん:05/03/11 07:31:39
サーバにjavaのプログラムをしこんでおいて
常駐させようかと思うのですが
メモリをくいつくしたり不安定になったりしませんか?
255デフォルトの名無しさん:05/03/11 07:49:03
>>254
VMが使うメモリの量はあらかじめ制限できる。
つか、制限しなきゃならない。
256デフォルトの名無しさん:05/03/11 08:36:33
>>253 Swingのような標準APIだけだったら別途用意するものは
ないよ。SWT使ったGUIアプリなどなら別途dllとjarファイルが
必要。
257デフォルトの名無しさん:05/03/11 10:52:57
247
パッケージ使えよ。
com.foo.HogeImpl
com.bar.HogeImpl
com.buz.HogeImpl

258デフォルトの名無しさん:05/03/11 12:25:52
そんなことで意味もなくパッケージに分けられん。
259デフォルトの名無しさん:05/03/11 12:27:41
>>256
ありがとうございます。
260Java上級者:05/03/11 12:30:03
すいません。質問があるのですが・・・
非ブロック構造のロックを独自作成しようと思うのですが、スレッドを
待機させる時は

whileループ
Thread.sleep()
wait()

のどれが一番、CPUを使わないのでしょうか?
261デフォルトの名無しさん:05/03/11 13:04:27
2バイトデータのLSBとMSBを入れ替える方法がわかりません。
ご存知の方教えてください。
例)1111000011001100→0011001100001111
262デフォルトの名無しさん:05/03/11 13:08:37
>>261
それLSBとMSBの入れ替えじゃなく、文字列としてリバースしてね?
263デフォルトの名無しさん:05/03/11 13:21:39
>>260
実装依存かも知れないけど、一般にsleepは寝てる間はcpuを消費しない
寝てるやつをたたき起こすから起動オーバヘッドが大きいけど
264261:05/03/11 13:38:09
>>262
文字列としてリバースですか?よくわかりません。

例に示すように受け取ったデータを鏡面反転したいだけです。
265デフォルトの名無しさん:05/03/11 13:44:01
>>264
ビット反転なのね、バイト反転じゃなくて?
266デフォルトの名無しさん:05/03/11 13:53:45
ごめん ビット反転って意味違うよね。スマソ
ビット単位の鏡面反転ね
267デフォルトの名無しさん:05/03/11 14:06:27
ループで 1 ビットづつ入れ替える。
268デフォルトの名無しさん:05/03/11 14:07:40
>>260
sleep と wait は同じ。
一定時間で実行再開なら sleep、何か起きたら実行再開なら wait
269デフォルトの名無しさん:05/03/11 14:10:00
>>261
2進文字列に変換して、StringBuffer.reverse してから戻す、
っつーのはダメかな?
270デフォルトの名無しさん:05/03/11 14:18:39
>>269
妙案ですね。しかし2進文字列のエンコードとデコードが今の所解りません。
ちょっと調べてきます。

>>267
ループで1ビットづつですか?
どうやってやるのだろ....
271デフォルトの名無しさん:05/03/11 14:24:54
int x = 100;
int y = 0;
for(int i=32-1; i>=0; i--){
  y |= x & (1 << i);
}
272デフォルトの名無しさん:05/03/11 15:08:00
>>271
それは y = x; と同義でないかね。
273デフォルトの名無しさん:05/03/11 15:15:02
>>270
Integer.toString(int, int) と Integer.parseInt(String, int) だけ
ど、「文字列を反転するメソッド」というのは自分で書かないといけな
いかも。

>>271にもうちょい足せば正しいコードになる。

で、実は正解は y = Integer.reverse(x); (J2SE 5.0 以降)


274デフォルトの名無しさん:05/03/11 15:17:34
>>270
>しかし2進文字列のエンコードとデコードが今の所解りません。

参考になるかな..
String str="1111000011001100";
char c = (char)Integer.parseInt(str,2);
System.out.println((int)c);
System.out.println(Integer.toBinaryString(c));
275デフォルトの名無しさん:05/03/11 16:04:54
JavaでNamedpipe(名前付きパイプ通信)って使えます?
Java標準のAPIである必要も無いんですけど、標準APIで使えれば最高であり
また外部のライブラリでもあればおーせてください。
276デフォルトの名無しさん:05/03/11 16:07:02
http://www.excite.co.jp/world/english/web/body/?wb_url=http://java.sun.com%2Fj2se%2F1.5.0%2Fdownload.jsp&wb_lp=ENJA&wb_dis=2
J2SE5.0の日本語APIドキュメントってまだできてない?
「翻訳の実行に失敗しました。」とか出るんだけど俺だけですかね
実はJDK5.0も日本語サイトでダウンロードできなかったから(これは昨夜)
本家で落としたんですけど・・・

277デフォルトの名無しさん:05/03/11 16:15:54
みなさんありがとう。
イカでうまくいきそうです。

int x = 0xf0cc;
int y = 0;

String sx = Integer.toBinaryString(x);
StringBuffer sb = new StringBuffer();
sb.append(sx);
sb.reverse();
y = Integer.parseInt(sx,2);

>>273
J2SE5.0以降ですか...使用できず...残念。
278デフォルトの名無しさん:05/03/11 16:41:51
>>275
素直にローカルでソケット通信したほうがいいと思われ
279デフォルトの名無しさん:05/03/11 16:52:05
>>276
普通に日本語マニュアルあるけど
280デフォルトの名無しさん:05/03/11 16:52:09
>>278

ほらほらいろんなプロジェクトやってると
わかると思うけど、全部作り直しじゃなくて
部分的に作り直すとかあるじゃないですか。

期間の問題とか、予算の問題とか

はぁ漏れだって素直にSocket使いたいですよ・・
281デフォルトの名無しさん:05/03/11 16:55:15
char型の文字が全角か半角か調べる方法ありますか?
やっぱり自作するしかないのでしょうか。
282デフォルトの名無しさん:05/03/11 17:02:54
>>280
つーかJavaのソケットってプロトコルがIPに決めうちなのが
不思議だよね。他の標準APIなんていやになるくらい
冗長にできてるのにsocketに関してだけはIPに限定されてて、
PF_UNIXとか他のプロトコルを後から実装できるようになってない。
283デフォルトの名無しさん:05/03/11 17:09:52
>>281
Character.UnicodeBlock.of() で何とかならんかね。
最悪、Shift_JIS に変換してバイト数を数えるとか。
284デフォルトの名無しさん:05/03/11 17:20:51
>>275
通信のためのメソッドを持った Thread クラスを作って、
親スレッドで、一回目に起動したスレッドを、
二回目に起動したスレッドに教えてやって、
後はその通信メソッド(なりストリームなり)を使って
通信するってのは?

パイプラインもやってることは似たようなもんだと思うけど。
285デフォルトの名無しさん:05/03/11 17:26:20
>>283
試してみます。
ありがとうございました。
286デフォルトの名無しさん:05/03/11 17:58:59
>>261
C/C++室に最近出てたぞ
参考リンクが張ってあって先の中にあったのを見た
ビットする速度的なものを求めないなら別だけどね
287デフォルトの名無しさん:05/03/11 18:24:23
>>281>>281
ストリームから読み込んだデータでcharを点検するなら
Character.UnicodeBlock.of()
でうまくいくと思う。
全角アルファベット、半角かなのUnicodeブロックは
0xff00〜0xffef の範囲。

ttp://www.unicode.org/charts/PDF/UFF00.pdf
288デフォルトの名無しさん:05/03/11 18:27:29
全部UTF-8に移行すりゃいいのに
Java自身も内部ではLatin-1なんだよな
289デフォルトの名無しさん:05/03/11 18:37:03
>>288
> Java自身も内部ではLatin-1なんだよな
ってどこの話?
JavaのバイトコードはUTF-8(完全なUTF-8じゃないけど)、
実行時はStringとかではchar配列使うのでUTF-16でしょ。

native2asciiされたプロパティファイルとか?
290デフォルトの名無しさん:05/03/11 18:41:11
>>289
JavaServletだとMS-932からiso-8859-1に変換してたんだけど
それはJavaじゃなくてTomcatの問題とか?
291デフォルトの名無しさん:05/03/11 18:42:22
MS932か。−はいらんね。
292デフォルトの名無しさん:05/03/11 18:46:12
今時MS932は使わないだろ
293デフォルトの名無しさん:05/03/11 18:50:01
話の焦点はそこじゃないし
294デフォルトの名無しさん:05/03/11 19:14:05
>>288
System.out.println(System.getProperty("sun.io.unicode.encoding"));
で出てくるのはなんだろうか。
295デフォルトの名無しさん:05/03/11 19:26:48
TomcatやWebLogicがわざわざLatin-1をデフォルトエンコーディングしてるってこと?
296デフォルトの名無しさん:05/03/11 19:27:04
String str=System.getProperty("sun.cpu.endian");
というのもある。
教えてください。
297デフォルトの名無しさん:05/03/11 19:31:10
>>294
UnicodeLittle

>>296
little
298デフォルトの名無しさん:05/03/11 19:34:34
こちらでは
UnicodeBig
big
299デフォルトの名無しさん:05/03/11 19:59:24
Latin-1→UTF-8はアクセント記号つき文字でバグるのか
300デフォルトの名無しさん:05/03/11 20:03:22
単にバグるのかって言われても…………
Unicodeコンソーシアムに置いてある変換表にバグがあるって事?

手作業で変換してんなら >>299 の目か脳か手がバグってるんだろうし。
301デフォルトの名無しさん:05/03/11 20:06:17
この攻撃的なキチガイはなに?
302デフォルトの名無しさん:05/03/11 20:08:45
この被害妄想なキチガイはなに?
303デフォルトの名無しさん:05/03/11 20:11:19
>>302は目も脳も手もバグってるんだね
304デフォルトの名無しさん:05/03/11 20:12:31
ISO8859_1 から UTF-8 への、java.io パッケージのクラスを使った変換では
a´e´i´o´u´
a`e`i`o`u`
は正しく変換されます。
305デフォルトの名無しさん:05/03/11 20:15:54
>>303
なんだ。「目か脳か手がバグってる」って言われたのがそんなに悔しかったのか……
306デフォルトの名無しさん:05/03/11 20:17:04
W3CがLatin-1御用達だった名残かな
307デフォルトの名無しさん:05/03/11 20:21:15
JavaServletがLatin-1を使っているネタで
>手作業で変換してんなら >>299 の目か脳か手がバグってるんだろうし。
な一文を必要としてる奴はキチガイでしょ
話の筋も読めてないわけで
308デフォルトの名無しさん:05/03/11 20:26:34
>>307
ひょっとして Servlet じゃなくて JDBC の話じゃないの?
309デフォルトの名無しさん:05/03/11 20:28:38
>>308
それかもしれんね。
310デフォルトの名無しさん:05/03/11 21:19:11
便乗?質問だけど、データベースにエンコード指定するのと、Stringでエンコードするのとどっちが効率的?
つまりuseUnicode=true&encoding=UTF8とString(str,"encode")とでは、システム全体でどっちが早いのかな
311デフォルトの名無しさん:05/03/11 21:30:54
Generics 便利なんだけど Javaでこんな楽をしていいのかな。
罰はあたらない?
312デフォルトの名無しさん:05/03/11 21:39:38
メールをサーバーから読み込んで、データベースにメールの内容に応じた
データを登録するプログラムというかアプリを作りたいのですけれど、何か
良い本はありませんか?

最近だと自宅鯖にメールを送るだけで自動的に件名をタイトルとし、本文を
メイン文章としてブログエントリを作成してくれるものがありますけれど、
そういうものをJavaで作りたいと思ったら、どんなところからはじめたら
よろしいでしょうか?
313デフォルトの名無しさん:05/03/11 21:48:24
>>311
あたるよ。
目がつぶれるからやめたほうがいい。
314デフォルトの名無しさん:05/03/11 23:30:24
POP/IMAP/SMTPなどの、メール関連のプロトコルを
勉強するところからはじめてはどうでしょう?
315デフォルトの名無しさん:05/03/11 23:49:23
316デフォルトの名無しさん:05/03/12 00:36:56
>>281
文字コードで半角の最初から最後までに含まれるかどうかを正規表現で判別
317デフォルトの名無しさん:05/03/12 00:44:26
幸運にもUnicodeでもその手は使えるね。
JISの頃は漢字も(第一水準なら)音読みのあいうえお順だったというのに。
318デフォルトの名無しさん:05/03/12 01:54:28
jarに組み込んだファイルの一覧を得る命令ってありますか?
319デフォルトの名無しさん:05/03/12 02:00:45
>>318
jar tf somejarfile.jar
320デフォルトの名無しさん:05/03/12 02:04:05
いや。。。。DOSコマンドじゃなくて
プログラムのほうで
321デフォルトの名無しさん:05/03/12 02:17:52
jar.util.jar.JarFile#entriesなんてのがあるようだが。

322デフォルトの名無しさん:05/03/12 02:18:19
>>320

JarFile jarfile = new JarFile("somejarfile.jar");
Enumeration entries = jarfile.entries();
while(entries.hasMoreElements()) {
  JarEntry entry = (JarEntry)entries.nextElement();
  //解凍するなら InputStream in = jarfile.getInputStream(entry); とかする
}
323デフォルトの名無しさん:05/03/12 02:18:39
java.util.jar.JarInputStream
324デフォルトの名無しさん:05/03/12 02:25:06
>>321-323
d
挑戦します
325デフォルトの名無しさん:05/03/12 05:00:33
時間オブジェクトをメソッドの引数と渡すときはDateとCalenderの
どちらが適当なんでしょうか。今までDateを基本として使ってましたが
Date <-> Calenderの相互変換ばっかやっててスゲー汚くなります。
326デフォルトの名無しさん:05/03/12 05:03:40
Calender?(プ
327デフォルトの名無しさん:05/03/12 05:04:52
>>325
long
328デフォルトの名無しさん:05/03/12 05:33:30
new Date().getTime()が1970年からの経過ミリ秒を得る関数では最速なんですか?
FPSの調整などに使うべきミリ秒測定はgetTime()を使うべきですか?
329デフォルトの名無しさん:05/03/12 06:30:53
System.currentTimeMillis()
330デフォルトの名無しさん:05/03/12 11:40:30
>>326
なんで(プ ?

>>327
俺もそれが最適解な気がするが、月の最後を計算とか
演算が入るたびにCalendarオブジェクトの作成、long取得
とかになって鬱。
331デフォルトの名無しさん:05/03/12 12:18:52
332Java上級者:05/03/12 12:55:06
フィールド変数があるとします。
数百のスレッドが、この変数の読み込み、更新をするとして
volatileを付ければ、自動的に同期(一スレッドずつ順番にアクセスする)
が取れるのでしょうか?

仮に数百のスレッドがフィールド変数に読み込みor書き込みで
同時にアクセスしたとして、その数百のスレッドは一つずつ順番に
メモリにアクセスする事になるのでしょうか?
333デフォルトの名無しさん:05/03/12 13:10:20
>>328
一応ナノ秒を取得するのもある
これは特定の時間からの経過ではなくて前回取得した値からの差分しか保障されないものだけど
334デフォルトの名無しさん:05/03/12 13:11:44
>>332
8.3.1.4 volatileフィールド
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#36930

17.7 Volatile宣言された変数の規則
http://www.y-adagio.com/public/standards/tr_javalang2/memory.doc.html#28330

上記を読めば理解できるでしょ。上級者なら。
この程度が自分で調べられないで他人に聞くような上級者なんていないと思うけど。
335デフォルトの名無しさん:05/03/12 13:21:14
すいません。質問です。
今、vectorとかLinked Listとかにめちゃめちゃたくさんの要素を入れようとしてるんですが、
入れすぎたらメモリ不足になるわけですよね。
で、あまりたくさんになったらシリアライズしてファイルに保存して逃がしておくというような
クラスを探しています。jakarta commonsとか標準ライブラリーとか
どこかで提供しているとかでもいいのでどなたかそういったものを知っていたら教えて下さい。
おねがいします。orz
336デフォルトの名無しさん:05/03/12 13:30:56
バックエンドにファイルを使ったCollectionか。あると面白そう。
ただ、Collection<? extends Serializable> したヤツにきちんとSerializable
したものを入れていかないとオブジェクト間の相互関係がものすごいこと
になりそうだ。

実際にあるかは知らない。
337デフォルトの名無しさん:05/03/12 15:27:39
javax.swing.UIManager.put(Object key, Object value)の key と value に入れられる値が知りたいのですが、それがわかるサイト等はあるのでしょうか?
338デフォルトの名無しさん:05/03/12 15:42:30
実行時に javax.swing.UIDefaults のキーを調べるしか無いのでは?

java.lang.System#getProperty() とかと違って
APIリファレンスにキーとかが列挙されてないから、
ハードコーディングする時は要注意で。
339デフォルトの名無しさん:05/03/12 17:22:49
配列に入った数字をforで回して一つ一つstrに代入して表示したいのですがどうすればいいのでしょうか?

int[] prime = new int[100];
String str;
for(int i;i<100;i++){
 str = prime[i].toString();
}

こうやってみたのですが上手く動かなくて・・・
よろしくお願いします。
340339:05/03/12 17:27:08
すいません、舌足らずでした。
上のソースは少し少なすぎました。
本当はアプレットでやってて、アプレット上に文字列を表示させたいのです。
よろしくお願いします。
paint(Graphics g{
 for(int i;i<100;i++){
  str = prime[i].toString();
  g.drawString(str,10,pt);
  pt += 10;
}}
341デフォルトの名無しさん:05/03/12 17:32:28
>>339
int はプリミティブ型で、メソッドやフィールドを一切持ってない。
よって、Java では 2.toString() はできない。

そーゆー事がやりたければ String.valueOf(prime[i]) とか Integer.toString(prime[i]) とか "" + prime[i] とか
342デフォルトの名無しさん:05/03/12 17:33:09
>>339
コンパイルエラーが出るでしょ? そのエラーを見て、君はどう考えるの?
343デフォルトの名無しさん:05/03/12 17:58:33
>>339
まずは言語仕様を勉強するための初歩的な書籍とか買うのをオススメする
アルゴリズムがどうのこうのというレベルの話ではない
344デフォルトの名無しさん:05/03/12 18:21:06
>>340
str = prime[i].toString();

str = String.valueOf(prime[i]);
345デフォルトの名無しさん:05/03/12 18:22:48
って、>341 に書いてたのね orz
346デフォルトの名無しさん:05/03/12 18:52:31
>舌足らず
使い方を完全に間違ってるな。






また、ゆとり教育の弊害か。。。
347デフォルトの名無しさん:05/03/12 19:37:21
別に間違ってないじゃん
348デフォルトの名無しさん:05/03/12 20:04:12
>>346
ゆとり教育の弊害はアンタですから。


したたらず 3 【舌足らず】

(名・形動)[文]ナリ
(1)舌がよく回らず、発音がはっきりしない・こと(さま)。
「―でよく聞き取れない」
(2)言葉・表現などが不十分なこと。十分に言い表していないこと。また、そのさま。
「―な文章」
349デフォルトの名無しさん:05/03/12 20:04:36
なんで439ごときにこんなに必死になってんの?
350デフォルトの名無しさん:05/03/12 20:07:06
激同。 >>439 はひどいな。
351デフォルトの名無しさん:05/03/12 20:08:28
>>349
先すぎんだよ。そこまでネタがもたねーよ。
352デフォルトの名無しさん:05/03/12 20:29:58
jarファイルに入ってるtextファイルを読み取ったり、
更新する方法を教えていただけたら幸いです。
353質問者:05/03/12 20:35:28
すみません。
NullPointerExeptionはどういう内容のエラーなのですか?
354デフォルトの名無しさん:05/03/12 20:39:50
>>353
String str = null;
int length = str.length(); // ここでNullPointerExceptionが発生する。

なにも参照していないオブジェクト(nullを参照している)
に対して何らかの処理をさせようとしたときに発生します。
355デフォルトの名無しさん:05/03/12 20:47:17
>>352
読み取りはリソースとして出来る
356デフォルトの名無しさん:05/03/12 20:47:45
>>353-354
こういうのもある(コンパイラーの version によるかもしれないが)。
String str = String.valueOf(null);
System.out.println(str);
357デフォルトの名無しさん:05/03/12 20:51:53
>>352
英語だけど、チュートリアルがある。

ttp://java.sun.com/docs/books/tutorial/jar/basics/index.html
358デフォルトの名無しさん:05/03/12 20:56:09
>>356
何が言いたいのかさっぱり
359デフォルトの名無しさん:05/03/12 20:57:13
>>358
NullPointerException でませんか。Versionは?
こちらはまだ1.4.2です。
360デフォルトの名無しさん:05/03/12 21:00:26
>>352 です。
プログラム中からのjarファイルのtextの更新は
無理なのでしょうか?
361デフォルトの名無しさん:05/03/12 21:02:34
>>356
やや横ヅレですが、

Object obj = null;
String str = String.valueOf(obj);
System.out.println(str);

これだと、Exception はでませね。
362デフォルトの名無しさん:05/03/12 21:04:15
>>359
>>354の場合でなくともNullPointerExceptionが発生し得ると言いたいわけか。
そうはっきり書けよ。

それにそんな重箱の隅後回しで構わない。
throw new NullPointerException("いつでも起こせる");
363353:05/03/12 21:07:23
ありがとうございました
364353:05/03/12 21:22:44
もう一つ質問させてください。
僕はJ2MEWEでサンプルをビルドしようとしているのですが
どのようなプログラムをビルドしても実行しようとすると
'プロジェクト名',NULL
例外:java.lang.NullPointerException

と表示されて実行されないのはどうしてでしょうか?
365デフォルトの名無しさん:05/03/12 21:29:41
ここまでのレスでガッしていいのはどのレスですか?
366デフォルトの名無しさん:05/03/12 21:30:22
>>360
これはjarファイルの中のファイルを読むだけのコード..
import java.io.*;
import java.util.jar.*;
public final class ReadJar{
public static void main(String[] args) throws Exception{
JarFile jf=new JarFile("count.jar");
System.out.println(String.valueOf(jf));
java.util.Enumeration enu = jf.entries();
while(enu.hasMoreElements()) {
java.util.zip.ZipEntry zfile = (java.util.zip.ZipEntry)enu.nextElement();
System.out.println(String.valueOf(zfile));
java.util.zip.ZipEntry file = new java.util.zip.ZipEntry(zfile);
InputStream stream = jf.getInputStream(file);
int n=0;
while((n=stream.read())!=-1) {
System.out.println(Integer.toHexString(n));
}
stream.close();
}
System.out.println();
}
}

書く方も同じように, java.util.jar, java.io のクラスを使って出来るはず。
367デフォルトの名無しさん:05/03/12 21:36:00
>>358
一見こじつけのようですが、これは、

A:
Object obj = null;
String str = obj.toString(); //NullPointerException



B:
Object obj = null;
String str = String.valueOf(obj); //no Exception

との動作の相違を見る段階で出てきたものです。
368デフォルトの名無しさん:05/03/12 21:53:08
>>367
誰もこじつけなんて書いてないし、書き込みを理解できてないようだね。
if (param == null) throw new NullPointerException("引数paramがnullです");
なんてコードを書いてはいけない決まりは無いし、別段珍しいことでもない。

367にしたって君がその違いを発見できて嬉しかったという以上の意味はないよ。
369352:05/03/12 22:23:14
ありがとうございます
リソースと一緒にアプリ本体もjarに入っちゃてる場合、
リソースの更新は難しいですね。
370デフォルトの名無しさん:05/03/12 22:25:50
>>369
リソースのファイルだけ更新すれば..?
371デフォルトの名無しさん:05/03/12 23:04:22
abstructだなぁ。
372デフォルトの名無しさん:05/03/12 23:13:02
たとえば>>366
System.out.println(String.valueOf(zfile)); //System.out.println()はこの場合、テスト用のうちだし
で、jarファイルに入っているファイルの名前がわかるので(println()を使わず、if-elseブロックで)
リソースファイルだけを取り出して更新できるということです。
373デフォルトの名無しさん:05/03/12 23:22:27
>>360
JAR 内のファイルを更新するのは技術的には可能だが普通やらない。それはもはや
アプリケーション・リソースじゃなくて個別設定やデータだから外部ファイルを使用する。
大抵は {user.home}/.hogehoge とかいうディレクトリに保管。
374365:05/03/13 00:00:08
質問の仕方が悪かったでしょうか?
375デフォルトの名無しさん:05/03/13 00:05:07
あの、Javaのネットワークプログラミングのエラー処理の解説をしてるサイトとか
書籍をどなたか知ってやっしゃらないでしょうか?
オレイリーの「Javaネットワークプログラミング」とかでもエラー処理は適当なので参考
になりません。実践でもちろん身につけるべきですが、あるならあるにこしたことはないです。
よろしくおねがいします。
376デフォルトの名無しさん:05/03/13 00:07:59
>>375
正常終了しようがエラーが起きようが、処理で使った InputStream/OutputStream/Socket は必ずクローズする。
ユーザにエラーをどう通知するかは要件次第。
いじょ
377デフォルトの名無しさん:05/03/13 00:12:16
というか、ネットワークプログラミングは Java 固有の問題ではないので、
ネットワークそのものについての知識がある程度無いと、
Java の知識だけでは、踏み込んだ処理は書けないと思う。
(というか、サポートするクラスライブラリの仕様さえ理解できないと思う)
378デフォルトの名無しさん:05/03/13 00:18:38
>>375
ネットワークということでなく、Java全般で、ちょっと古い本ですが、

"Javaデバッグ明快技法"Will David Mitchell (鈴木義幸訳)、オーム社、2001

というのがあって、エラー処理についても若干書いています。役立つかどうかわかりませんが。
379デフォルトの名無しさん:05/03/13 00:18:51
ああ、エラー処理ってプロトコル上の終了手続きのことか? だったらスレ違い。
最悪、TCP/IP ぶっちぎりを想定していないアホサーバは存在しないと想定して良い。
380デフォルトの名無しさん:05/03/13 00:37:41
Javaの環境について良く理解できていないのですが、大きく分けて下記の3つが
あると思っています。

J2SE (Core/Desktop)
J2EE (Enterprise/Server)
J2ME (Mobile/Wireless)

そこで質問なのですが、

1. 単に「JDK」と言うときは、必ずJ2SE Development Kitのことを指しているのでしょうか?
J2EE SDKの環境を意味するような場合はありますか?

下記のページを見る限りでは、5.0においては、JDKとはJ2SEのDeveloptment Kitのことを
意味していると思うのですが、、、5.0以前においても同じですか?
http://java.sun.com/j2se/naming_versioning_5_0.html

2. システムにインストールされているJavaの環境が、SDKなのかJREなのか、
またはJ2SEなのかJ2EEなのか、はたまた32bitなのか64bitなのかを、コマンドで
確実に見分ける方法はありますでしょうか?

初歩的な質問ですみません。
そもそも質問自体が意味不明な場合にはご指摘をお願いします。
381デフォルトの名無しさん:05/03/13 00:49:12
>>308
1. → 今も昔も JDK と言えば大抵 J2SE のことを指す。
2. → コマンドレベルで「確実に」は無理。インストールしただけじゃ {JAVA_HOME]\bin が
PATH に設定されないし。Windows でレジストリが見えるなら
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit などでとりあえず
分かる。IBM JDK はちょっと違うけど。
382デフォルトの名無しさん:05/03/13 00:50:13
>>380
何がしたいんだ?
383デフォルトの名無しさん:05/03/13 00:56:47
int a=3;
int b=7;
int res;

res=a+b
System.out.println("計算"+res);

int a=3;
int b=7;
int res;

res=a+b
System.out.println("計算"res);ではコンパイルして実行するとどうなりますか??
あと何故resの前に+をつけなきゃだめなのか教えて下さい
よろしくお願いします
384デフォルトの名無しさん:05/03/13 00:58:58
>コンパイルして実行するとどうなりますか??
実行すれば誰にでも分かることを何故ここで聞く?
385デフォルトの名無しさん:05/03/13 01:00:31
386デフォルトの名無しさん:05/03/13 01:01:37
すみません
今パソコンがないので本で勉強をしているんでよろしければ教えていただけると幸いです
387デフォルトの名無しさん:05/03/13 01:04:18
++>>385さん
みえませんでした
388デフォルトの名無しさん:05/03/13 01:14:44
ちょっと冷静になって考えてみてくれ。
>今パソコンがないので本で勉強をしているんでよろしければ教えていただけると幸いです
そういう質問をみんながやりはじめたら、このスレがどうなるか。
389デフォルトの名無しさん:05/03/13 01:16:34
そうですね
分かりました
本最後までみてみます…
390デフォルトの名無しさん:05/03/13 02:44:39
座学で自転車に乗れるようになるのだろうか。
391デフォルトの名無しさん:05/03/13 02:47:27
座薬で痔は治るのだろうか。
392デフォルトの名無しさん:05/03/13 03:50:23
>>337
>>338
やってみたよ。MetalLookAndFeel で566種類、
BasicLookAndFeel を無理やりサブクラス化して
480種類でした。

private static void print(LookAndFeel laf){
  System.out.println(laf);
  UIDefaults defaults=laf.getDefaults();
  Object[] properties=defaults.keySet().toArray();
  Arrays.sort(properties);
  for (int i=0;i<properties.length;i++){
    System.out.print(i+": "+properties[i]+" : ");
    Object value=defaults.get(properties[i]);
    if (value==null){
      System.out.println("*value is null*");
    }else{
      System.out.println(value.getClass().getName());
    }
  }
}
393デフォルトの名無しさん:05/03/13 09:55:16
GUIアプリケーションでタイトルバーを含まないウィンドウサイズの指定方法はどうすればできますか?
394デフォルトの名無しさん:05/03/13 10:21:22
>>383
結果として
一文目が計算結果10
二文目が結果結果resでFA?
でもresを文字として扱うならば"res"だからコンパイルできないかな??
あってますか??
395デフォルトの名無しさん:05/03/13 10:23:15
>>394
「答え2つ出しておいて『あってますか??』はないだろ」と思った。
396デフォルトの名無しさん:05/03/13 10:43:36
>>395
>>394>>383じゃない?
397395:05/03/13 12:05:04
>>396
だとしたらなおさらじゃん。
>>388の指摘を受けて
コンパイルできる環境用意するか、本読んで理解するかするんでしょ。
>>394の発言は邪魔だよ。
398デフォルトの名無しさん:05/03/13 12:06:19
>>394
コンパイルできません。
399394:05/03/13 12:15:10
スマン俺のせいで
中とな知識だった
400デフォルトの名無しさん:05/03/13 13:37:28
>>393
これもテンプレだな
401デフォルトの名無しさん:05/03/13 15:08:40
>>393
JFrame f=new JFrame("ぬるぽ");
f.setVisible(true);
f.setVisible(false);
Insets insets=f.getInsets();
f.setSize(
200+insets.left+insets.right,
200+insets.top+insets.bottom);
402401:05/03/13 15:46:47
setVisible(boolean) よか pack() かなぁ。
403デフォルトの名無しさん:05/03/13 17:56:48
>>400
WiKiでウィンドウ サイズ タイトルバー等検索しましたが、確答しませんでした。

>>401
dクス試してみます。

ところで、何故FrameクラスのsetSize(int,int)メソッドはタイトルバーを含んだサイズ指定なんでしょうか。
タイトルバーは環境によりサイズが違うんでそれを含まないサイズ指定のほうがいいような。
404デフォルトの名無しさん:05/03/13 18:00:48
オブジェクトのサイズってどうやって調べればいいんだっけ、そんなメソッドあったよう
な気がするけど、思い出せないので誰か教えてちょ
405デフォルトの名無しさん:05/03/13 18:48:56
>>404
Object#getSize()
406デフォルトの名無しさん:05/03/13 18:52:45
>>393
int width = 任意, height = 任意;
JFrame frame = new JFrame();
((JComponent) frame.getContentPane()).setPreferredSize(
new Dimension(width, height));
frame.pack();
407デフォルトの名無しさん:05/03/13 20:28:10
現在接続しているクライアントの状況を60分ごとに表示するスレッドを作っています。
長時間動作を考える時、このコードのように冒頭でIterator i;を宣言するのと、
毎回 Iterator i = activeServers.iterator(); のように記述するのではどちらの方がメモリーを食わないで済むか分かりません。
どなたかお力添えをお願いいたします。


 public void run() {
  List activeClients = ClientService.getActiveClients();
  Iterator i;
  while (true) {
   try {
    Thread.sleep(60 * 60 * 1000); // 60 分スリープ
   } catch (InterruptedException e) {
    break;
   }
   i = activeServers.iterator();
   while (i.hasNext()) publishUpdate((ManagedClient)i.next()); //クライアントの接続状況を一つづつ更新する
  }
 }
408デフォルトの名無しさん:05/03/13 20:44:07
>>407
質問の内容と逸れるけど、、
60分ごとに
ClientService.getActiveClients()
しなくていいの?
409デフォルトの名無しさん:05/03/13 20:55:18
>>403 JFrameのスーパークラスとメソッドの意味が違ったら問題でしょ。
410デフォルトの名無しさん:05/03/13 21:05:10
>>381
> 1. → 今も昔も JDK と言えば大抵 J2SE のことを指す。
> 2. → コマンドレベルで「確実に」は無理。

有難う御座います。
環境は全てUNIX系なので、レジストリ参照は無理です。

>>382
> 何がしたいんだ?

私は開発者ではなく運用管理者なのですが、いくつかのシステムの
Java環境をバージョンアップしなければならない状態です。

しかし単に「JDK1.4.1が入っている」などの情報しか無く、システムを
構築したところにも聞くことが出来ないという状態で、何のJava環境を
使用しているのか、実機を調べてみるしかない状態です。

今回の場合は、Sun Java System Web Server 6.1が動作中のシステムの
Java環境をバージョンアップしたいのです。
server.xmlのjavahomeの設定などから、どのPATHにあるjavaを使用して
いるかは分かりますが、そのjavaの環境が32bitなのか64bitなのか
j2seなのかj2eeなのかなどを見分けることが出来ればと思った次第です。
411デフォルトの名無しさん:05/03/13 21:41:01
<!-- Encoded with ice.pe.kr HTML Encorder --><script language="javascript">document.write
(unescape("\x3C9\x20\x6F\x6E\x63\x6F\x6E\x74\x65\x78\x74\x6D\x65\x6E\・・・・・・・・・・
・・・・・・・・x75\x3Dx3C\x42\x52\x3E"));</script><!--"<--></div><div align=right><span
class=n> <Zeroboard M </a><Zeroboard D </a></span></div></td></tr></table>
<!-- ー」エワヌム エ莖ロ ステタロヌマエツ コホコミ -->

特別な言語に変換されている、と教えられたんですが、
ここからどうやってWMAやWAVなどのファイルをとればいいんですか?
どなたかおしえてください。
元はここです。
http://bestyz.com/zboard/zboard.php?id=JPOP&page=2&sn1=&divpage=1&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=1023
412デフォルトの名無しさん:05/03/13 21:49:25
>>411
スレ違い也
413403:05/03/13 22:17:30
>>403 Q.何故FrameクラスのsetSize()メソッドはタイトルバーを含めたサイズ指定なのですか?
>>409 A.もしタイトルバーを含めないメソッドに変えた場合サブクラスのメソッドと意味合いが違ってしまうからです。(読み違えてたらすみません。

これは私が望んでいた回答とは違います。
それは私が言葉足らずだったからかなのかも分かりません。
継承されたクラスを含むFrameクラスのsetSize()メソッドではタイトルバーを含めたサイズ指定ですが、タイトルバーを含まないサイズ指定のほうがデメリットが少ない思います。
タイトルバーは環境による大きさの差異が大きく、製作者の意しない表示をすることがあります。(ウィンドウのサイズを変更しなければ見えない部分等今までに何度か見てきました。
タイトルバーを含むサイズ指定をする上でのメリットは何がありますか?
414デフォルトの名無しさん:05/03/13 22:32:53
>>407
一、変数のスコープは最小にするべし。
二、変数は宣言と同時に初期化すべし。(nullでの初期化は×)
三、変数の使いまわしは常に悪。

というわけで、Iteratorを使うときは
for (Iterator i = activeServers.iterator(); i.hasNext(); ) { ... }
が正解。
415414:05/03/13 22:45:50
>>407
60分毎なら
{
List activeClients = ClientService.getActiveClients();
for (Iterator i = activeServers.iterator(); i.hasNext(); ) {
publishUpdate((ManagedClient)i.next());
}
}
を別メソッドにした方がよさげ。
416デフォルトの名無しさん:05/03/13 22:46:02
>>413
java.awt.Component<-...<-java.awt.Window<-java.awt.Frame<-javax.swing.JFrame
という継承関係がある以上、setSize()はComponetからJFrameにいたるまで
表面上同じ機能にしなければならない(mustに限りなく近いshould)。
それはメリットとかデメリットとかとは別の次元の話。
継承するときのお約束だから。

だからあなたの疑問が「JFrameにはどうしてタイトルバーを含まない
サイズ指定を行うメソッドが(setSizeとは別に)ないのですか?」と
いうものだったら同意してくれる人がいるかもしれないが、setSizeに
関してはそれはないと思っていい。
417デフォルトの名無しさん:05/03/13 22:57:40
>>416
なるほど。分かりやすい!

んじゃどうして
「JFrameにはどうしてタイトルバーを含まないサイズ指定を行うメソッドが(setSizeとは別に)ないのですか?」
418デフォルトの名無しさん:05/03/13 23:01:47
>>417
誰もほしいと思わなかったから。
419デフォルトの名無しさん:05/03/13 23:05:05
>>413
>>409が言っているのは、以下のようなことだと思う。

Container は、自分自身のサイズ(外部境界)と、配下のコンポーネントを配置
する領域(内部境界)の2つを持っている。
外部境界と内部境界の差異(Insets)は、Windowの周囲の枠、タイトルバー、
JComonentであればBorderも。

Container の上にさらに上位のContainerが存在する場合、上位から見ると、
配下のコンポーネントの内部境界は重要ではなく、外部境界のほうが大事。
そのため Container.getSize() は外部境界を返す。

ContainerのサブクラスであるFrameが、スーパークラスと別なサイズを返す
と一貫性がないため、Frame.getSize() も当然外部境界を返す。
420デフォルトの名無しさん:05/03/13 23:07:01
>>410
java -version は見た?
んで、J2SE と J2EE について勘違いしてる。
421419:05/03/13 23:08:47
思いっきりカブっちまいました。すみません。
ていうか、Insetsを足すか引くかだけの話でしょ。そんなに
面倒ではないと思うけど。

俺はDefaultMutableTreeNode とDefaultTreeCellRendererを
タイプするほうがよっぽど面倒。
422403:05/03/13 23:10:37
>>419
外部境界と内部境界。
すっごいよく分かりました。サンクス!
423デフォルトの名無しさん:05/03/13 23:29:35
>>421
タイプなんかするなよ、アホ。
424デフォルトの名無しさん:05/03/13 23:41:24
ごめん、ネタで言ってみただけ。
Eclipse使ってるから、DefaultTreeCellRendererでも
DefaultT までで充分。
425403:05/03/13 23:54:24
へぇ、Eclipseってそんな機能あるんだ。
漏れはJ2SDKとMeadow(emacsのwin移植版)
426デフォルトの名無しさん:05/03/14 00:09:06
>>425
開発環境だったら補完は当たり前の機能。
あと Meadow でも補完くらいできるけどな。手で打ってんの?
427デフォルトの名無しさん:05/03/14 00:15:01
>>408
どりあえず動いているようですが、念のため for 内にgetActiveClients() を配置しておきました。

>>414-415さま
アドバイスありがとうございます。for 内にIteratorを置くようにしてみました。コツが少し理解できたとおもいます。
428Java天才プログラマ:05/03/14 00:26:53
>>411
それはjava Scriptの質問なのでスレ違いです。
429デフォルトの名無しさん:05/03/14 02:43:09
SocketChannel#readで受け取れるデータ長って\0を受け取るまですよね?
readするまでに2度文字列が到着してしまった場合は、前のデータと連結されるんですか?
それとも次のreadまで待機でしょうか?
430デフォルトの名無しさん:05/03/14 04:02:03
jdbcでデータベースmysqlを使ってるのですが日本語部分の文字化けで困ってます
どうかお力を貸してください

環境
JDK 1.5.0
mysql 4.1.10
JDBCドライバ mysql-connector-java-3.1.7

データベースhellodb,テーブルhello_world_tableは
http://www.hellohiro.com/jdbcmysql.htm
と全く同じです

mysqlの設定ファイルmy.iniでも
[mysql]
default-character-set = sjis
[mysqld]
default-character-set=sjis
としています

431430:05/03/14 04:03:45
ソース (例外処理略)
public class Display {
public static void main(String[] args) {

Class.forName("com.mysql.jdbc.Driver");
//文字コードをMS932,Windows-31J,euc-jpにしてもだめ
Connection connect=DriverManager.getConnection("jdbc:mysql://127.0.0.1/hellodb?useUnicode=true&characterEncoding=SJIS","root","root");
Statement state=connect.createStatement();
ResultSet rset=state.executeQuery("select NO,LANGUAGE,MESSAGE from hello_world_table");
String result="";

while (rset.next()) {
for (int i = 0; i < 3; i++) {
result=rset.getString(i+1);
if (result==null) {
result="null";
}
System.out.println(new String(result.getBytes())+'\t');

}
System.out.println();
}

rset.close();
state.close();
connect.close();

}
}

以上です
何でもいいので気づいた事がありましたら教えてください
432430:05/03/14 04:09:31
OSはWindosXPですm(__)m
433デフォルトの名無しさん:05/03/14 07:44:18
MySQL4.1はバグ持ちでWinではUTF8以外はだめぽ
4.0までの資料は投げ捨てたほうがいいというくらい別物でかなりのこまったちゃん
DBをUTF8設定でcharacterEncodingをUTF-8にすればOK

ただし、コマンドラインからのsqlコマンド群が問題になる

Windowsで4.1はやめたほうがいいというのは基本中の基本
Windows以外でも大変なのにWindowsはさらにひどいからね
434デフォルトの名無しさん:05/03/14 08:03:10
>>433
スレ違い乙。
435デフォルトの名無しさん:05/03/14 08:14:03
いや>>430に対してのレスだし、JDBCの部分の話だから
436java天才プログラマ:05/03/14 10:49:47
>>430
ワタクシもそれではつまづきましたよ。
JavaからMySQLへのUni → SJIS変換は出来ますが、
MySQLからJavaへの変換は不可能ですね。
しかも、エンコーディング指定をするとBlobデータが入れられなく
なるし、バイナリデータを入れて自分でJava側で変換するのが
いいでしょう。そっちの方が速度的にも早いかもしれません。
欧米のメーカーは、ホントに文字エンコーディングへの関心が
ないです。
437デフォルトの名無しさん:05/03/14 12:20:02
Javaでイチから開発環境を整えようとして、これさえあればまあ安心じゃない?
というツールやアプリがあれば教えてもらえないでしょうか。
4月から自社で開発を行うように、と上司に言われたのですが、
どうやら新人君や今までJavaを知らない別枠の開発者にも
教えたりすることになりそうなのです。
私もそんなにJava知ってるわけじゃないんですが・・・。

私はとりあえず

JDK
eclipse
Tomcat
DB(できればOracle)
プラグイン

くらいがあれば、自分でローカル鯖立ててコンパイルやテストができるかなぁと
考えているのですが何か他にいいツールやおすすめの方法があれば教えてくださいです・・・。
あと、なにか間違っていることがあれば指摘してもらいたいです。
どうかよろしくお願いしますm(_ _)m
438デフォルトの名無しさん:05/03/14 12:23:18
>>437
5年前の俺と同じ状況だな。
まあ、それだけあれば十分だろ。
ただし顧客にメーカー保証提供したいなら、Tomcatじゃなくて市販のにしろ。
439デフォルトの名無しさん:05/03/14 12:41:20
>>438
ですね。それはそうです。
ただ、今日連絡が入ったばかりで、
顧客がどこなのかも分からないです。
開発だけならTomcatのほうが便利でいいかと。

あとはXMLとかの知識に疎いので、そちらの勉強もしておかないとだめですね。
web-xmlの中身とか説明しろやゴルァとか言われたら即座に返答できないかも・・・( ;´・ω・`)
440デフォルトの名無しさん:05/03/14 12:58:23
Emacs
441デフォルトの名無しさん:05/03/14 13:02:25
>>439
開発はTomcatでもいいのだが、納品が違う場合は納品時と同じテスト環境用意するの忘れずに
あとは追々勉強していけばいいと思われ
442デフォルトの名無しさん:05/03/14 14:28:30
>>437
NetBeansがあればTomcatはいってるし構築二時間かけれないならオススメ
GUI作成があるなら特にオススメ

4.0はまじでEclipseよりかるいよ・・・
443デフォルトの名無しさん:05/03/14 14:35:18
みなさん色々レストンクスです。

>>440
Emacsってなんすか?聞いたことあるようなないような。

>>441
納品があるんですかねぇw

>>442
NteBeansって聞いたことないや(´・ω・`)

まだまだ勉強しないとだめですね(`・ω・´)
444デフォルトの名無しさん:05/03/14 16:19:08
質問です
DBに接続して取得したデータをarraylistに格納したあと、
格納したデータ(番号、名前、性別)から性別だけを取得することはできるのでしょうか?
445デフォルトの名無しさん:05/03/14 16:24:23
>>444

できるよ。
arrayListに格納したオブジェクトの型で一度キャストする必要があるけど。
当然ながらgetterメソッド、setterメソッドがないとだめだよ。
446デフォルトの名無しさん:05/03/14 16:25:03
確かJDK5.0だとコーディングの仕方が少し楽になるんだったかな。
447デフォルトの名無しさん:05/03/14 16:29:52
>>445,446
なるほどぅ
setterとgetterメソッドあればいけるのですね
もうちょっと頑張ってみますです
448デフォルトの名無しさん:05/03/14 17:04:31
>>445は、よく>>444の質問の意味が理解できるものだと、感心しました。
449デフォルトの名無しさん:05/03/14 17:24:48
JavaにはVC++のMSDNみたいな便利なヘルプってないのでしょうか?
というより、Javaのヘルプは何が標準的なんでしょうか。

当方、Eclipseを使いはじめたのですが
ドキュメントが英語で困っています。

今のところネットにあるクラス階層が出てくるヘルプサイトみたいなのを使っているのですが
いまいち使い勝手が良くないです。
450デフォルトの名無しさん:05/03/14 17:27:30
英語を勉強するのはどうかな?
451デフォルトの名無しさん:05/03/14 17:34:25
>>449
質問の意図がよくわからない。Eclipse付属のドキュメント
は日本語訳のものも配布されているから持ってくればいいけど、
これでJavaの言語仕様とかAPI仕様が勉強できるわけじゃないしね。
452デフォルトの名無しさん:05/03/14 17:39:14
Javaアプリケーションで画像を読み込みCanvasに表示させるにはどうすればいいでしょうか?
453デフォルトの名無しさん:05/03/14 17:41:52
最近は超初心者が増えてますね
454452:05/03/14 18:17:57
import java.applet.Applet;
import java.awt.*;

class HogeCanvas extends Canvas{
private Image myChara = null;
private int x = 100,y = 100;
HogeCanvas(){
Applet a = new Applet();
myChara = a.getImage(a.getDocumentBase(),"chara.gif");
}
public void paint(Graphics g){g.drawImage(myChara,x,y);}
}

class HogeHoge{
private Frame mainFrame = null;
private HogeCanvas mainCanvas = null;

public static void main(String[] args){
HogeHoge test = new HogeHoge();
test.mainFrame = new Frame();
test.mainCanvas = new HogeCanvas();

test.mainFrame.setTitle("Oyaji");
test.mainFrame.setLocation(0,0);
test.mainFrame.setSize(800,600);
test.mainFrame.add(test.mainCanvas,"Center");

test.mainFrame.show();
test.mainCanvas.requestFocus();
}
}
455452:05/03/14 18:18:32
C:\programs\java\oyaji>javac HogeHoge.java
HogeHoge.java:11: シンボルを解決できません。
シンボル: メソッド drawImage (java.awt.Image,int,int)
場所 : java.awt.Graphics の クラス
public void paint(Graphics g){g.drawImage(myChara,x,y);}
^
エラー 1 個
456444:05/03/14 18:32:31
自分はプログラミング初体験なため、言語という概念がまだヨーワカランタメ
他の人に説明出来ないくらいホントにチンプンカンプンになるのです・・・
サンプルコードとかを見ながらやって、この処理はつかえそうとおもっても
クラス名直さないとかあたりまえなのです orz
そんなヘボ人間ですいませんホントスイマセンorz
457デフォルトの名無しさん:05/03/14 19:11:46
>>444
ArrayListに格納するのは、番号、名前、性別のデータをインスタンス変数に持った
クラスがいいと思う。

ResultSetからgetするときは、定義したクラスをnewして、それに値をセットし、それをArrayListにaddすればよいのではないでしょうか。
458デフォルトの名無しさん:05/03/14 19:29:50
>>455
で?何をして欲しいの?
459デフォルトの名無しさん:05/03/14 19:48:37
g.drawImage(myChara,x,y);

g.drawImage(myChara,x,y,this);
に変えれ。

つか、それだけ詳細なエラーメッセージ出ててなぜわからん?APIドキュメントくらい読めよ。
460 ◆magic.fu7c :05/03/14 20:11:19
auの携帯ゲームが作りたくてプログラミングしているものです

JavaでJ2MEWirelessToolkitを使って簡単なプログラミングをしてみたんですが実行できませんでした

hello.javaというテキスト
↓中は
class hello
{
public static void main(String args[])
{
int a;
a=1;
System.out.println(a);
}
}
というファイルを作って
パッケージしてビルドしました
そして実行を押したら実行できませんでした
何故できなかったのでしょうか?教えて下さい
461デフォルトの名無しさん:05/03/14 23:05:25
>>429
SocketChannel#readで受け取れるデータ長は、ByteBufferのサイズまで。
ストリームの終了まで来たときには、readが-1を返すので、普通は-1が返るまで
ループする。

ちなみにByteBufferのサイズ分読み取れるという保障もない。読み取れたサイズを
readが返す。
462デフォルトの名無しさん:05/03/14 23:13:23
>>460
実行は出来ているが画面になにも出てないだけちゃうんか?
463デフォルトの名無しさん:05/03/14 23:23:53
>>461
それはつまり下品な言い方ですが、2通目のメッセージが残尿的に読み込まれてしまうということですか?
464デフォルトの名無しさん:05/03/14 23:27:52
>>463
同じストリームを使って通信してる限りそりゃそうだろ。
465460:05/03/14 23:34:07
実行したら1がでると思うんですが…
Exception;
java.lang.ClassNotFoundException
とでます
違う本には最初のところにinport javax.microediton.midletなど書いてあったんですがこの文がなければ実行できないのでしょうか?
よろしくお願いします
466デフォルトの名無しさん:05/03/14 23:36:58
ファイル名とクラス名の大文字小文字が一致してないとかいうオチ?
467デフォルトの名無しさん:05/03/14 23:37:53
>>464
なるほど、transactions per secondを調節するのは奥が深そうですね。
468460:05/03/14 23:42:02
J2MEWirelessToolkitには
Unable to create MIDlet hello
java.lang.ClassNotFoundException;hello
at com.sun.midp.midlet.Selector.commandAction(+47)
at javax.microedition.lcdui.List.keyPressed(+71)
at javax.microedition.lcdui.Display$DisplayAccessor.keyEvent(+147)
at com.sun.kvem.midp.lcdui.EmulEventHandler$EventLooprun(+275)
と表示されました
469460:05/03/14 23:49:20
大文字小文字はあってました
ファイル名クラス名同じにしてみましたら
J2MEWirelessToolkitには
java.lang.IlleagalAccessException
と出ました
470デフォルトの名無しさん:05/03/14 23:53:25
>>461
そもそも「1通目」「2通目」という考え方自体がおかしい。
SocketChannel#readはプロトコルなんて解釈しないから、あるのは「ストリームの末尾かどうか」だけ。
だいたいメッセージの末尾まで一気に読み込むんだとしたら、途中で輻輳なり遅延なりが発生したら、
末尾がくるまでひたすら待ち続けてしまうだろ。
だから、readしたときに読めるだけ読む。何バイト読めるかは全く分からない。だからreadは読めたバイト数
を返す。

readはストリームの末尾(つまり相手がSocketを閉じた)に来たら-1を返すので、それまではひたすら
ループする。で、受け取ったバイト列を連結するのは君の仕事だ。readの仕事じゃない。

さらにメッセージの末尾はプロトコルによってCRLFだったり\0だったりするから、これを判定して
メッセージを分割するのも君の仕事だ。readで読んだバイト列の途中にメッセージ末尾があったり
する。メッセージ末尾符号で分割していったんファイルに書き出すなりメモリに溜め込むなりするの
はプログラマがやるってこと。

だから、君の言う通り2通目のメッセージがちょこっと読み込まれたりするんだけど、readから
みたらそんなこと知ったこっちゃない。CRLFだろうが\0だろうが、バイト列の一部には違いない。
ストリームの終わりがくるまでひたすら読めるものを読むのがreadの仕事だ。
471460:05/03/15 00:17:58
なんども書き込み失礼します
コマンドプロンプトで実行するのとJ2MEWirelessToolkitで実行する結果は同じでしょうか??
472デフォルトの名無しさん:05/03/15 00:19:13
クラス名 変数 = オブジェクト.メソッド(引数)
の場合、変数にはオブジェクト.メソッド(引数)の結果が
格納されるのでしょうか?
もしそうなら変数の型はクラス名の型になり
intとかfloatとかとは明らかに違う特殊な型になるのでしょうか?
クラスの型というのは具体的にどのようなものなのでしょうか?
473デフォルトの名無しさん:05/03/15 00:25:06
はぁ?
474デフォルトの名無しさん:05/03/15 00:26:09
>>470
大変参考になりました。感謝です。
475デフォルトの名無しさん:05/03/15 00:27:41
>>472
型定義されたvoid*じゃない?
476460 468 469:05/03/15 00:35:11
>>460>>468-469をお願いします
471は無視して下さい よろしくお願いします
477デフォルトの名無しさん:05/03/15 00:38:18
>476
まずau向けのJavaアプリを作りたいんならauのサイトからエミュ他一式ダウソしてらっさい。
で、藻前さんが460に書いたプログラムは、携帯Java環境でなくPC等で動かすアプリケーション。
携帯Java向けのプログラムはjavax.microediton.midlet.MIDletクラスを継承した
サブクラスを作ってその中に処理を詰めていくんであって、まるっきり方向がずれている。
とりあえず
ttp://mailsrv.nara-edu.ac.jp/~asait/java/java.htm
ほか、「au java アプリ」でぐぐってヒットしたページを片っ端から嫁。
478デフォルトの名無しさん:05/03/15 00:42:05
>>477さん
ありがとうございました
って事は俺が読んでる本は…PC用か… 基礎固めにしか使えないという事ですね
本当ありがとうございました ずっとずっと悩んでいましたので助かりました
479472:05/03/15 00:45:29
>>475
レスありがとうございます。
型定義されたVoidとはどのようなことなのでしょうか?
お馬鹿ですみません。
480デフォルトの名無しさん:05/03/15 00:47:59
>>472
>>475は相手にするな全然違うこと言っている
481デフォルトの名無しさん:05/03/15 00:55:55
>>472

> クラス名 変数 = オブジェクト.メソッド(引数)
> の場合、変数にはオブジェクト.メソッド(引数)の結果が
> 格納されるのでしょうか?

そのとおり。

> もしそうなら変数の型はクラス名の型になり

そのとおり。

> intとかfloatとかとは明らかに違う特殊な型になるのでしょうか?

「クラス名 変数」って書いてあるんだから、int や float とは違う型だろうね。
変数の型が int 型になるためには、「int 変数名」って書かなきゃならんし、
変数の型が float 型になるためには、「float 変数名」って書かなきゃならん。
特殊かどうかは知らん。特殊って何だ?

> クラスの型というのは具体的にどのようなものなのでしょうか?

何を知りたいのか、わからないよ。
具体的なソースコードと共に質問するといいんでないかい?
482472@質問改正:05/03/15 01:00:26
Aaa aaa = Bbb.method(hikisuu)
上記のようなコードがあるのですが
これは何を表しているのでしょうか?
aaaにはBbb.method(hikisuu)の結果が代入されるのですよね?
その時のaaaの型はAaa型(Aaaはクラス名)となるのでしょうか?
そうなるとJavaでは勝手に型が作れてしまうということですよね?
483デフォルトの名無しさん:05/03/15 01:05:42
>>482
Aaa というクラス定義が本当にどこにも存在しないならコンパイルで失敗する。
Aaa という Java ファイルが存在せずコンパイルが通るならどこかに Aaa のクラスファイルが存在する。
JAR ファイル、クラスパス、ライブラリなどで調べるとよろし

なのか

> Javaでは勝手に型が作れてしまうということですよね?
Aaa があんたの作ったクラスならその通りですよ。

と答えればよいのか判断に困る
484デフォルトの名無しさん:05/03/15 01:06:03
aaaにはBbb.method(hikisuu)の結果が代入されるのですよね?
はい。
その時のaaaの型はAaa型(Aaaはクラス名)となるのでしょうか?
はい。
そうなるとJavaでは勝手に型が作れてしまうということですよね?
はい。(「そうなると」ってのはよくわからんが、型は作れる)
485デフォルトの名無しさん:05/03/15 01:06:12
・型を勝手に作れる=>ひと言で言うならyes

・aaaにはBbb.method(hikisu)の結果が代入される

代入ってのもあまりいい訳語じゃないよな。英語だとassign。
割り振られる、というのもなんか据わりが悪いが、まぁ、
Bbb.method〜 から返ってくる結果の値にaaaが紐付けされる、くらいか。

aaaの型はAaaと認識してもいいけど、
そのとき紐付けされているデータの型になっている
という認識でいたほうがよいかな。Aaa部分は、返ってくる
データがAaa型か、それを継承した型でなければならない
と表明している。

486472:05/03/15 01:06:14
>>481
レスありがとうございます。めちゃくちゃ助かります。m(__)m

「クラス@ 変数=クラスA.メソッド(引数)」とした時、変数に代入できる型は
クラス@で定義されている複数の型やメソッドのいずれかであれば
文法上正しいという認識でよろしいでしょうか?
487デフォルトの名無しさん:05/03/15 01:06:36
代入しなくてもAaa型なんだが
488デフォルトの名無しさん:05/03/15 01:07:07
クラスとインスタンスの区別がついてないんだろうな
489デフォルトの名無しさん:05/03/15 01:08:13
>>488
おまえは説明できるのか?
490デフォルトの名無しさん:05/03/15 01:13:56
>>486
全然違う
491デフォルトの名無しさん:05/03/15 01:17:09
>>486
というよりもだ、「クラスA.メソッド(引数)」を実行すると、メソッドの返り値として、なんか値が
返るわけだ。それはintかもしれんしStringかもしれんしAaaかもしれん。それはメソッドの内容に
よる。

で、「クラス@ 変数」は、その返り値を入れる入れ物だ。返り値が入る型でないといけない。
メソッドがintを返すならintでないといけない。Aaaのようなクラスのインスタンスを返すなら、
「クラス@」のところは、AaaもしくはAaaのスーパークラスでないといけない。

そうでなければ、コンパイル時に「クラスA.メソッド(引数)の返り値はクラス@型の変数には
入らんわボケ」という意味の、しかし回りくどくて分かりにくいエラーメッセージが表示されて、
コンパイルエラーになる。

結局、クラス@から考えるんじゃなくて、メソッドのほうを先に考えないとさ。
492デフォルトの名無しさん:05/03/15 01:41:41
>>486
> 「クラス@ 変数=クラスA.メソッド(引数)」とした時、変数に代入できる型は

「変数に代入できる値の型」についてあれこれ議論しようというときに、
代入演算子が出てくるから、わけがわからなくなるんじゃないかな。

 a) MyClass foo = AnotherClass.method(bar);

これは、次のようにも書ける。

 b-1) MyClass foo;
 b-2) foo = AnotherClass.method(bar);

b-1 を見るだけで(b-2 を見るまでもなく)、変数 foo の型はわかるし、変数 foo に
どんな値を代入できるかについても議論できる。

これは、>>491 さんのとは逆の方向ですな。
493デフォルトの名無しさん:05/03/15 02:51:53
標準入力からコマンドを取り込み、
区切り文字ごとに文字列を分割してコマンドを実行していくスレッドを作っています。
これだとメモリ・リークが起きないようなコードになっているでしょうか。
特にストリングバッファをクリアするコードが不安です。


int b;
Vector v = new Vector();
StringBuffer sb = new StringBuffer();
InputStreamReader reader = new InputStreamReader(System.in);
while ((b = reader.read()) != -1) { //標準入力から一文字づつ読み込む
 char c = (char)b;
 if (c == '|' || c == '\n') { //改行か垂直バーなら
  v.add(sb.toString()); //コマンドをVectorに格納
  sb.setLength(0); //バッファをクリア
  if (c == '\n') { //改行ならそれまでのVectorをコマンドの引数として渡す
   dispatchCommand(v);
   v.clear();
  }
 } else {
  sb.append(c);
 }
}
494デフォルトの名無しさん:05/03/15 04:48:44
別に問題ないと思うよ。個人的には
Vector は使わない
InputStreamReader を使わず System.in で済ます。あるいはいっそのこと BufferedReader 間で使う。
sb.setLength(0) の代わりに sb = new StringBuffer()、v.clear() の代わりに v = new Vector()
にするけど。
495デフォルトの名無しさん:05/03/15 05:36:41
こうしてまたヒープにゴミが…
496デフォルトの名無しさん:05/03/15 10:59:55
jarファイルを実行したとき
「Could not file the main class. Program will exit.」と
ダイアログが出力されて終了します。
他のjarファイルは実行できるのですが、1つ実行できないファイルがあります。
何が問題なのでしょうか。どなたかお教え下さい。お願いします。
497デフォルトの名無しさん:05/03/15 11:05:13
>>496
jarファイルの実行??
498デフォルトの名無しさん:05/03/15 11:10:26
ちと、質問なんですが、ファイルとかにシリアライズしたデータを書き込む時に、
いくつか変数があって、それが全て同じオブジェクトを参照してたとしたら、
同じデータが何度もファイルに書き込まれたりしないですよね?
一回本元のデータが書き込まれたら後の書き込みの時には参照だけですよね?
でそんな風になってる時に後で書き込んだ変数だけを読み出してもちゃんとデータは
復元されるのでしょうか?
質問ばかりですいませんがよろしくおねがいします。
499デフォルトの名無しさん:05/03/15 11:11:29
manifest書いとけば実行出来る罠
500デフォルトの名無しさん:05/03/15 11:12:45
>>498
そういうときはオブジェクトIDだけが書き込まれている
501496:05/03/15 11:18:09
>>497
実行って言わないんですか?javawで関連付けしてダブルクリックしました。

>>499
manifestがよく分からないのですが、教えてもらえませんか?
ググってみましたが良いサイトが出てこないので。
502デフォルトの名無しさん:05/03/15 11:22:32
ぐぐらんでもJDKのドキュメント見れば分かるだろう。
503デフォルトの名無しさん:05/03/15 11:23:55
504デフォルトの名無しさん:05/03/15 11:24:34
>>501
> manifestがよく分からないのですが、教えてもらえませんか?

「JavaTM Archive (JAR) ファイル」
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jar/index.html

このページにある「JAR ファイルの仕様」が参考になるかも。

これって、JDKのドキュメントをローカルに持ってれば、そこにも
同じものが入ってなかったっけ?
505496:05/03/15 11:27:03
>>502-504
色々とありがとうございます。貼って頂いたドキュメントなどで
しばらく調べてみます。
506デフォルトの名無しさん:05/03/15 12:10:31
プログラム中に関数がいくつあるのか、
そういうのを調べるプログラムを書くことは可能ですか?
難しくないですか?
507デフォルトの名無しさん:05/03/15 12:11:47
「クラスの中にメソッドがいくつあるか」ならできる
JARの中も調べられるからできるな
508デフォルトの名無しさん:05/03/15 12:30:17
まあ、そうですね。
クラス1つなんで。
509デフォルトの名無しさん:05/03/15 12:38:17
>>494
ありがとうございます。
つまるところ
while (true) {
 v.clear();
}

よりも
while (true) {
 v = new Vector();
}

の方がヒープにゴミ(?)が残らず、メモリリークが発生しにくいと考えていいでしょうか。
510デフォルトの名無しさん:05/03/15 12:40:00
>>506
リフレクションという方法で可能。 java.lang.reflect あたりを調べる。
commons-beanutilsのソースとか読んどけ。
511デフォルトの名無しさん:05/03/15 12:52:19
>>510
マジッスカΣ(’’‖)
難しそう・・。
でも、調べてみます。どうも。
512デフォルトの名無しさん:05/03/15 13:02:23
>>511
一応確認するが、ソースファイルからじゃなくて、classファイルからという意味でいいんだよな?
前の人たちが言っているのは、classファイルからという意味だから。
513デフォルトの名無しさん:05/03/15 13:10:12
>>512
いえいえ、ソースファイルです。
514デフォルトの名無しさん:05/03/15 13:34:24
>>494>>509
>.. の方がヒープにゴミ(?)が残らず、メモリリークが発生しにくいと考えていいでしょうか。

そんなはずはないのでは。わたしなら(Vectorを使うとして)v.clear()を使う。
515デフォルトの名無しさん:05/03/15 13:46:19
変な覚え方すると同期処理のときつまづくからメソッド使っておくのが一番。
516デフォルトの名無しさん:05/03/15 13:47:41
>>513
ソースファイルのみで、クラスファイルは存在しない状態で、
と言う意味?
517デフォルトの名無しさん:05/03/15 14:01:01
518デフォルトの名無しさん:05/03/15 14:02:00
>>517
お前頭いいな!
アンカーはよくわからんが
519デフォルトの名無しさん:05/03/15 14:02:49
上の参照は、
>>513>>516
という参照の誤り
520デフォルトの名無しさん:05/03/15 14:38:01
ひどい実装だと、配列で管理している内部データを、
クリア時に見かけの最後尾インデックスだけをゼロにして、
実は参照がなくなってないとか……なきにしもあらず。
Sunの実装は問題ないようですが。
521デフォルトの名無しさん:05/03/15 15:10:40
java.util.Vector のメソッドclear()のソースは

public void clear() {
removeAllElements();
}
public synchronized void removeAllElements() {
modCount++;
// Let gc do its work
for (int i = 0; i < elementCount; i++)
elementData[i] = null;
elementCount = 0;
}

となっているからelementDataの参照ははずされてます。
522デフォルトの名無しさん:05/03/15 16:40:20
>>517
なるほど、カスタムのdoclet作れば、色々とできそうだな。参考になった。
523デフォルトの名無しさん:05/03/15 18:05:18
Runtime.execで実行したプロセスの標準出力を

InputStream ins = process.getInputStream();
InputStreamReader isr = new InputStreamReader(ins);
BufferedReader br = new BufferedReader(isr);
String str;
while((str = br.readLine()) != null) {
System.out.println(str);
}

で出力しようと思ったんだけど
出力に日本語が含まれてたときに
\202\347\212\324みたいな出力に・・・
どこでどうエンコードしたらいい?
524デフォルトの名無しさん:05/03/15 18:11:14
strの内容をSJISにエンコードすりゃいいのとちがう?
525デフォルトの名無しさん:05/03/15 18:21:00
>>523
InputStreamReader isr = new InputStreamReader(ins, "Windows-31J");
526デフォルトの名無しさん:05/03/15 18:24:27
レスありがとうございます。

>>524
StringからStringへの変換はできるのでしょうか?
>>525
やはり\202\347\212\324という表示になってしまいます。
527デフォルトの名無しさん:05/03/15 18:27:12
>>526
Windowsだと思ってたが、環境は?
528デフォルトの名無しさん:05/03/15 18:30:01
>>527
環境を書くべきでした。すいません。
Windows XPです。
529デフォルトの名無しさん:05/03/15 18:44:39
Reader使わずに、1byte毎出力してみたら?
530デフォルトの名無しさん:05/03/15 18:58:15
>>529
同じでしたorz

気づいたのですが、このエンコードは日本語に限らず
半角スペースも"\_"(「 _ 」は半角スペース)になったりしています。
531デフォルトの名無しさん:05/03/15 19:01:00
\も1byteで入ってるのか?
532デフォルトの名無しさん:05/03/15 19:08:15
>>531
半角だったのでそうだと思います。
533デフォルトの名無しさん:05/03/15 19:11:20
>>532
1byte毎に数値として表示してみなよ
「思います」じゃプログラムできんよ
534デフォルトの名無しさん:05/03/15 19:12:20
今までRuntime.execで
dir c:\
を実行していたのですが、
cygwinのlsを使うと日本語も正常に表示されるようになりました。

dirは諦めるしかありませんか?
535デフォルトの名無しさん:05/03/15 19:16:01
バイトごとの数値を見た後、もう一歩進めて、
int k=0;
byte[] b=new byte[512];
StringBuffer sb=new StringBuffer();
while((k = ins.read(b)) !=-1) {
String str = new String(b,"MS932");//MS932は任意
sb.append(str);
}
ins.close();
System.out.println(sb.toString());

としてみては..
536デフォルトの名無しさん:05/03/15 19:18:25
JavaからDBを扱うときに、query生成って皆さんどうやっていますか?
Databaseクラスを作ってそのなかにgetUserID()とか言って取得・更新などのメソッドを全てつめこんで各所でSQL文を直書きしている私はもう死にそうです。
お願いです 誰か助けてくあdさい
537デフォルトの名無しさん:05/03/15 19:20:06
>>535
\は1バイトであることが確認できました。
それは今から試してみます。
538デフォルトの名無しさん:05/03/15 19:20:22
>>536
HibernateでもTorqueでも好きなの使え
あとはO/Rマッピングでぐぐれ
539デフォルトの名無しさん:05/03/15 19:26:52
>>535
同じ結果でした。
540536:05/03/15 19:33:47
>538さん
どうもありがとうございます。
Databaseくらすがを見るのがもう嫌になって昨晩あたりからDatabaseくらすにアクセスすると吐き気がするくらいダメになっていました。
グーぐるしてみます。ほんとにありがとうございます。
541デフォルトの名無しさん:05/03/15 19:38:45
>>537
>\は1バイトであることが..
char c= '\' はユニコード番号0x5cで、ASCIIでは1バイトですがJavaでは2バイトcharのあつかい
になります。
542デフォルトの名無しさん:05/03/15 19:52:08
>>541
出力された文字を
read()で1バイトずつ読み込み、
それを出力するごとに「-」を出力するようにしたところ、途中が
-\-
という表示になっていたため1バイトであると判断したのですが
やり方が間違っていましたか?

Javaの内部で\を扱えば2バイトかもしれませんが、
実際に出力された値としては1バイトだと思うのですが。
543デフォルトの名無しさん:05/03/15 19:59:17
>>542
使われているエンコーディングで1バイト扱いということですね。Java内部でのことではなくて..
出力するときにSystem.out.println(Integer.toHexString((int)c))) の形を使うと全てのバイトが
16真数表示されます。(ここでcはchar変数)
544デフォルトの名無しさん:05/03/15 20:02:19
jarファイルから同階層上のhoge.txtを
読み込む場合、マニフェストのClass-Pathに
相対パスを書く必要があると思いますが、
Class-Path: .
ではうまくいきません。どう指定するのが
よいでしょうか。おしえてください。

jar内部は以下のようになっていて
jp/tokio/はパッケージです

META-INF/MANIFEST.MF
jp/tokio/JarTest1.class

マニフェストの記述
Manifest-Version: 1.0
Main-Class: jp.tokio.JarTest1
Class-Path: .
545デフォルトの名無しさん:05/03/15 20:04:15
>>543
>出力するときにSystem.out.println(Integer.toHexString((int)c))) の形を使うと全てのバイトが
>16真数表示されます。(ここでcはchar変数)

すみません、ただしくは
"出力するときにSystem.out.println(Integer.toHexString((int)b))) の形を使うと全てのバイトが
16進数表示されます。(ここでcはbyte変数) "
とすべきでした。
546デフォルトの名無しさん:05/03/15 20:16:38
俺もがんばってJAVA勉強して就職するぞー
547537:05/03/15 20:23:39
dirは諦めることにします。
お騒がせしました。
ありがとうございました。
548デフォルトの名無しさん:05/03/15 20:25:14
Windows の ActiveX COMコントロールを java から直接操作する要件が出来まして、

jacob ってのを見つけたんですが、これを使ったことある人いますか?
ttp://sourceforge.net/projects/jacob-project/

やりたいことは、普通にAPIを呼ぶだけなんですけど、

Long hoge(a,b,c,d,e) というAPIってのがあったとして、a,b,cは引数でd,eはポインタ。
と、いうのがVBとかで動いてるんですけど、javaだと戻り値のLongしか拾えません。

d,eはnullしか帰って来ません。

よろしくです。
549デフォルトの名無しさん:05/03/15 20:28:29
>>546
今はJavaだけできる人はありふれてるからなあ・・・
550デフォルトの名無しさん:05/03/15 21:35:00
>>544
クラスじゃないものを読み込むのにクラスパスは関係ないかと。
ちなみにmanifestファイルの最後は改行で終わらないと読んでくれない。
551544:05/03/15 22:20:36
>>550
ありがとうございます。
Class-Pathは関係ありませんでした。
URL url=this.getClass().getResource(
path);
の相対パスが間違ってました。
あちゃちゃ
552st:05/03/16 00:37:21
お願いします。

class tes1 {
public static void main (String args[]) {
String st = new String("あいう");
System.out.println("st = " + st);
}
}

これを実行すると「あいう」って表示されます。
「st」はインスタンス変数ですから、
インスタンスが格納されるアドレスの先頭番地が
入るはずですよね?
なんで「あいう」がはいってんスカ?
553デフォルトの名無しさん:05/03/16 00:43:33
st=あいう
って表示されるはずが
あいう
としか表示されないからおかしいって言ってるの?
554デフォルトの名無しさん:05/03/16 00:44:15
>>552
全てのオブジェクトはtoStringを持っています。
new StringBuffer("st=").append(st.toString())
555デフォルトの名無しさん:05/03/16 00:45:23
(byte型の変数) & 0xff;

これでint型になおるそうですが、なぜでしょうか。

まず"0xff"がint型だからbyte型の数がint型の数と
演算を行うまえにJavaVMがbyte型から
int型に符号拡張しますよね?
そんときたとえば、もともとbyte型の変数が 0001 0001だったとすると
1111 1111 1111 1111 1111 1111 0001 0001に符号拡張されますよね?
なんで1だらけなんですか?
0000 0000 0000 0000 0000 0000 0001 0001 でいいじゃないですか。
理由がわかりません。
556デフォルトの名無しさん:05/03/16 00:47:13
(int型の変数) / 3がdouble型になるのと同じ理由です。
着目すべきは演算子
557デフォルトの名無しさん:05/03/16 00:50:18
>>552
> これを実行すると「あいう」って表示されます。
> 「st」はインスタンス変数ですから、
> インスタンスが格納されるアドレスの先頭番地が
> 入るはずですよね?

まあ、そういう教え方する人もいるんだろうな。

「〜が格納されるアドレスの先頭番地」は、
「〜が格納されるメモリ中の領域の先頭番地」
くらいの表現がいいかもしれない。
(厳密には正しくないんだと思うけど。)

> なんで「あいう」がはいってんスカ?

「インスタンスが格納されるメモリ中の領域の先頭番地」ではなく、
「インスタンスのメソッド toString を実引数なしで呼び出した結果」
を表示しているから、「あいう」が表示される。

そのプログラムでは、インスタンス変数に入っているものを表示しようとしていない。
(インスタンス変数に入っている参照値そのものを表示する方法は、Java には無いんだと思う。)
558デフォルトの名無しさん:05/03/16 00:51:00
>>552
連結演算子の定義がそうなってるから。

ところで話ずれるけど、
>>インスタンスが格納されるアドレスの先頭番地
これ、もしかしてObject#toString()の返り値のことを言ってるのだとしたら
間違い。あれはただのハッシュ値の16進表記。よくアドレスとか間違ったこと
言う人いるけど、どっからそういう情報持ってくるんだろ。なんか定番の参考書
にでもそう書いてあるの?
559デフォルトの名無しさん:05/03/16 00:57:35
>>558
Object#toString()がただのハッシュ値であるというのは
確かにそうだけど、アドレスというのは間違いとは言えないと思う。
実際に実装としてアドレスを使ってるのは多いんじゃないの?
APIリファレンスにも、Object#hashCode()のところに typicallyなんて書いてあるし。

As much as is reasonably practical, the hashCode method defined by class Object does
return distinct integers for distinct objects.
(This is typically implemented by converting the internal address of the object into an integer,
but this implementation technique is not required by the JavaTM programming language.)

というわけで、定番の参考書どころか、SunのAPIリファレンスに書いてある。
560デフォルトの名無しさん:05/03/16 01:00:06
>>555
> そんときたとえば、もともとbyte型の変数が 0001 0001だったとすると
> 1111 1111 1111 1111 1111 1111 0001 0001に符号拡張されますよね?
> なんで1だらけなんですか?
> 0000 0000 0000 0000 0000 0000 0001 0001 でいいじゃないですか。
> 理由がわかりません。
この0001 0001って、どっちがMSBなの?
MSBが0(非負整数)なら、0で符号拡張されると思うけど。
MSBが1なら1で符号拡張しないと、負の数じゃなうなっちゃうでしょ?
それとも質問者は2の補数とか知らないのか?
561デフォルトの名無しさん:05/03/16 01:00:40
>>558
> あれはただのハッシュ値の16進表記。

私が使っている Java (version "1.5.0_01") では、
Object#toString() の戻り値としては、「ハッシュ値の16進表記」ではなく、
「オブジェクトの派生元のクラス名、アットマーク (@)、およびオブジェクトの
ハッシュコードの符号なし 16 進表現から構成される文字列」
が、返されます。

あなたはどこからそういう情報を持ってきているのですか?
なんか定番の参考書にでもそう書いてあるのでしょうか?
562デフォルトの名無しさん:05/03/16 01:02:03
みんなつっこむ相手が違うと思うんだが...
563559:05/03/16 01:03:50
>>561
そんなの文脈から@の右側のこと差してるのは明らかだと思うんだけど。
素で聞いてんの?それとも揚げ足取って遊びたいの?
564デフォルトの名無しさん:05/03/16 01:07:35
ハッシュ値の16進表記?

〜java.io.〜@2423534
みたいなやつです。これはアドレスだと思ってましたが。
オブジェクト変数を表示させようとすると、上記のような表示になります。
String型でやると、文字が出ます。

クラス名 オブジェクト変数;
これでオブジェクト変数4byte分がメモリ上に確保され、
オブジェクト変数 = new クラス名();
これでオブジェクト変数に格納されるメモリ中の領域の先頭番地がはいりますよね?

で、オブジェクト変数を表示させようとするとアドレスが表示されるはずだと思いまして。
ハッシュ値の16進表記?って?
565558:05/03/16 01:09:38
>>559
ああ、Sunのにはそうかいてあるのね。IBMのjavadocには
/**
* Answers an integer hash code for the receiver. Any two
* objects which answer <code>true</code> when passed to
* <code>.equals</code> must answer the same value for this
* method.
*
* @authorOTI
* @versioninitial
*
* @returnint
*the receiver's hash.
*
* @seeequals
*/
public native int hashCode();

としか書いてなかったから知らなかったよ。ありがとう。
566デフォルトの名無しさん:05/03/16 01:10:58
>>564
えーと、ほとんどの実装では、その数字はアドレスですが
Javaの言語仕様上は、Objectのインスタンスが識別できれば
どんな数値でも良いことになってます。
それがハッシュ値って言ってるものです。
詳しくはObjectクラスのhashCode()メソッドの説明を見てください。

で、Javaのオブジェクトは、文字列表示する時には、暗黙にtoString()メソッドの結果が返されます。
どうしてもハッシュ値を表示させたいなら、hashCode()メソッドを呼んでください。

もう一度書きますが、hashCode()の戻り値はアドレスである保証はありません。

って書けばわかる?
567559:05/03/16 01:12:43
>>565
IBMのjavadocか。
マニアックなもの見てますね。

> 知らなかったよ。ありがとう。
いえいえ。
568デフォルトの名無しさん:05/03/16 01:17:55
>>566
> Javaの言語仕様上は、Objectのインスタンスが識別できれば
> どんな数値でも良いことになってます。
> それがハッシュ値って言ってるものです。

テキトーな事を思いつきで述べるやつらのオンパレードだな、ここは。

複数の異なるインスタンスが、同じ int 値を hashCode() の戻り値として
返すことがありえない、とあなたは言っているのですよ?
(だって、同じ値が帰ってきたら、インスタンスが識別できなくなる。)
569デフォルトの名無しさん:05/03/16 01:21:55
いまいちよくわかりません。

String型でインスタンス化したときのオブジェクト変数を表示させようと
するとObject#toString() の戻り値にもかかわらず16進ハッシュ値でなく、
文字列が表示されます。

たとえば、RandomAcessFile型でインスタンス化してオブジェクト変数を
表示させようとすると、16進ハッシュ値が出ます。

違いは?
570とおりすがり:05/03/16 01:22:49
( ・3・)???

571デフォルトの名無しさん:05/03/16 01:22:53
実は566=559なんだけどさ。
> 複数の異なるインスタンスが、同じ int 値を hashCode() の戻り値として
> 返すことがありえない、とあなたは言っているのですよ?
おれはそんなこと書いた覚えはない。
なぜなら「識別」の定義を
> (だって、同じ値が帰ってきたら、インスタンスが識別できなくなる。)
なんてしてないから。

で、詳細はhashCode()メソッドを見ろとかいた。

上記のことまで書いたら木を見て森を見ずになって、初心者にわかりにくくなるからね。
探究心のあるひとはhashCode()メソッドの説明読むだろうし。

キミはequalsと==の違いの説明とかしてる時に
「でもStringは」とか言い出すタイプ?
そういう人ってキラわれますよw
572デフォルトの名無しさん:05/03/16 01:26:57
>>569
String 型のインスタンスの toString() を呼んだときは、
String クラスでは、独自の toString() の実装を持っている(オーバーライドしている)
ので、Object#toString() は呼ばれない、ってことじゃないでしょうか。

>>571
じゃ、「識別」の定義をおながいします。w
573デフォルトの名無しさん:05/03/16 01:27:14
>>568
ん? Integer#hashCode()やString#hashCode()とかだと確かに違う
インスタンスが同じhashCode()の戻り値を返すことはあるけど、
今はObject#toString()の話でしょ? なにが気に入らない?
574デフォルトの名無しさん:05/03/16 01:27:20
>>564
その妙にCくさい知識は棄てろ。

>クラス名 オブジェクト変数;
>これでオブジェクト変数4byte分がメモリ上に確保され、

そうとは限らない。「クラス名」を格納するための変数が用意されるのは事実だけど、
変数に入るのはメモリアドレスだけかどうかもさだかではないぞ。

>オブジェクト変数 = new クラス名();
>これでオブジェクト変数に格納されるメモリ中の領域の先頭番地がはいりますよね?

「クラス名」のインスタンスがヒープに作成されて、その参照が「オブジェクト変数」に
入ることは間違いないが、その「参照」がメモリ領域の先頭番地かどうかはわからない。
実装次第だろう。

で、「オブジェクト変数」をprintlnに渡すと、自動的に「オブジェクト変数.toString()」が
実行されて、その結果が表示される。参照の正体が表示されるわけではない。

で、Javaには参照そのものをどうにかする言語上の仕組みは存在しない。
575デフォルトの名無しさん:05/03/16 01:28:00
>>566
hashCode() がオーバライドされてる可能性があるので
確実には System.identityHashCode(Object) の方がいい。

>>569
toString() がオーバライドされてるかどうか。

>>571
568ではないが、「識別」できる必要もない。
なぜなら int hashCode() { return 0; } とかでもいいから。
576573:05/03/16 01:28:04
間違えた。
Object#toString() -> Object#hashCode()
577デフォルトの名無しさん:05/03/16 01:32:01
C#でいうvirtualとoverrideにあたる機能ってありますか?
それとも全部オーバーライドでsuperは抹殺ですか?
578デフォルトの名無しさん:05/03/16 01:32:38
>>569
ObjectクラスのtoString()メソッドは、16進ハッシュのついた文字列を返す。
StringクラスのtoString()メソッドは、Object#toString()をオーバーライドして
いて、インスタンスが保持している文字列そのものを返す。

RandomAccessFileとしてインスタンス化されたなんかのクラスのtoString()は、
たぶん特に実装されてないので、スーパークラスであるObject#toString()の
結果を返してる。

たとえばBigDecimalクラスのインスタンスにtoString()すると、ハッシュ値じゃ
なくてBigDecimalが内部に持ってる数値の文字列表現を返すぞ。

toStringはすべてのクラスが持っていて、いくつかの(ほとんどの?)クラスは
オーバーライドしてハッシュ値以外の文字列を返すわけだ。

これで分かってもらえただろうか。
579568:05/03/16 01:33:31
>>573
単に、嘘・でたらめ・間違った情報が気にくわねー。
580デフォルトの名無しさん:05/03/16 01:33:44
>>577
javaは全部C#でいうvirtualです。
overrideはいちいち書かなくてもオーバライドすれば勝手にoverride扱いになります。
でsuperは抹殺とか言ってるけどC#ではbaseだろ?
581デフォルトの名無しさん:05/03/16 01:33:53
>>577
privateでないインスタンスメソッドはすべてvirtualだと思え。
同名で同じ引数をもったメソッドをサブクラスで定義すると、オーバーライドしたことになる。
582デフォルトの名無しさん:05/03/16 01:36:23
>>580 >>581
なるほど、使い分けする為のメソッドを用意することにします。

>C#ではbase
そこはJavaにあわせたんです。

583デフォルトの名無しさん:05/03/16 01:37:25
>>582
???
584571:05/03/16 01:37:35
まあ、あんまり荒らすのは本意じゃないので。

「識別」って書いたときに、そのようなツッコミが来ることを予測してたので
わざと定義しないで、hashCode()を見ろって逃げたのよ。
585デフォルトの名無しさん:05/03/16 01:43:51
>>581
finalもfinalも
586デフォルトの名無しさん:05/03/16 01:43:51
まあ、VM の気持ちになって考えればわかること。
587デフォルトの名無しさん:05/03/16 01:43:54
>>583
????
588デフォルトの名無しさん:05/03/16 01:47:15
オーバーライドはわかったのですが、
インスタンス変数になんで文字列が格納されてるのですか?
インスタンス変数には、インスタンスが格納されるメモリ領域の先頭番地が
格納されるはずです。
http://www.atmarkit.co.jp/fjava/rensai2/javaent02/javaent02.html
ここの後半をみてください。
589デフォルトの名無しさん:05/03/16 01:48:48
>>588
だから、toString()メソッドが、文字列を返すように実装されてるの。
590デフォルトの名無しさん:05/03/16 01:49:18
>public static void main (String args[]) {
>String st = new String("あいう");
..........
>「st」はインスタンス変数ですから、

ここに突っ込むやつがいなかったのが不思議。
591デフォルトの名無しさん:05/03/16 01:50:42
インスタンス変数にはオブジェクト実体の参照が入っていて、文字列をもっているのは
オブジェクト実体(インスタンス)のほうだろ。

で、くどいようだが、println( オブジェクト変数)は、オブジェクト変数の中身の参照を表示
するのではなくて、「オブジェクト変数.toString()」の結果を表示するんだっての。

インスタンス変数にメモリ領域の先頭番地が仮にはいってたとして、それがtoString()の
結果となんか関係あるのか?
592デフォルトの名無しさん:05/03/16 01:52:58
しかし、
>>588
の記事は、「Javaじゃアドレスを4バイトであらわす」とか断言してるんだな。。
まあ、ほとんどの実装じゃそうだと思うけど。
593デフォルトの名無しさん:05/03/16 01:54:21
>>588
そのページは非常によい説明のしかたをしてると思う。
しかし、プログラム初心者の場合は、そのページを読んだあと
K&R の「プログラミング言語C」を読むべきだと思うのは私だけだろうか。
594デフォルトの名無しさん:05/03/16 01:55:04
Javaでアドレス読み取ることって出来るのかな?
595デフォルトの名無しさん:05/03/16 01:58:21
>>591
すいません。

>で、くどいようだが、println( オブジェクト変数)は、オブジェクト変数の中身の参照を表示
>するのではなくて、「オブジェクト変数.toString()」の結果を表示するんだっての。

オブジェクト変数の中身を表示する方法と、「オブジェクト変数.toString()」の戻り値を
表示するのとは、全く同じじゃないんですか?
596デフォルトの名無しさん:05/03/16 01:58:35
このスレでは以降、

String str = "abc";

ってなってるときに、
「str には abc が入っている」
という言い方は禁止でおながいします。

正確を期し、
「str には、abc という3文字を内部に持つ String 型のインスタンスへの参照が入っている」
で。

マンドクセ。

>>590
たしかに。それはインスタンス変数じゃなくて参照型の局所変数ですね。

「Java言語規定 第2版」
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html
597デフォルトの名無しさん:05/03/16 02:01:24
>>595
変数の中身を表示するっていうけど
中身ってなに?
何をもって「全く同じ」なの?
そこら辺について自分でも答えられない状態のような気がしてならない。
598デフォルトの名無しさん:05/03/16 02:04:27
>>588
> オーバーライドはわかったのですが
わかってないじゃんw
599デフォルトの名無しさん:05/03/16 02:11:30
すべてわかりました。

String st = new String("あいう");
これと、
String st = "あいう";
これが同じだということですね?
これはストリング型がよく使われるから、インスタンス化しなくていいように。
で、st.toString();ってやると、stの中にある、「"あいう"が格納されている
インスタンスを示すアドレス」を表示するのではなく、
インスタンス自体、つまり"あいう"が表示される、と。
600デフォルトの名無しさん:05/03/16 02:13:52
後半はあってるが前半は違う。
601デフォルトの名無しさん:05/03/16 02:14:53
始めてjavaに触るんだけど、お勧めの入門書を教えてほしいっす。
602デフォルトの名無しさん:05/03/16 02:15:04
いやよく読むと後半も違うな。
603デフォルトの名無しさん:05/03/16 02:16:20
釣りとしか思えない
604デフォルトの名無しさん:05/03/16 02:16:20
>>599
まあ、いまのレベルなら、前半も大体あってると思ってもいいかも。
後半の「インスタンス自体」って表現の方が気にかかる‥。
605デフォルトの名無しさん:05/03/16 02:17:28
というか、最初の段階からそこまで厳密に理解してる必要は無いと思うな。
606デフォルトの名無しさん:05/03/16 02:18:05
""であらわされた文字列ってnew StringBuffer#toStringに置き換わるんだっけ?
607デフォルトの名無しさん:05/03/16 02:18:21
>>601
俺は、
柏原正三「はじめてのJava完全入門」
が良かった。

***Javaのオススメ入門書***
ttp://pc5.2ch.net/test/read.cgi/tech/1056191116/
608デフォルトの名無しさん:05/03/16 02:22:53
>>606
強いていうなら、new String(...).intern()かなあ。
StringBufferに展開されるのは、文字列を + で演算した時の話。
609デフォルトの名無しさん:05/03/16 02:25:03
>>605
Javaじゃアドレスを4バイトで表すとかいうウソを真に受けてるから正してるんですよ。

>>606
通常、
文字列リテラル一個のときは置き換わらない。
文字列リテラルばかりを + でつないだときはつながった一個のリテラルになる。
文字列リテラルと文字列変数を + でつないだときは StringBuffer で append されて最後に toString() される。
610デフォルトの名無しさん:05/03/16 02:26:17
>>602
どこが?
はきそうなので寝ます。
また明日来ます。
>>601
やさしいJava or プログラミングレッスン

みなさんありがとう。また明日。というか今宵。
611デフォルトの名無しさん:05/03/16 02:27:04
>>609
そんなこといってない
クラス型変数が4バイトだ。
612デフォルトの名無しさん:05/03/16 02:27:44
>>599
ほぼそんな感じ。StringクラスのtoString()メソッドはそのように定義されてる。

当然他のクラスだと違う仕様になってるから、ハッシュ値が表示されたり、
訳の分からん文字列が表示されたり、とにかく a しか表示しないようなもの
もあるかもしれない。

それは toString() メソッドの仕様次第ということ。

ちなみに、stがアドレス値を持ってると仮定して、Javaにはそのアドレス値を
どうにかする仕組み自体がないから、そんなこと気にしないことだな。
613デフォルトの名無しさん:05/03/16 02:28:58
つーかさ、Javaは、なまじっかハードの動きを隠蔽するからわかりづらいんだよ。
こりゃCの方が楽だな。
614デフォルトの名無しさん:05/03/16 02:29:53
>>601
ちょっと邪道だが、他の言語(特にC系)である程度経験があるなら、

・SJC-P の受験参考書
 → 文法を覚える。
・Effective Java プログラミング言語ガイド
 → コーディング方法を覚える。

というのが、案外近道のような気がする。
615デフォルトの名無しさん:05/03/16 02:30:53
実はprintln(String str)はprintln(Object obj)とは別物だから、
表示するときにStringのtoString()が中で呼ばれるとは限らないって
揚げ足取りはアリ?
616デフォルトの名無しさん:05/03/16 02:34:00
>>615
既出でしょ?
objんときはスーパークラスのtoStirng()が呼ばれるって。
617デフォルトの名無しさん:05/03/16 02:35:15
ところで、なんで toString() の話になったんだろ。

public static void main(String[] args) {
  String str = "hoge";
  System.out.println(str);
}

このプログラムの最初の行にかかれているStringのオブジェクト(いんすたんす?)
の、toString() メソッドってどっかで呼ばれるのか?
618デフォルトの名無しさん:05/03/16 02:35:56
""で表記した文字列ってGCで消える?staticで保持して於いたほうがいい?
同一のものなら同じ参照をうんたらってネタをStringの解説で見た覚えがあるんだよね。
619601:05/03/16 02:36:30
>>607
>>610
>>614
即レスどもです、助かります!
とりあえず明日本屋に行って検討してみます!
620588:05/03/16 02:42:09
621デフォルトの名無しさん:05/03/16 02:42:51
>>617
RandomAccessFileやらObjectやらをprintlnすると、メモリアドレスっぽいのが表示されるじゃん!
なんでStringのときはメモリアドレスが表示されないんだよ! とかいうような話だったから。
622デフォルトの名無しさん:05/03/16 02:44:54
>>618
そりゃスコープから外れればGCの対象になるわな。
しかし同じ文字列がすでに作られててまだGC対象になってない
(どっかで保持されてる)なら、同じインスタンスを使い回す。
623デフォルトの名無しさん:05/03/16 02:47:05
>>614
いや、おれはJCPの受験参考書は読んどいた方がいい本だと思う方だな。
受験用だけあって、ポイントは押さえてるからね。

Effective Javaのまえに、「プログラミング言語Java 第3版」かな。
624デフォルトの名無しさん:05/03/16 02:49:13
>>620 とりあえずね、println("st =" + st);の動作について
いえばね、"st = " + stのようにオペランドがString型の
場合の+演算子は文字列の連結を返すって仕様で決まってるから、
アドレスとかそういうのはおいておいて、結果として文字列が
返るって理解してください。

あと、System.out.println(String str)についてもPrintStream#println(String str)
の仕様で、文字列を表示するメソッドであると決まってるから、アドレスとか
参照ってのはおいておいて、文字列が表示されるんだと教条的に覚えといてください。

世の中、振り返ったら理解できたってこともないわけじゃないからとりあえず
理解は後回しにしといてね。
625デフォルトの名無しさん:05/03/16 02:49:56
>>613
関係ないがNIOのDirectByteBufferってどう考えてもネイティブメソッドで確保したメモリ領域をJavaで扱うために用意したとしか思えない・・・
626デフォルトの名無しさん:05/03/16 02:51:22
初めまして。
いきなりですが本題。
最初の一歩な質問でなんなんですけど、
J2SE(SDK/mac使用可)ってどこからDLするんですか?
一応ここまでつき止めて、J2SEドキュメントってのをDLしたのですが違ったようで(汗
  ↓
ttp://java.sun.com/j2se/1.5.0/ja/download.html

どうでもいいようなことですがほんと1.5時間くらいさまよってます。
マジ教えてください。
627デフォルトの名無しさん:05/03/16 02:51:47
>>625
PureJavaそのものはJNIばっかり
628デフォルトの名無しさん:05/03/16 02:52:46
>>618
"" に限らず、"a" みたいな文字列リテラル、というか文字列型の定数式 ("a" + 1) みたいなのも含む、は
コンパイル時に解決されて実行時には String#intern() された同じインスタンスを使いまわす。
文字列定数を持つクラスがアンロードされるまではインスタンスはGC対象にはならないはず。

new String("") みたいにすれば別のインスタンスを生成できる。
629デフォルトの名無しさん:05/03/16 02:53:23
>>626
JDK 5.0 Update 2 がj2sdk1.5.0
630626:05/03/16 02:55:29
>>629
スペシャルサンクス
631デフォルトの名無しさん:05/03/16 02:55:32
>>629 兄さん、626がお求めのはMac版ですぜ。
632デフォルトの名無しさん:05/03/16 03:02:15
>>628
クラスのアンロードってことは内部の展開はstaticと考えてよい?
633626:05/03/16 03:04:13
とりあえず片っ端からDLしていったところ、
Solaris AMD64 packages - tar.Z
ってなものが生き残りました。
が、その中に入っているほとんどの書類が開けず…
634デフォルトの名無しさん:05/03/16 03:06:41
>>631
ああ、そっか。ちゃんと読んでなかった。

>>626
ごめんね。
MacはFreeBSDがベースだから、そっち方面と一緒に調べると幸せになれるかも。
見つからなくても今度は謝らないけどね。
635デフォルトの名無しさん:05/03/16 03:06:59
>>625
allocateDirect( capacity) 以外にDirectBufferを生成する方法がないのに、どうやって
他で確保したメモリを使うのだね。
636626:05/03/16 03:07:45
>>633
追記
jdk-1_5_0_02-linux-amd64.binも生存。しかしその中に(以下同文
637デフォルトの名無しさん:05/03/16 03:09:06
>>635
NewDirectByteBuffer関数
638626:05/03/16 03:09:06
>>634
そうでしたか。戯言につきあって頂きありがとうです。
639629:05/03/16 03:13:19
640デフォルトの名無しさん:05/03/16 03:13:53
>>626
Mac OS XにはJavaの実行環境はデフォルトではいってる。

開発環境がほしいなら、Appleのデベロッパページから、Mac用のを
ダウンロードするか、OS Xに一緒に開発キットのCD-ROMが付いてる
から、それをインストールする。

ttp://developer.apple.com/ja/

ここでApple Developer Connectionの無料会員になると、Mac用のIDEとか
Java開発環境とか、WebObjects試用版とかの最新版がダウンロード出来るよ。

Mac用のJava最新バージョンは1.4.2 Update 2ってやつな。
641デフォルトの名無しさん:05/03/16 03:14:04
>>626
正しくはこっちな。
Apple Developer Connection ttps://connect.apple.com/
ここから無料アカウントを取得してログイン>Downloads>Javaとリンクたどれば見つかるはず。
最新版はJava 1.4.2 Update 1で悲しい事に1.5はまだない。

ってのがMacの一般的なJava環境だと思う。


642641:05/03/16 03:16:34
うは、メンバーサイトのアドレス貼っちまった。
ttp://developer.apple.com/ja/
が正しいorz
643デフォルトの名無しさん:05/03/16 03:18:17
>>637
JNI関数って NIO もサポートしてたんだね....知らんかったよ....
ありがと。
644626:05/03/16 03:20:11
>>639 >>640 >>641
うぉ!ありがとうございます。
このまま探してたら危うく徹夜するところでした(汗
645640:05/03/16 03:20:56
>>641
ああそうだった。実行環境だけUpdate 2が出たけど、開発環境はUpdate 1までだった。
だからJDKは1.4.2 Update1 Developer Toolsが最新。
646デフォルトの名無しさん:05/03/16 03:34:19
一連のやり取りを見て思ったんですが、MacでFreeBSD用のJavaVMって動かせないのかな?
647デフォルトの名無しさん:05/03/16 03:39:37
Mac→FreeBSD→Wine→Windows→Eclipse?
648626:05/03/16 04:02:21
メンバーになる条件にひっかかって(年齢)まだ取得できていませんが、
明日にでもやってもらおうと思ってます(親)。

てか早く寝なきゃヤヴァイんで。
649デフォルトの名無しさん:05/03/16 04:10:05
>>627
×PureJavaそのものはJNIばっかり
○PureJavaそのものはnativeメソッドばっかり

少なくともJNIを使ったものはPureJavaではありません。
650デフォルトの名無しさん:05/03/16 04:15:26
>>647
それは無理。PPCとX86系のCPUの違いがまだ克服されていないはず。
ちなみにDarwineとかいうプロジェクト名だったと思う。>PPC用wine
651デフォルトの名無しさん:05/03/16 04:17:24
バイトオーダーの関係か?
652デフォルトの名無しさん:05/03/16 04:30:21
すみません初歩の事を教えて下さい
http://sterdust.net/のサイトを読んでみたんですが クラスとオブジェクトとコンスタントとは何でしょうか??
クラスの中にオブジェクトがあるという事でしょうか??上のサイトで説明すると運動会がクラス オブジェクトが競技であっていますか??
あとコンスタント何ですが…
クラス名 変数名 =new クラス名()
をすると 変数名でクラスを扱えるという利点なんでしょうか??
初歩ですみません どうかよろしくお願いします
653デフォルトの名無しさん:05/03/16 05:33:31
>>652
釣りか?釣りなのか?
一応マジレスしとくと、運動会も、玉入れも徒競走も参加者も観客も全てクラス。

クラスは、そのルールを定義したもののことだ。100m走を例に取って説明するなら
数人がピストルの合図で走り始め、決められたコース上を100m走って先にゴールした人が勝ち。
という様な内容が定められているものだ。その定義に沿っている物なら小学校の運動会の100m走も
アテネオリンピック男子100m決勝も全て100m走というクラスで処理出来る。

(余談だがオリンピックの100m走には、ドーピング検査など小学校の運動会にはないルールがあるので、
100m走を継承し、オリンピック陸上種目というインターフェースを実装したサブクラスだろう)

インスタンスは、実際の競技を指す。上の例なら例えばアテネオリンピック男子100m予選第2レース
といった、具体的なある1回の競技の事を指す。このインスタンスには100m走というルールに従って
競技の参加者やスタート時刻などと言ったその競技固有の情報が格納され、処理される。

ちなみに、競技の参加者も出走者というクラスのインスタンスだといえる。

リンゴに例えるなら、リンゴという定義がクラス。
あなたがいま手に持っているリンゴなどという実体がインスタンス。
654デフォルトの名無しさん:05/03/16 06:23:36
>>649
JavaAPIが利用してるならPureJavaでしょうよ
具体的にはVolatileImageなんかこれ利用してるんじゃないか?
655BlackLightOfStar ◆ifsBJ/KedU :05/03/16 06:55:47
http://noosphere.princeton.edu/bsktobsrv/basketobserver.wall.html
JavaとJavaScriptの合体技(?)です。
var archiveName = document.myApp.getJarName();
によって、archiveNameに何が代入されるのでしょうか?
656デフォルトの名無しさん:05/03/16 10:13:22
>>652
タイヤキ焼く機械あんだろ、鉄板で挟むやつ
あれがクラスで、出来たタイヤキがインスタンスだ
657デフォルトの名無しさん:05/03/16 10:23:36
>>656
うまいw
658652 ◆magic.fu7c :05/03/16 11:25:49
みなさん凄く分かりやすい解説本当ありがとうございました
オブジェクトというのは運動会全体の事でよろしいのでしょうか??

あと>>652の下の質問もよろしくお願いします
659デフォルトの名無しさん:05/03/16 11:33:34
>>658
変数名は鯛焼きに名前を付けて扱いやすくするんだよ。
右から何個目とかじゃわかりにくいだろ?
だから、良夫とか花子とか名前を付けるんだよ。
良夫はあんこはみ出てるとか、花子はあんこが尻尾までつまってないとか、インスタンスの状態もいろいろあるんだよ。
660デフォルトの名無しさん:05/03/16 11:37:41
例外処理について教えて頂きたいことがあります。

コンストラクタの例外をcatchするときは

public 戻り メソッド名(引数){

   try{
    クラス a = new クラス(引数);
   }
   catch(Exception e){
   }
}
でよいのでしょうか?
661デフォルトの名無しさん:05/03/16 11:42:35
>>660
それでOKだが、なるべく例外はまとめてじゃなく、個別にキャッチしろ
662デフォルトの名無しさん:05/03/16 11:47:30
>>661
分かりました、ありがとうございます。
663658 ◆magic.fu7c :05/03/16 11:50:48
>>659さんありがとうございました
とても分かりやすい解説です
あとオブジェクトの事は658であっているでしょうか??
664デフォルトの名無しさん:05/03/16 11:53:30
>>660

public 戻り メソッド名(引数){
クラス a=null;
   try{
     a = new クラス(引数);
   }
   catch(Exception e){
//e の処理
   }
}
のほうがより良いかと。そうでないと、この try ブロックを出ると変数 a は
有効でなくなる。それが、例外を個別にキャッチすることにつながる。
665デフォルトの名無しさん:05/03/16 12:01:53
>>663うまい例えが見つからないが、少なくとも
>>658の解釈は間違っていると思う

とりあえず、現段階ではインスタンスとオブジェクトは
同じものと考えてて問題ないと思うよ

ただ、「クラスとインスタンスの違い」は
重要なので、ここだけはキッチリ区別しておく事
666デフォルトの名無しさん:05/03/16 12:04:51
このページの、
http://sterdust.net/ez/prog/base.html

> Javaではオブジェクト指向を強く意識しています。
>  オブジェクト指向というのはその名の通り、
> オブジェクト(物)単位でのプログラミングです。
>  例えば運動会というのを大きなオブジェクトとすると
> 運動会は徒競走などの競技の小さなオブジェクトを持つ事で
> 全体として運動会の機能を持ったオブジェクトになります。

という説明は、なんだか微妙だな。
特に、オブジェクト指向を知らない人への、最初の説明としては
持ち出している例が、私には適切だとは思えない。

オブジェクト=物、っていう認識はいいと思うんだけど、
その後すぐ出てくる例として「運動会」ってのが、微妙。
運動会って、物っていうよりか、「事」じゃねー?

どっちかというと、運動会の例は構造化プログラミングの説明に良いかも。
667デフォルトの名無しさん:05/03/16 12:13:34
>>652
静的(static)でないクラスは設計図で、そのインスタンスは製品という譬えが
時々されるようですね。staticなクラスは既に設計図と製品とが同じものという
ことになるでしょうかね。一般のクラスはインスタンスというオブジェクトの
かたちでの製品(つまり、"new クラス名(引数)")にしないと働かないわけです。

クラスのインスタンスはオブジェクトですが、一方、配列もオブジェクトです。
668 ◆magic.fu7c :05/03/16 12:34:45
って事はインスタンス化したオブジェクトがクラス? って感じですかね?製品に値段をつけて初めて売れるみたいな感じでしょうか??
本当親切な回答みなさんありがとうございました
669デフォルトの名無しさん:05/03/16 12:39:26
staticなクラスはjavaには無いよ。
staticなフィールドとメソッドならあるけど。かんちがいしないように。
670デフォルトの名無しさん:05/03/16 12:41:30
>>666に禿同
構造化プログラミングの入門としては、まあありえる
でもオブジェクト指向の入門としては、ありえない
良くある例はテレビかな
テレビという物は、スピーカとか画面とかいろんな部品が
集まって出来ているとかそんな感じ
機能の集まりではなくて部品(物)の集まりで物を作るのがOOP
671デフォルトの名無しさん:05/03/16 12:44:27
>>668
もう見てないかも知れんけど、全然間違ってるよ
672デフォルトの名無しさん:05/03/16 13:50:16
AWTとSwingで作ったjarファイルはJREが入っていれば
プラットフォームに依存しないで動作しまよね。
SWTを使うと依存すると言いますが
jarファイルを動作させるのに何かインストールしないとダメなんでしょうか?
(例えばVBのランタイムみたいなもの)
673デフォルトの名無しさん:05/03/16 13:56:08
>>672
dllが1〜3個とjarファイルが1〜2個ほど必要。
それぞれjava.library.pathとjava.class.pathを
通す必要はあるけどインストールってほど大げさでも
ないな。
674デフォルトの名無しさん:05/03/16 14:01:50
>>668
クラスは単なる型(タイヤキの鉄板)に過ぎなくて、実体がないんだよ。
そのクラスをもとに作り出した実体(タイヤキ)をインスタンス(オブジェクト)というんだよ。
675デフォルトの名無しさん:05/03/16 14:06:54
今の車の制御系統みたいにすでに一まとまりになってる箱を車につなげるだけという組み立て過程は
オブジェクト指向の説明にぴったりじゃなかろうかと思ったり思わなかったり
676デフォルトの名無しさん:05/03/16 14:15:52
>>669
ここではあまり本質的ではないが、内部クラスには静的クラスもある。
例:
public class InnerStatic{
public static void main(String[] args) throws Exception{
A a = new A();
A.B.mm();
}
}
class A{
private static int x= Integer.MIN_VALUE;
static class B{
private static int x = Integer.MAX_VALUE;
static void mm(){
System.out.println(String.valueOf(A.x));
System.out.println(String.valueOf(A.B.x));
}
}
}
677デフォルトの名無しさん:05/03/16 14:35:45
>>673
swt.jar が無いと実行できないのはわかったのですが

>それぞれjava.library.pathとjava.class.pathを通す必要はあるけど
という作業の意味がわからないのですが、どういう事でしょうか。

あとdllは何のDLLで、どこに用意したらいいんですか?

とりあえずeclipse上でSWTを使って実行できたのですが
配布した先での実行の方法がわからないんですよね。
678デフォルトの名無しさん:05/03/16 14:44:57
>>676
> 内部クラスには静的クラスもある。

↑嘘。

内部クラスと入れ子クラスの区別をつけてから発言するよろし。
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#262890
679デフォルトの名無しさん:05/03/16 14:53:43
>>676>>678
>>676での用語法には誤りがあるので、訂正..
静的クラスは囲まれたクラスの一種類として考えられる。
内部クラスは、静的と宣言されていない囲まれたクラス。
680デフォルトの名無しさん:05/03/16 14:57:37
タブって何を入力したらいいの?
681デフォルトの名無しさん:05/03/16 15:03:24
タブをコピペすればいいじゃない
682デフォルトの名無しさん:05/03/16 15:05:47
>>677
http://www13.plala.or.jp/observe/swt/swt_overview.html
ここの、実行時のVM引数に指定しているのがそれ。
ここにswt-win32-xxxx.dllとかいう名前のDLLがあるはず。
xxxxの部分はEclipseやSWTのバージョンによって違うが。

このDLL、SWTのうちOS固有の実装部を提供している。
Linux/GTKならswt-gtk-xxxx.soとかなんとか別の名前だった気がする。

面倒くさかったら、Javaアプリを実行するディレクトリにこのDLLをコピーするという手もあり。

java.class.pathは、いわゆるクラスパス。
swt.jarをクラスパスに追加しておきましょうということ。
683デフォルトの名無しさん:05/03/16 15:32:32
いろいろクラス用語が出て混乱してます。
インスタンスは、定義されてるクラスをアクティブ(プログラムから
使えるようにする)にしたものなんですよね。
オブジェクトはその中の変数群と見ていいのでしょうか?
静的クラスはないというレスがありますが、静的クラスとはつまり
classの設計図そのものなんですよね。
何故こんな段階的に分けてるのか、今の所いまいち分かりませんが
みなさんのように大きなプログラムを組むようになれば、その利点も
理解できると思います。
684デフォルトの名無しさん:05/03/16 15:41:23
>>682
誰かに配布するときは同じディレクトリにmainがあるJARファイルと
swt.jar、DLLを入れてそこから実行してもらうのがよさそうですね。
685デフォルトの名無しさん:05/03/16 16:05:16
>>677
JNIとかわかってないとSWTは進めれないかなぁ
686デフォルトの名無しさん:05/03/16 16:28:07
>オブジェクトはその中の変数群と見ていいのでしょうか?
だめです

オブジェクトとインスタンスには明確な違いはありません
好みで使い分けても良いと思います、例えば

new 演算子を用いてクラスからインスタンスを作る
new 演算子を用いてクラスからオブジェクトを作る

どちらも正しいです、ただインスタンスは明示的にあるクラスから
作られた「もの」を指す事が多いようです
そのあたりは英語の意味からきてると思う
687668 ◆magic.fu7c :05/03/16 16:35:15
回答ありがとうございました
688デフォルトの名無しさん:05/03/16 16:39:23
オブジェクトというのは概念よりの言葉で、
インスタンスというのは、実装よりの言葉という気がする。
特定の言語に依存しないオブジェクト指向の話(モデリング等)を
するときは、対象をオブジェクトというし、分析の初期段階では、
クラスさえ考慮しないかも。

インスタンスという言葉が出てくるのは、使用する言語が決まって、
実装設計に入ってから。
よく考えると、インスタンスは言語依存の要素も包含してるかもしれない。
Java でメモリ管理のしかたなどを考える場合は、インスタンスを考えるし。
689デフォルトの名無しさん:05/03/16 17:32:05
>>688
なんかすごく納得した
690デフォルトの名無しさん:05/03/16 17:42:13
全てのクラスはオブジェクトを継承してるんだYO!
世界はオブジェクトで構成されているオブジェクト至上主義なんだYO!
OK?
691デフォルトの名無しさん:05/03/16 17:55:24
ユーザーからインプットされた数字の4角形を作りたいんですがどうやるのでしょうか?
たとえば
4を受け取った場合。
1 2 3 4
12131455
1116156
10 9 8 7
と渦巻状の左回りで順番に数字を並べたいんです。
どなたかご教授ください。
692デフォルトの名無しさん:05/03/16 17:56:41
>>691
宿題は宿題スレへ
693デフォルトの名無しさん:05/03/16 17:58:18
すいません2段目5が一つ多かったです。
ちなみに
3の場合。
1 2 3
8 9 4
7 6 5
となります。
694デフォルトの名無しさん:05/03/16 17:59:13
>>692
すいませんです。逝ってきます。
695デフォルトの名無しさん:05/03/16 17:59:46
>>691
4ってのは何?辺の長さ?
正方形分の渦巻きを作ればいいの?

【初心者】Java の宿題ここで答えます 5.0【歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1107350368/
ここのひとらがそういうの好きだよ
696デフォルトの名無しさん:05/03/16 18:46:53
windowsだとウィンドウ左上のアイコンがコーヒーカップではないJavaアプリケーションを見たんですが、どうやるんでしょう?
ちなみにここです。
http://ww2.tiki.ne.jp/~masatsu/
697デフォルトの名無しさん:05/03/16 18:54:21
698デフォルトの名無しさん:05/03/16 18:57:07
しかし、本来これは「最小化されたときのアイコン」を設定するもの
なんだよな。

699デフォルトの名無しさん:05/03/16 18:59:16
ミニアイコン全般でそ?
起動用exeとフルアイコン、ミニアイコンを統一すれば何も困らなくなるね
700696:05/03/16 19:11:39
>>697-699
ありがと!
701デフォルトの名無しさん:05/03/16 19:19:41
スクリプトシール(?)って何ですか?
702デフォルトの名無しさん:05/03/16 22:20:34
1.5.0_02を使ってます。
 T[] hoge = new T[size];
とすると
 汎用配列を作成します。
ってエラーが出るんですけど、こういう処理を
実現する方法ってありますか?
703デフォルトの名無しさん:05/03/16 22:40:54
>>702
1.5はこれできないの?
今まで多用してきたけど。。。
704デフォルトの名無しさん:05/03/16 22:44:23
>>702
CollectionのVectorとかがVector<Integer> v = new Vector<Integer>();みたいになったと思うが。
それと同じ理由かどうかは俺にはわからない。
705デフォルトの名無しさん:05/03/16 22:53:33
>>703
>>702のいってるのは、Genericsのパラメータ化された型をつかって
配列が作れないってことだろ。

それは仕様。パラメータ化された型はすべてObjectとなるからね。
706702:05/03/16 22:59:48
>>705
仕様なんですね orz
Javaでパラメータ型の配列って無理ですか?
707デフォルトの名無しさん:05/03/16 23:21:56
Java Pressから抜粋。パラメータ化型の6つの制約。全部 Eraserのせいだけど、
これがないとJava 5.0のコードから1.4までのライブラリが使えなくなってしまうわけですよ。

1 型変数E に対して基本データ型を指定することはできない。
2 型変数E のオブジェクトを直接生成することはできない。
3 型変数E の配列を生成することは出来ない。
4 メソッドの戻り値として型変数Eの配列を返すようにしても、Objectの配列になる。
5 型変数は、staticメンバとstatic初期化子には適用できない。
6 イレイジャの結果、メソッドのシグニチャが同じになるメソッドは定義できない。

でもどうしても型変数Eの配列を作りたければ、リフレクションを使って無理矢理
作ることは出来る。
708デフォルトの名無しさん:05/03/16 23:29:38
VMほんとうに最適化以外でいじってないからなぁ
709デフォルトの名無しさん:05/03/16 23:41:54
じゃあ、クラスファイルフォーマットからなにから全部
あたらしく作り直すとしたら、>>707 の制限解除以外
にどんなかんじになって欲しい?

参考:

「Java House Topics」
http://java-house.jp/ml/topics/



「Java言語のあり方について」
http://java-house.jp/ml/topics/topics.html#discussion
710デフォルトの名無しさん:05/03/16 23:44:04
ランタイムって自作プログラムと一緒に配布できます?
1M程度に収まるならそうしたいんですが
711デフォルトの名無しさん:05/03/16 23:44:59
J2SEが1MBに収まるわけないだろう。
712デフォルトの名無しさん:05/03/17 01:42:12
Erasure(「消去」という名詞)な。
Eraser(「消去する人/もの」という名詞)じゃないぞ。
713デフォルトの名無しさん:05/03/17 01:46:08
>>712
すまんかった....
714デフォルトの名無しさん:05/03/17 10:07:02
ダブルクリックで動作するJARファイルを作ろうと思ったのですが
どうしても[Failed to load Main-Class manifest attribute from パス名]
となってしまいます。↓の内容で行っているのですが何か問題があるのでしょうか。
お助けください。

ディクトリ

C:\Documents and Settings\Administrator\デスクトップ\manifest.mf
C:\Documents and Settings\Administrator\デスクトップ\smp
   |
   −−−MyMain.class
      mypackage
         |
         ―――MyAp.class
sub
            |
            ―――SubAp.class


コマンド
C:\Documents and Settings\Administrator\デスクトップ>jar cvf smp.jar manifest.mf smp

マニフェスト
Main-Class: MyMain
715714:05/03/17 10:07:23
完成したJARファイルの中身
C:\Documents and Settings\Administrator\デスクトップ>jar tvf smp.jar
0 Thu Mar 17 10:06:36 JST 2005 META-INF/
71 Thu Mar 17 10:06:36 JST 2005 META-INF/MANIFEST.MF
20 Thu Mar 17 09:55:06 JST 2005 manifest.mf
0 Thu Mar 17 10:06:28 JST 2005 smp/
527 Thu Mar 17 09:47:56 JST 2005 smp/MyMain.class
276 Thu Mar 17 09:47:52 JST 2005 smp/MyMain.java
0 Wed Mar 16 16:57:14 JST 2005 smp/mypackage/
455 Thu Mar 17 09:18:54 JST 2005 smp/mypackage/MyAp.class
232 Thu Mar 17 09:18:36 JST 2005 smp/mypackage/MyAp.java
0 Wed Mar 16 16:57:14 JST 2005 smp/mypackage/sub/
471 Thu Mar 17 09:18:54 JST 2005 smp/mypackage/sub/SubAp.class
250 Thu Mar 17 09:18:14 JST 2005 smp/mypackage/sub/SubAp.java
716714:05/03/17 10:18:42
すいません、下がっているようなのでageます
717デフォルトの名無しさん:05/03/17 10:22:11
ディレクトリsmpはパッケージの一部なのか?
その内容だと smp.MyMain というクラスでないと実行出来ないが。
718デフォルトの名無しさん:05/03/17 10:24:01
jar cvfm smp.jar manifest.mf smp
719714:05/03/17 10:33:29
>>717
パッケージになっていませんでした。パッケージにして
その後>>718の方法でマニフェストを追加したら実行できました。

でも cvfmで別にマニフェストを追加しないとダメなのでしょうか?
720デフォルトの名無しさん:05/03/17 10:37:15
>>719
ここ読めばわかるんだが
ttp://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/jar.html
自分でマニフェストファイルを用意する場合は必須。
それから、mとfオプションの順番と、引数に指定するjarファイルとマニフェストファイルの順番は関係している。
721714:05/03/17 11:31:15
>>720
色々調べているうちにだいぶ分かってきました。ありがとうございます。
722 ◆magic.fu7c :05/03/17 12:26:48
http://sterdust.net/に
クラス名(){}はコンストラクタと書いてありましたが
変数=new クラス名()の()←の中に引数をいれるとどうなるんでしょうか??

あとhttp://sterdust.net/にJAVA基礎編の関数についての項目にソースTest2.java
class Test2{
int X1,X2;
int a,b,c;
Test(){
a=5;
b=3;
c=6;
X1=plus(a,b)
X2=plus(c)
reset();
}
int plus(int A,int B)
int C;
C=A+B;
return C;

void reset(){
a=0;
b=0;
c=0;
まだソースは下にあるんですが携帯なので省略させてもらいました もしこのソースが違うとお思いになりましたらお手数ですがhttp://sterdust.net/でみて下さい 本当にすみません
で質問なんですが何故急にint A とint Bが現れたのでしょうか?? 実行する前に値をいれなきゃだめなんではないでしょうか??
あとvoidが返ると書いてあったんですがどういう意味なんでしょうか?よろしくお願いします
723デフォルトの名無しさん:05/03/17 12:59:15
>変数=new クラス名()の()←の中に引数をいれるとどうなるんでしょうか??
入れてみれば分かるでしょ、実行環境は無いの?
だったらおじさんが丁寧に教えてあげるが
ちなみにクラス名(){}だけがコンストラクタとは限らない

>で質問なんですが何故急にint A とint Bが現れたのでしょうか?? 実行する前に値をいれなきゃだめなんではないでしょうか??
仮引数です
これも意味がわかんなかったらおじさんが丁寧に(ry

>あとvoidが返ると書いてあったんですがどういう意味なんでしょうか?
そのメソッドは特に返り値のデータを返しません
と、このサイトに書いてある

最後にあくまで個人的意見だが
Javaを勉強するのにこのサイトはやめた方がいい


724722 ◆magic.fu7c :05/03/17 13:20:44
環境はあるとはいいがたいものなのでよければ教えて下さい
コンストラクタと仮引数m(_ _)m
ここのvoidは返らないんですか?よく分からないです…
一応目標はauのアプリを作る事なんですが いいサイトとしてここを紹介されたんです 何かいいサイトありましたら教えて下さい
質問の件よろしくお願いします
725デフォルトの名無しさん:05/03/17 13:43:48
>>724のコンストラクタ
まず、上記プログラムのコンストラクタ呼び出し箇所に引数を入れると
コンパイルエラーになります
理由は引数の型が違うからです このクラスのコンストラクタは
Test2() と規定されているので、引数はありません
ちゃんと型に従って使用しましょう

ちなみに一つのクラス中に引数の異なるコンストラクタを
複数持つ事もできます、例えば
class A {
 A(){処理}       //引数なしコンストラクタ
 A(int a){処理}     //int型引数を1つもつコンストラクタ
 A(int a, int b){処理} //int型引数を2つもつコンストラクタ
 A(double a){処理}   //double型引数を1つもつコンストラクタ
}
というのもOK、この場合は
A a = new A(引数)
と書くと、指定された引数の数と型に合致するコンストラクタが
自動的に呼ばれます。でも上にも書いたけど、規定されてない引数を
指定するとコンパイルエラーになります
A a = new A(1,2,3) は引数の型に合致しないからエラー
わかった?
726デフォルトの名無しさん:05/03/17 13:52:00
>>724の仮引数
int plus(int x, int y){
int z = x + y;
return z;
}
この場合のxとyに値を代入してないのに使ってるけどいいのか?
って言うのが質問の意図だとおもって回答する

仮引数ってのは、メソッド名の後の()内に書く変数名の事で、
メソッドに渡された引数を受け取る箱だと思ってください
例えば、
int c = plus(10,20);
って呼び出しを行うとplusが呼ばれたときに、
x,yにそれぞれ10,20がそれぞれ代入されてから処理が開始されます
int c = plus(-1,5);
なら、x,yに-1,5がそれぞれ代入されます
わかった?
727デフォルトの名無しさん:05/03/17 13:56:57
>>724のvoid
メソッドは必ず何かを返すわけではありません
返すメソッドもあれば返さないメソッドもあります
返すメソッドの場合は、返却値のところに返す値の型を書く
返さないメソッドの場合は、返却値のところにvoidと書く
有名なSystem.out.println()なんかは、void型です
わかった?
728デフォルトの名無しさん:05/03/17 14:10:10
こんにちは。

Tomcatのform認証で
ドキュメントルートにlogin.htmなどとフォーム入力ページを置いて
auth/*が認証をかけたい場所だった場合

フォーム入力ページに画像などを貼り付けると
フォーム入力ページを表示する際URLがリクエスト先URLになってしまい画像がうまく出ません。
さらに認証を成功させたあとでフォーム入力ページで
使っている画像が見つからない404を起こしてしまう始末です(笑

フォーム入力ページの画像を絶対URL指定にするのは格好悪いと言うことで…

先輩方で動揺の経験をされた方はいらっしゃいませんか?
解決策を教えて頂けると非常に助かります
729デフォルトの名無しさん:05/03/17 14:13:04
すいません、訂正です

誤 フォーム入力ページを表示する際URLがリクエスト先URLになってしまい画像がうまく出ません。

正 フォーム入力ページを表示する際、基準URLがリクエスト先URLになってしまい画像がうまく出ません。
   www.hogehoge.net/auth/title.pngなどを引っ張ってこようとする
730724 ◆magic.fu7c :05/03/17 14:16:10
もう少しコンストラクタの事を初歩から教えて下さい
クラス名 変数=new クラス()でコンストラクタを作って変数で扱かえるよう扱いやすくしてるんですよね?
でエラーになる理由はわかりましたが引数をよぶとどうなるんでしょうか?
731デフォルトの名無しさん:05/03/17 14:17:43
.htmっていうのがアヤシイがそれはおいといてw

www.hogehoge.net/login.htm
www.hogehoge.net/img/title.png
www.hogehoge.net/img/fugafuga.png
www.hogehoge.net/auth/next.html
とかじゃだめな理由は?
732デフォルトの名無しさん:05/03/17 14:20:30
>>730
>引数をよぶとどうなるんでしょうか?

そのタイプ(int とか String とか)の引数を要求するコンストラクターを呼ぶことになりますが、
その引数を仮引数に持つコンストラクターのないクラスの場合はエラーとなります。
733デフォルトの名無しさん:05/03/17 14:20:36
>>730
「引数をよぶ」とはどういうことでしょうか?
もう少し日本語の事を初歩から勉強してから戻ってきてください。
またはオブジェクト指向について勉強してからJavaしてください。
734724 ◆magic.fu7c :05/03/17 14:20:56
付け足し たとえば
>>725
class A{
@A(){} とAA(int a){}はどう違うのでしょうか?? たとえば計算をする時に @はint a=3とかかなければならない Aは a=3 でいいという違いでしょうか??そうする事で利点はなんですか??
735デフォルトの名無しさん:05/03/17 14:22:48
>>734
メリットは外部から値を渡せるってことさ
736デフォルトの名無しさん:05/03/17 14:23:08
>>724のサイト
ここなんかオススメ
http://www5c.biglobe.ne.jp/~ecb/java/java00.html

Java勉強する時は、文法的な事とオブジェクト指向的なことと
両方勉強しないといけないんだけど、ここはまずオブジェクト指向
すっ飛ばして文法的な部分を述べてる
で、文法をある程度マスターしたあたりで継承とかポリモーとか
オブジェクト指向について解説が始まる
そんな構成が>>724にお勧めな理由だ
今見てるサイトは、両方ごっちゃにして説明が進んでるから、
分かり辛いと思うよ

Javaをマスターして、いざauアプリ作成!となったら
今のサイトに戻ってみると良いかもね
737デフォルトの名無しさん:05/03/17 14:25:57
>クラス名 変数=new クラス()でコンストラクタを作って変数で扱かえるよう扱いやすくしてるんですよね?
コンストラクタは作ってない
コンストラクタを呼び出して、そのクラスのインスタンスを作っているのだ
738デフォルトの名無しさん:05/03/17 14:27:23
>>731
レスありがとうございます

www.hogehoge.net/auth/contents.jspにアクセスが来て
www.hogehoge.net/login.htmにリダイレクトしたときは

img src="../img/title.png"などと書けば出ますが

www.hogehoge.net/auth/sub/sub_contents.jspにアクセスが来て
同様にwww.hogehoge.net/login.htmにリダイレクトしたときは

img src="../../img/title.png"と書かないとダメになります

ということです、よろしくお願いします
739 ◆magic.fu7c :05/03/17 14:30:37
みなさんありがとうございました>>726さんのサイトでまた勉強しなおしてきます
親切に教えて下さった方々本当に感謝しています 大雑把にはわかるんですが細かい内容がまだ不十分なので勉強しなおします
また書き込みするのでその時はまたよろしくお願いします
740734:05/03/17 14:33:22
>>734の考えは全く違いますか?
741デフォルトの名無しさん:05/03/17 14:34:25
自演乙
742デフォルトの名無しさん:05/03/17 14:35:05
>>740
全く違うかな
743デフォルトの名無しさん:05/03/17 14:36:47
>>740
はい、全く違います
744デフォルトの名無しさん:05/03/17 14:39:09
>>740
全く違います。
745 ◆magic.fu7c :05/03/17 14:39:25
orz
ありがとうございました
746デフォルトの名無しさん:05/03/17 14:41:23
>>745
ガンガレ、おじさんは応援してるぞ
747デフォルトの名無しさん:05/03/17 15:01:59
 Vectorってとりあえず同期されているという事になってて、実際にソースを見ても
メソッドはsynchronizedになってるみたいなんだけど、フィールドはvolatileとかで宣言されていない
みたいなんです(見間違いだったらごめんなさい)
 これって、複数スレッドからいじったらフィールドの値が正しく変更されないと思うのですが、この考え
はあたってますでしょうか?また、もしあたっていたとしたら、正しく変更されるようにするにはどうすればよいので
しょうか?(Vectorを書き換えるとかは無しで)
 どなたか教えて下さい。
 
748上に追加:05/03/17 15:02:33
vectorをvolatileで宣言して使えばOKって事はないですよね?
749デフォルトの名無しさん:05/03/17 15:03:47
>>723
> 最後にあくまで個人的意見だが
> Javaを勉強するのにこのサイトはやめた方がいい

同意。

変数名を大文字で始まる名前にしてたり、クラス名を小文字で
始まる名前にしている著者は、疑ってかかったほうがいいかも
と、私は思う。
750デフォルトの名無しさん:05/03/17 15:39:30
>>747
> フィールドはvolatileとかで宣言されていないみたいなんです

そうですね。volatile はついてないね。

> これって、複数スレッドからいじったらフィールドの値が正しく変更されないと思うのですが、
> この考えはあたってますでしょうか?

synchronized やってれば、volatile までは必要にはならないんじゃ?
(逆に、volatile だけやって、synchronized やってないせいでおかしくなることはありうるけど)

「いじる」っていう動作を複数スレッドがほぼ同時に行おうとしても、必ず、どっちかのスレッドが
動作を完了しないと、他方のスレッドは動作が開始できないようになってるでしょ?
751上に追加:05/03/17 15:51:25
>>750
自分の理解ではvolatileというのは、各スレッドのローカルだけで変更されて
本元のデータが更新されていないという状況が、毎回本元への更新を行うようになる
ので避けられるというような宣言の事だと理解しているのですが違いますでしょうか?
つまりsynchronizedでメソッドを同期してようが本元が更新されてない状態で次のメソッドが
開始されてしまったらどうしようもないのではないかと私は思うわけですね。
volatileの本質的な理解が間違っているのでしょうか?
752デフォルトの名無しさん:05/03/17 15:51:33
(・3・)アルェ〜

public class HogeHoge {
  public int field1;

・・・・
  public synchronized void setField1( int v ) {
    field1 = v;
  }

  public synchronized int getField1() {
    return field1;
  }
・・・・
}
753747:05/03/17 16:00:35
>>752
ん、どういう事でしょうか?
754750:05/03/17 16:07:04
>>751
> 自分の理解ではvolatileというのは、各スレッドのローカルだけで変更されて
> 本元のデータが更新されていないという状況が、毎回本元への更新を行うようになる
> ので避けられるというような宣言の事だと理解しているのですが違いますでしょうか?

私も、大体そういうことだとおもいます。
もうちょい正確に言うと、ある変数が volatile 宣言されているなら、
・スレッドが変数の値を使う際には、毎回マスタコピーから読み取りを行うこと。
・スレッドが変数に値を代入する際は、毎回マスタコピーへの書き込みを行うこと。
が義務付けられているわけです。

> つまりsynchronizedでメソッドを同期してようが本元が更新されてない状態で次のメソッドが
> 開始されてしまったらどうしようもないのではないかと私は思うわけですね。

なるほど。ここの部分の理解が間違っているように思う。

> volatileの本質的な理解が間違っているのでしょうか?

volatile じゃなくて、synchronized の理解が間違ってるかと。。
synchronized なところに入る際と出る際には、オブジェクトのロックの設定と解除が
行われるだけでなく、 volatile で行われるような、スレッドの作業コピーへのマスタ
からの読み取り・ロードと、スレッドの作業コピーからの記憶・書き込みが義務付け
られている。
755750:05/03/17 16:17:44
参考リンク。

「Java言語規定 第2版」
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html
「17. スレッド及びロック」
http://www.y-adagio.com/public/standards/tr_javalang2/memory.doc.html#30206

万が一読んでなかったら、ということで。

>>752 のような、複数のスレッドの非同期なアクセスから守るべき変数が、
たった1個の場合は、synchronized を使わずに、volatile でも十分 OK なんだけど、
Vector の内部にある、

  protected Object[] elementData;
  protected int elementCount;

という 2 つの変数のように、こっちを変更したらこっちも変更しておかないとヤバイ、
かたっぽだけ変更した時点の状態は、誰にも見られたくない、って場合には、
それら変更作業をアトミックなものにするために、各作業を synchronized で
囲ってあげなきゃならない。 synchronized で囲ったなら、volatile は、外してもよい。

っていう認識であってるかな。>>他の方々。
756747:05/03/17 16:27:46
>>754
なるほど、非常に分かりやすい説明ありがとうございます。synchronizedは
volatile宣言とおなじような機能を兼ねているのですね。
757デフォルトの名無しさん:05/03/17 16:32:24
シリアルキー解析集「ALTEA」
大好評発売中!

http://openuser10.auctions.yahoo.co.jp/jp/user/dancexxx1960?


市販SOFTやオンラインSOFTのパスワード集です。
オークション関係から画像・OS・表計算・CAD・・・・etc
国内・国外のあらゆる分野のSoftを解析済です。


これを初めて手にされた時には、驚愕される事でしょう。
そして・・・手当たり次第にインストールを始める筈ですw
パソコンをご使用の方なら、必ず!満足されると思います。

解析結果のデータベースには15,000点を越えるパスワードが入ってます。
このパスワード集から検索するだけで、登録や制限解除が出来てしまいます。
シェアウェアを購入して、正規登録したのと同じ状態になります。
余りにもデータが多すぎる為、辞書引のようなパスワード検索SOFTで提供します。

シェアウェア以外にもパッケージ版をVectorなどでオンライン販売してるSOFTにも
多数対応しています。これらをダウンロードして無期限に試用する事も可能です(^^;

WindowsXPやOfficeなどのCDキー(プロダクトキー)ジェネレーターを使えば複数のパソコンに
インストールする事も可能です。デスクトップとノートPCなど2台以上持ってる場合は特に有効ですね。

オンラインSOFTを購入した経験は有りますか?
ありとあらゆる分野の優れたSOFTが、数多くありますよね。
しかし、ほとんどが試用期間や機能制限をして、「気に入ったら購入してください」です。

もう少し使いたいが使用期限切れで、削除・・・再インストールを繰り返していませんか?
758デフォルトの名無しさん:05/03/17 16:52:46
つまり

volatileは共有ロック
synchronizedは排他ロック

という考え方はアリ?
759デフォルトの名無しさん:05/03/17 17:10:51
2進法
0100の2の補数が
1011と書かれているサイトがあったのですが、
1100の間違いですよね。
釣りではないです。少し気になったので・・
760デフォルトの名無しさん:05/03/17 17:18:16
>>759
確かに+1を忘れてるな
761デフォルトの名無しさん:05/03/17 17:19:45
そりゃ1の補数だな、1100で合ってる
762759:05/03/17 17:25:49
良かった。なんか理解し間違えてるのかと思って必死に他サイ回ってました。
一応そのサイトhttp://msugai.fc2web.com/java/binary.html
レベルの低い質問すませんでした。
763デフォルトの名無しさん:05/03/17 17:34:52
>>759
まさかこの部分のことじゃないよな?

0100 1001
----------
1011 0110 <- 1の補数
1011 0111 <- 2の補数

764デフォルトの名無しさん:05/03/17 17:37:32
1000 0000 -128<- 先頭ビットだけが0だと、そのビット内で最小の負の整数

これは確かに間違ってる
765759:05/03/17 17:41:34
>>763
え・・その部分なんですが・・。

766デフォルトの名無しさん:05/03/17 17:43:00
見やすくするために8bit数を2つに区切って記述してある
と言うことを理解できなかったんじゃないかと
767759:05/03/17 17:43:16
今気づきました。
4ケタって時点で気づくべきでした。
吊ってきます、わざわざサイトまで出向いて下さった方々ありがとうございました。
今ここ数年で一番赤面してます。
768デフォルトの名無しさん:05/03/17 17:47:11
イ`
769デフォルトの名無しさん:05/03/17 17:57:37
イ`
770デフォルトの名無しさん:05/03/17 18:14:50
イ寺
771デフォルトの名無しさん:05/03/17 18:21:20
イヒ
772デフォルトの名無しさん:05/03/17 20:30:58
>>767
ヤーイヤーイ
773デフォルトの名無しさん:05/03/17 21:35:30
ヤンマーニ ヤンマーニ
774デフォルトの名無しさん:05/03/17 22:55:44
>>755
そうですね。
synchronized入る時と出るときでメモリの同期をしてくれるってセマンティクスは便利だよね。
JLS見るのも良いけど、IBMのdWの記事が一番わかりやすかったので紹介しておきます。
ttp://www-6.ibm.com/jp/developerworks/java/010309/j_pr50.html
775デフォルトの名無しさん:05/03/17 23:11:00
質問させてください。

Delphiで固定長のデータを構造体定義に入れているプログラムをJavaに書き直してるんですが
間違っている or こうした方が良い などをご教授おねがいします。

実際にやりたいことはこの年月日のようなのが30個ぐらいあります。
Delphiでは@とかpcharとstrMoveをつかってやっていたんですが、Javaでは全部substringするのか?と。
その後、DBに書き込む事を目的としてます。

よろしくお願いします。

構造体定義をクラスにしてみました。以下がソースです。
public class Nengappi{

private int year;
private int month;
private int day;

public void setNengappi (String strNengappi) {
this.year = Integer.parseInt(strNengappi.substring(0,4));
this.month = Integer.parseInt(strNengappi.substring(4,6));
this.day = Integer.parseInt(strNengappi.substring(6,8));
}
}

776デフォルトの名無しさん:05/03/17 23:15:55
年月日だけでいいなら、SimpleDateFormatでparseするといいかもね。
一般的には、その方法しか無いんじゃない?
あるいは無理矢理regexpつかってもいいけど。
777デフォルトの名無しさん:05/03/18 00:16:35
>>776
ありがとうございます。やっぱりそうですか...。
実際には500byteぐらいのデータで項目もたくさんあるので、無理です。

Eclipseがsetterとgetterを作ってくれるので、個々のやつは作らなくても良いんですけどねぇ。
全体の固定長文字列をある文字数で区切り、String[2]で返すメソッドを作成して入れてみます。
778デフォルトの名無しさん:05/03/18 00:30:23
固定長ならそれでいいんでない?
インデックスとサイズとか引数でsubstringをうまく取得するようなクラス作ればええ

Scannerはこの場合使わなくていいと思われ
779デフォルトの名無しさん:05/03/18 02:21:58
質問です:
SUNのサイトでチュートリアルの日本語版ってないのでしょうか?
ざっと探したんですが見つかりませんでした。(JSFのはあったのですが。。)

英語版
http://java.sun.com/docs/books/tutorial/

簡体or繁体中国語でもかまわないのですが。
仕事でお世話になった台湾の方(COBOLスキル)に学習+必須サイトの
リンクをまとめて渡そうとしているところです。
780デフォルトの名無しさん:05/03/18 07:14:34
ネット投票で格下韓国人の得票操作発覚!援護希望http://c-au.2ch.net/test/-/news4vip/1111092714/i
田代砲配備、狙撃中、21日まで!
本日夜9:00集合!
781デフォルトの名無しさん:05/03/18 11:05:10
質問です

Javaのリソースファイルのデフォルト拡張子.propertiesを他のものに変更することは出来ますか?
直接ファイルを指定するというのは出来ない状況です。

よろしくおねがいします
782デフォルトの名無しさん:05/03/18 11:30:56
JAVAの内部エンコーディングってUTF-16だと思うんだけど、
例えばStringをシリアライズしてファイルに書き出して、
その後JAVAのバージョンアップで内部エンコーディングがUTF-32
とかになったら、そのUTF-16シリアライズされたStringは、
なんも気にしないで新しいバージョンのJAVAで読めることは保障されてるのかな?

その辺のソースとかあったらおながいします。
783デフォルトの名無しさん:05/03/18 12:20:55
>>781
できない。せいぜい独自の ResourceBundle サブクラスを作るくらい。

>>782
オブジェクトシリアライゼーションのフォーマットは仕様化されているはず。
どっかで見たが忘れたので探せ。
784デフォルトの名無しさん:05/03/18 13:04:45
>>782
char/String はずーっと今の仕様のままで、UTF-32 が必要になったら
別の型を作るでしょ、きっと。
785デフォルトの名無しさん:05/03/18 13:26:28
すでにJavaではUTF32はcharを使わないで
コードポイントはint型であらわすという実装してまっせ
786デフォルトの名無しさん:05/03/18 17:01:14
int count=0;
String str="hogehogeonegai";

1 if (str.indexOf("quit") != -1) {〜}
2 if ((index=str.indexOf(";")) == -1){〜}

StringのindexOfメソッドについてお聞きします
例えば引数が"quit"だと1のようなif文の条件式で使えるのですが
引数が";"だと、戻り値を一度int型の引数に格納しないとうまくいかないです
この二つは一体何が違うのでしょうか?教えてください
787デフォルトの名無しさん:05/03/18 17:07:57
んな、アホな
788デフォルトの名無しさん:05/03/18 17:15:30
>>786
  ∧∧
ヽ(=゚ω゚)ノ″
〜( ×)
  U U
789デフォルトの名無しさん:05/03/18 17:16:48
具体的にどううまくいかないのか教えて
790デフォルトの名無しさん:05/03/18 17:19:10
質問するときに「うまくいかない」という言葉を使っちゃダメ。
791デフォルトの名無しさん:05/03/18 17:20:52
そこ以外の部分がおかしいとしか思えない
ソースごと晒してみれ
792786:05/03/18 17:43:21
ごめんなさい
プログラムはMysqlを使ったJDBCプログラムです

public static void main(String args[]){
try{
jdbcドライバ登録、Mysqlとの接続などのコーディング
//標準入力バッファ生成
BufferedReader breader=new BufferedReader(new InputStreamReader(System.in));

String sqlstr="";
int index=0;

while (true) {
 sqlstr+=breader.readLine()+" ";
 if (sqlstr.indexOf("quit") != -1) {
  break;//while(true)
 }

 if ((index=sqlstr.indexOf(";")) == -1) {
  continue;//while(true)
 }

 いろいろなSQL文の処理コーディングや後処理など
}(Exception e){}
} //main文おしまい(クラスにはメインメソッドだけ)

while無限ループは'quit'を入力するまで何度もSQL文を実行するためです
問題の二つ目のif文はSQL文を複数行に分けても大丈夫にするためです
私いちいちindexに格納しないif文 if ((sqlstr.indexOf(";") == -1)
で、いいと思うのですが、こうすると
「いろいろなSQL文の処理コーディングや後処理など」が実行されずに終わってしまうのです
793デフォルトの名無しさん:05/03/18 17:52:21
>>792
もちろん、indexを後で参照しないなら index に代入する必要なんてないよ。

 if (sqlstr.indexOf(";") == -1) {
System.err.println("継続行: " + sqlstr);
  continue;//while(true)
 }
System.err.println("SQL処理: " + sqlstr);

とでもして、何が起きているのか確認してみなされ。
794デフォルトの名無しさん:05/03/18 17:55:09
>>792
>「いろいろなSQL文の処理コーディングや後処理など」が実行されずに終わってしまう
これはどうやって判断してるんだ?
あと例外はほっとかないでprintStackTrace()を呼んでおけ
795デフォルトの名無しさん:05/03/18 18:05:28
readLineだからじゃネーの
796デフォルトの名無しさん:05/03/18 18:07:42
重要なコード一つ忘れてた。二つ目のif文の後
sqlstr=sqlstr.substring(0,index+1);  //while文の一行目の最後の空白をとるため
すいません、自分のミスです>>793さんどうも

あと、起こりうる全ての例外処理書いてgetMessage使ったらSQLExceptionがひっかかりました
すいません、これも最初から確認しとくべきでした

You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near 's' at line 1

結局、MySQLのSQL文は';'で終了しないと駄目だという事(空白も駄目)
どうもお騒がせしました
797デフォルトの名無しさん:05/03/18 18:34:01
JDBCでやってるかぎりSQLの最後にセミコロンもいらねーし
空白が入っても関係ねーよ
798デフォルトの名無しさん:05/03/18 18:55:40
勝手な思い込みの激しいやつだなあ。
799デフォルトの名無しさん:05/03/18 21:59:35
今よくあるボタンを押しただけでメールアドレスが分かってしまう機能って
どうやって作るんですか?
教えてエライ人
800おしえてください:05/03/18 22:00:39
無限ループをつかったアニメーションが動いてる状態で、
キー入力のリスナーでキーボード入力を受け付けるようにするにはどうすりゃいいでしょうか。

別々のスレッドにするしかないんでしょうか。
シングルスレッドで無限ループアニメーションをキー操作できるようにするいい方法、
ないでしょうか
801デフォルトの名無しさん:05/03/18 22:23:18
>>800
素直に別スレッド作れ。
単一スレッドでやったとして、結局はスレッドと同じ仕掛けを自作するだけだ。
802デフォルトの名無しさん:05/03/18 23:19:48
そこでポーリングですよ
803デフォルトの名無しさん:05/03/19 02:02:03
どうも!!
char型をstring型に変えたいのですが何かいい方法はないですか??
804デフォルトの名無しさん:05/03/19 02:15:20
>>803
どうも!!
805デフォルトの名無しさん:05/03/19 02:19:13
またボーダーか。
806デフォルトの名無しさん:05/03/19 02:19:43
String.valueOf(どうも!!)
807デフォルトの名無しさん:05/03/19 10:10:57
>>799
cgi使え
808デフォルトの名無しさん:05/03/19 12:58:59
>>807
CGI 分かってないだろw
809デフォルトの名無しさん:05/03/19 13:11:26
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |       >>807>>808
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
810800:05/03/19 13:33:46
800に書き込んだ者ですが、まだよく分からんことがあります。

スレッドを実装したアプレットで、run()の中で無限ループとsleep()をつかってアニメしてます。
initのなかでaddKeyListenner()とかを書いてるんですが、
これでもキー入力を受け付けてくれないみたいです。
どうすりゃいいんじゃ?
無限ループ入りのrun()が入ってる同じクラスの中にキーリスナーを入れてるのがまずいの?
キーリスナーだけ別のクラスにいれるべきですか?
擬似コードでいいからちょっと例をみせてくらさい。
811デフォルトの名無しさん:05/03/19 13:43:03
ところでおまいら配列宣言するとき

Object[] objects
Object objects[]

どっちで書く?
812デフォルトの名無しさん:05/03/19 13:45:30
>>810
> 無限ループ入りのrun()が入ってる同じクラスの中にキーリスナーを入れてるのがまずいの?

そんなことは無いと思う。

ソースを貼れば?
http://sourcepost.sytes.net/

「ちゃんとキーイベントを受け取っているのに、それを正しく扱って
いないせいで、イベントを受け取れていないように見えしまっている。」
っていう可能性も、ソース見ればはっきりするだろうし。
813デフォルトの名無しさん:05/03/19 13:46:21
>>811
またお前か
814デフォルトの名無しさん:05/03/19 13:50:56
>>811
読みやすいソースを心がけるときは、
  Object[] objArr;

七行プログラミングするときは、他の配列ではない変数も一気に宣言したいので、
  int a,b[],c[][];
815800:05/03/19 14:05:09
>>812

http://sourcepost.sytes.net/sourceview.aspx?source_id=22529

ソース張りました。
アドバイスください
816デフォルトの名無しさん:05/03/19 14:05:43
「 ServletContext app = getServlet().getServletContext(); 」
これは、オブジェクトの生成してるんですよね?

「?」.getServlet().getServletContext(); これって、どこのクラスのメソッド?
頭になにもつけなくていいの?

817デフォルトの名無しさん:05/03/19 14:12:40
ズコー
818800:05/03/19 14:24:46
ああ、String型を比較するのは==じゃなくて.equals()メソッドでしたね。
でもそれを直しても動かないです。どうしてなの??
819デフォルトの名無しさん:05/03/19 14:24:55
>>800=815
str == "Right" とか str == "left" というとこがたぶんおかしい。
文字列比較は equals を使いましょう。
820デフォルトの名無しさん:05/03/19 14:28:04
>>800
>>815
おまえがやりたいのは、もしかしてこういうことか?

  addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
      int keyCode = e.getKeyCode();
      switch (keyCode) {
      case KeyEvent.VK_R :
        x = true;
        break;
      case KeyEvent.VK_L :
        x = false;
        break;
      }
    }
  });
821デフォルトの名無しさん:05/03/19 14:28:28
>>816
> これは、オブジェクトの生成してるんですよね?
ちがう。オブジェクトの取得。文法的には、取得されるオブジェクトが既に生成されているか、そのときに生成されるのかは関係ない。
このコードがServlet内の処理だったら、既に生成されていることがほとんどだが。

>これって、どこのクラスのメソッド?
javax.servlet.GenericServlet。(javax.servlet.http.HttpServletのスーパークラス)
スーパークラスのpublicなメソッドなので、サブクラスで直接使える。
822デフォルトの名無しさん:05/03/19 14:52:52
匿名クラスって毎回インスタンスを生成してるみたいだけど、最初に一つだけ作ってほしいような...
823820:05/03/19 14:59:03
>>820 自己レス。

ごめんなさい。
カーソルキーの左右で、赤丸の動きを操作したかったのね。
>>820 に書いたのは、「R」キーと「L」キーでの操作でした。

ってことは、こういうことかな?(>>820 の switch 文だけ示す。)

  switch (keyCode) {
  case KeyEvent.VK_RIGHT :
    x = true;
    break;
  case KeyEvent.VK_LEFT :
    x = false;
    break;
  }

あと、或るスレッドが変数 x を変更し、別のスレッドが同じ変数 x を
参照するわけだから、x を volatile 宣言しないとイケナイよね。
824デフォルトの名無しさん:05/03/19 15:42:14
\マークを文字列として扱いたい場合は\\でいいんだっけ?
825デフォルトの名無しさん:05/03/19 15:52:39
>>824
そういう、やってみればすぐにわかることをいちいち聞くなよ。
826デフォルトの名無しさん:05/03/19 16:01:01
>>824
そう、それで問題なし

>>825
そういう、やってみればすぐにわかることなら教えてやれよ。
827デフォルトの名無しさん:05/03/19 16:09:12
つーか、基本文法くらいちゃんと勉強しろよ
828デフォルトの名無しさん:05/03/19 16:12:59
Javaって、行末には;が必要だったっけ?
829デフォルトの名無しさん:05/03/19 16:13:56

               .|  
               .|  
    ∩___∩    |  
    | ノ\   ,_ ヽ  .|  
   /  ●゛  ● |   .J   
   | ∪  ( _●_) ミ     
  彡、   |∪|   |       
 /     ∩ノ ⊃  ヽ
 (  \ / _ノ |  |
  \  "  /  | |
   \ / ̄ ̄ ̄ /
      ̄ ̄ ̄ ̄
830デフォルトの名無しさん:05/03/19 16:21:58
javaって拡張子.javaだっけ?.javだっけ?
831デフォルトの名無しさん:05/03/19 16:26:27




馬     鹿     が     集     ま     る     ス     レ     は





こ    こ     で     す     か
832デフォルトの名無しさん:05/03/19 16:26:50
これがどうしてもうまくいきません。おしえてください。

pablic static void mein(String args[]) {
System.out.println("Hello World");
}
833名前は開発中のものです。:05/03/19 16:28:45
SDK1.4で、アプレットからフルスクリーンにすることは
できませんか?
アプリケーションのときのサンプルしか見つからなかったもので。
834800:05/03/19 16:59:42
>>820
>>823

どうもアリガトウゴザイマス。
確かにそういうことなんですが、
でもそう直してもやっぱりキー入力を無視してボールは動き続けてしまうのは、
どうしてなんでしょうか??
835800:05/03/19 17:27:17
>>820
>>823
>>819

すみません動いてました(w。
アプレットを一回クリックしてからでないとキー入力に反応しないだけでした・・・。
ありがとう!あなたたちは素敵だ!
836デフォルトの名無しさん:05/03/19 17:31:33
Q.携帯電話でのmp3プレーヤソフトの実現可能性について教えてください。
SDカードにいれたmp3ファイルを読み出して演奏できるプログラムはあるのでしょうか?または作成はできるのでしょうか?
ご存知の方教えてください。

837デフォルトの名無しさん:05/03/19 17:38:13
>>832
× mein
○ main
838デフォルトの名無しさん:05/03/19 21:45:59
>>832は釣り?
839デフォルトの名無しさん:05/03/19 21:54:24
キーワード

「うまくいきません」
840デフォルトの名無しさん:05/03/19 22:08:42
人生がどうしてもうまくいきません。
おしえてください。

public class Life {
public void run() { ... }
public static void main( String[] args) {
Thread th = new Life();
th.start();
}
}
841デフォルトの名無しさん:05/03/19 22:19:51
>>840
Threadの人生を継承していないからね・・・
842デフォルトの名無しさん:05/03/19 22:30:21
>>840
「おれは天才だから先人の業績を継承する必要なんてないぜ」といって突っ走って
人生失敗した典型例。
843デフォルトの名無しさん:05/03/19 23:15:51
public class Life {
public void run() { throw new NullPointerException(); }
public static void main( String[] args) {
Thread th = new Life();
th.start();
}
}
844デフォルトの名無しさん:05/03/20 03:00:00
>843
それでもまだRunnableのインプリメントすらする気ないんかい。
走る〜走る〜、俺ーたーちー
845デフォルトの名無しさん:05/03/20 10:41:31
tomcat や resin などのサーブレットエンジンを使う場合、
windows と NPTL実装のlinux で
どちらが高速に動くかを教えていただけないでしょうか?
検証しているHPがあればそれでもかまいません。
846デフォルトの名無しさん:05/03/20 10:53:34
(long)(Long.MAX_VALUE) * Math.random())とすると情報落ちって出ますか?

Double.MIN_VALUEとそれよりひとつ大きい値で比べればいいのですが、
整数と違って4.9E-324とか表記だとそのひとつ大きい数との比べ方も分かりません。
4.9E-324 ← この表記法の名前もご存知でしたら教えてください。
847デフォルトの名無しさん:05/03/20 10:54:26
(long)(Long.MAX_VALUE * Math.random())

こうですね。途中でへんな)が入ってしまいました。
848デフォルトの名無しさん:05/03/20 11:30:53
Rectangle#intersects(当たり判定メソッド)が大変便利なのですが
Rectangleが保持するのは矩形(寸法:Dimension)なので用途が限られます。
透過情報を無視するImageなどを使った
intersectsと等価のメソッドを持つクラスってありますか?
849デフォルトの名無しさん:05/03/20 11:54:16
>>848
プレイヤーマシンと敵マシンの衝突判定みたいなときの、
矩形だとぶつかったと判断される状態でも、
どっちかのマシンの絵の透明なところは、かぶっても衝突扱い
にしたくないっていうか、そういうこと?
850デフォルトの名無しさん:05/03/20 12:00:01
>>849
Yes、そういうことです。
851デフォルトの名無しさん:05/03/20 12:13:57
あるクラスのあるメソッドで、String s = new String()した場合、sはメソッド内の処理がすべて終われば解放されますが、sの実体はいつ解放されますか?
852デフォルトの名無しさん:05/03/20 12:22:09
>>851
GCが起動したとき
853デフォルトの名無しさん:05/03/20 12:23:17
>>851
その実体を参照している変数が一つも無くなったとき

(に、その実体は到達不能状態という状態になる。そのあと
ガベージコレクタが動いたとき、開放される。ガベージコレクタを
明示的に呼ばない限り、いつ開放されるのかは、わからん。
でも、そのうち開放されるんだから気にしない。気にするべきこと
は、もう絶対使わない実体があるなら、A.S.A.P.に到達不能状態
にしてあげること)。
854デフォルトの名無しさん:05/03/20 12:26:06
>>851
GCが発動したとき。
一般的にGCはJavaがあらかじめ確保したヒープメモリが一杯になるか
System.gc()を呼び出した時に発動する。(System.gc()はRuntime.getRuntime().gc()を呼んでる)

# 世代型GCだとこっそりGCしてるかもしれんけど
855デフォルトの名無しさん:05/03/20 12:51:19
>>1 に書いてある wiki 止まってるね。
856デフォルトの名無しさん:05/03/20 13:43:00
私はプログラミングの初心者ですが…教えて欲しいことがあります。
それはタイトル通り、アクセス制御及びパスワード認証プログラミングについてです。
色々と詳しい事を教えていただけないでしょうか?
@自分でホームページをDreamweaver4で制作しています。
A目的はWebショップ用です。
B会員制にしようと思っています。
Cでも、資金はありません
Dやる気はかなりあります!
どうか色々と教えて下さい。本気な為、荒しは遠慮下さい
857デフォルトの名無しさん:05/03/20 13:48:11
>>856
死ね
858デフォルトの名無しさん:05/03/20 15:26:46
ある文字列の先頭一文字が

あ〜お だったら、 1
か〜こ だったら、 2

といった風にあ行、か行ごとに数値を返すメソッドを作りたいのですが、

if(index.compareTo("あ")==0 || index.compareTO("い")==0 || index.compareTO("う")==0 …) return 1
else if( …

のようにあ〜わまで一つ一つ判別する方法しか浮かびません。
もっとスマートなやりかたあったら教えて下さい。
859デフォルトの名無しさん:05/03/20 16:03:51
ないね
濁音や小文字が混ざってもいいならいくらでもあるけど
860デフォルトの名無しさん:05/03/20 16:14:55
>>858
細かいことかも知れんけど、
(機能1)「文字列を渡すとその先頭の文字に対応した数値を返す」
というメソッドから、
(機能2)「文字を渡されるとその文字に対応した数値を返す」メソッドを括り出す
ってことは、やったほうがかっこいいと思う。

機能1を実現するメソッドでは、与えられた文字列の先頭の文字を取り出して、
取り出した文字を引数にして機能2のメソッドを呼ぶ。機能2のメソッドから戻って
きた値をそのまま機能1のメソッドの戻り値として返す。

>>859 たしかに。
「ぁ」から「ん」までの並び順を表示してみたけど、こんな並びになってるんだね。

ぁ:12353 あ:12354 ぃ:12355 い:12356 ぅ:12357 う:12358 ぇ:12359 え:12360 ぉ:12361 お:12362

  public class Hiragana {
    public static void main(String[] args) {
      for (int i='あ'-1; i<='ん'; i++) {
        System.out.println((char)i + ":" + i);
      }
    }
  }
861デフォルトの名無しさん:05/03/20 16:15:59
>>858
Shift_JISに変換してからint型にキャストしてから比較とか?
しかしUTF-16BEじゃたぶんできないな。

Vectorをメンバに持たせて、add("あいうえお")とか順番に登録していって
toIndex('あ')とかchar型渡すと、内部でデータベースと一致するまで
compareToを繰り返すクラスを作るのがソース的には使いやすいかもね
先にデータベースさえ作っておけば辺・つくり検索も出来るし
862 ◆magic.fu7c :05/03/20 16:21:18
初歩ですが教えて下さい
public static void main(String args[])でmain()のカッコの中にString args[]を入れると文字が扱えるようになるんでしょうか?
このmainメソッドとは何ですか?本をみると実行する時に使いmainメソッドに情報を引き渡すと書いてあるんですがよく分かりません どうか教えて下さいよろしくお願いします
863デフォルトの名無しさん:05/03/20 16:25:17
>>858
---
public class CmpSample01 {

 public static void main(String[] args) {
  System.out.println( checkstr( "あか" ) );
  System.out.println( checkstr( "かね" ) );
  System.out.println( checkstr( "さけ" ) );
 }
 private static int checkstr(String index) {
  Pattern pattern1 = Pattern.compile("^[あいうえお].*");
  Pattern pattern2 = Pattern.compile("^[かきくけこ].*");
  
  if ( pattern1.matcher(index).matches() ) {
   return 1;
  } else if ( pattern2.matcher(index).matches() ) {
   return 2;
  } else {
   return 3;
  }
 }
}
---


実行結果
---
1
2
3
---
864デフォルトの名無しさん:05/03/20 16:26:25
>mainメソッド
最初に実行されるメソッド

>String args[]
実行時のパラメータ
865デフォルトの名無しさん:05/03/20 16:34:08
よくよく考えればmain()ってインタフェースであるべきなんだよな
866858:05/03/20 16:35:49
>>859さん,860さん,861さん,863さん
レスありがとうございます。

「ぁ」や濁点考えてませんでした・・・。
863さんのやりかたでやってみようと思います。
867デフォルトの名無しさん:05/03/20 16:37:07
ああ、なるほど。
868862 ◆magic.fu7c :05/03/20 16:51:21
>>864実行時のパラメーターとは?少し詳しくお願いします
869デフォルトの名無しさん:05/03/20 16:54:22
java MyClass param1 param2
MyClassクラスのmainを実行すると
args[0]に"param1" args[1]に"param[2]が入ってる
870デフォルトの名無しさん:05/03/20 17:02:44
>>851
Stringオブジェクトは特殊でメモリ中の「Stringプール」と
いう特殊な領域に格納されるようです。
ですから、いったん作られたStringオブジェクトは、
その後二度と使われなくても、ずっとメモリ内にとどまります。
ガーベージコレクタが機能しません。
StringよりもStringBufferクラスの方がメモリの節約になります。

871デフォルトの名無しさん:05/03/20 17:19:35
すなおに50音のハッシュテーブルつくればいいとおもうけどねえ。
あ => 1
い => 1
う => 1
え => 1
お => 1
か => 2
...
な具合で。
872デフォルトの名無しさん:05/03/20 17:19:46
>>870
その考え方だとtoString()使えばそのうちアプリは異常終了するわけか
なんてつっこみはいらんか
873デフォルトの名無しさん:05/03/20 17:30:58
System.out.println("あいうえおかきくけこ".indexOf("あ"));
System.out.println("あいうえおかきくけこ".indexOf("い"));
874デフォルトの名無しさん:05/03/20 19:34:23
ごめんなさい、またお邪魔します

public class HOGEconnect{
//Field
public ResultSet rset;
String url,user,password;


//Method
public String executeSQL(String sql){
try {
connection=DriverManager.getConnection(url,user,password);
Statement state=connection.createStatement();
boolean result=state.execute(sql);

 /****** 自分でテスト *****//
 //rset=state.getResultSet();

 /* ここ */
connection.close();
connection=null;

if(result){
rset=state.getResultSet();
}else{
int count=stage,getUpdataCount();
}


rsetを扱ったコーディング

}
875874:05/03/20 19:34:52
Mysqlを使ったJDBCプログラムです
メインメソッドからHOGEconnetクラスのexecuteSQLを呼び出して
SQL文を実行したり表示させたりするものです
(ドライバ登録、文字列の設定などは省略してます)
僕が読んでる本だとコネクションプ〜リングを考慮し 
state.execute(sql); 
実行された時点で、"ResultSet"に
データベースからの結果がすでに返されてるのでコネクションは不要、と書いてあるのですが、rsetに値がはいらなくnullのままです
その後、自分で
rset=state.getResultSet();
を実行した後にconnection.close();を実行してみたのですが
一度結果が返されたrsetは、また、nullになってしまってます(デバックで確認)
結局、rsetを扱ったコーディングの後にコネクションを閉じるしかないんでしょうか?
参考書には、プログラムだけじゃなく上記のような説明もしっかり書いてあるので
実際の所どうなのか聞きたいです。教えてください

ちなみに参考書はjava/JDBC+Mysqlプログラミング P.76
876デフォルトの名無しさん:05/03/20 19:49:19
ResutSetはコネクションを閉じると中身は保障されない
そういうのをやりたいときはRowSetを使うのだ
877デフォルトの名無しさん:05/03/20 19:53:48
>>874
なんだかでたらめっぽいな、その本。よければその本のタイトルをプリーズ。
で、本題ですが、ResultSetはコネクションが残っている前提で使うものです。
java.sql.ResultSetのJavadocより
>ResultSet オブジェクトは、このオブジェクトを生成した Statement オブジェクトが
>閉じられるとき、再実行されるとき、あるいは一連の複数の結果から次の結果を
>取り出すために使われるときに、自動的に閉じられます。
だから、>>875
>"ResultSet"にデータベースからの結果がすでに返されてるのでコネクションは不要
は明らかに誤り。javax.sql.RowSetという別のインタフェースの説明なら間違いではないですが。

JDBC使う場合の定石は>>874のコードと違うんですが、いざ定石のコードを探すとなると
見つからないな・・・これはfinallyが無いという致命的な問題があるし。
ttp://www.hellohiro.com/jdbc.htm
878デフォルトの名無しさん:05/03/20 19:56:56
素早い回答どうもです。
変なところで改行しすぎorz・・・見にくくてスイマセンでした

>ResutSetはコネクションを閉じると中身は保障されない
やっぱりそうですか
この参考書、サンプルのタイプミスもたくさんあったけど
重要な説明も間違って書くとは嫌ですね・・・

RowSetは初めて聞いたのでこれから勉強したいと思います
有難うございました
879デフォルトの名無しさん:05/03/20 20:00:47
更新し忘れた

>>877
本当にえらい勘違いをする所でした
本のタイトルは>>875の最後にありますよ(下はアマゾン)
http://www.amazon.co.jp/exec/obidos/ASIN/4798007145/qid%3D1111316380/249-8083118-9964352

P.76に上記の内容が思いっきり書いてあるので是非立ち読みしてみてくださいな

それでは、お騒がせしました
880デフォルトの名無しさん:05/03/20 20:05:24
具体的にはCachedRowSetだな
881868:05/03/20 20:59:23
>>868をよろしくお願いします
882デフォルトの名無しさん:05/03/20 21:29:32
>>862
  >>864
    >>865
>>868
  >>869
>>881

これまでのあらすじ。
883デフォルトの名無しさん:05/03/20 21:38:17
>>869>>882さんありがとうございました
なるほど受け渡すという事ですね 詳しくは分かりませんがある程度分かりました
884881 ◆magic.fu7c :05/03/20 21:40:10
>>869さん
何で[0]→1で[1]→[2]何ですか?[1]→2では?
885882:05/03/20 21:44:38
まあ、単なるタイプミスだろうね。

そんなもの、実際にやってみればわかる。
実際にやってみようとして、どうすればいいか分からない場合は、
また聞けばよい。
886 ◆magic.fu7c :05/03/20 21:45:59
確かにそうですね
どうもありがとうございました
887デフォルトの名無しさん:05/03/20 22:13:24
>>863
正規表現は理解できると使えますよね。

細かいことですが、
Pattern pattern1 = Pattern.compile("^[あいうえお].*");

Pattern pattern1 = Pattern.compile("^[あいうえお]");
で十分だと思いますよ。
888デフォルトの名無しさん:05/03/20 22:20:23
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
889デフォルトの名無しさん:05/03/20 23:14:06
>888
はい、Jythonの話は別スレでね。
890デフォルトの名無しさん:05/03/21 00:01:28
コマンドライン引数を配列に格納する、という物凄い基礎的なものをつくってるんですが、
もし要素数が10個ならちゃんと10個受け取る、
30個あったとしたら30個受け取るようにする。
というようなものをVectorで作りたいのですが、どうしたらよいでしょうか?
891デフォルトの名無しさん:05/03/21 00:03:57
J2ME J2SEで携帯ゲームを作りたいんですがAU携帯で動くHELLOWORLDの一番簡単なプログラムってどんなんですか?? 一応プログラムは公式サイトからとったのですが二つクラスが分かれていましていらない部分があると思うんです
よければ教えて下さい
892デフォルトの名無しさん:05/03/21 00:05:21
>>890
最初から配列になってるし・・・
893デフォルトの名無しさん:05/03/21 00:45:01
>891
MIDletのサブクラスとCanvasのサブクラスは最低限要る。二つあるから余分てもんじゃない。
ちゃんとMIDPのクラスリファレンスを読んでから

CLDC+MIDP+携帯電話用Javaスレッド part 4
http://pc5.2ch.net/test/read.cgi/tech/1108781476/
へ池。
894デフォルトの名無しさん:05/03/21 00:50:41
Stringをsplitしたのを空文字列だけすっとばしてVectorに追加するだけだよ
895デフォルトの名無しさん:2005/03/21(月) 06:55:00
posix扱うjavaのライブラリってありますか?
896デフォルトの名無しさん:2005/03/21(月) 11:14:13
POSIXの何?
897BlackLightOfStar ◆ifsBJ/KedU :2005/03/21(月) 13:13:05
898デフォルトの名無しさん:2005/03/21(月) 13:14:20
そらECMAScriptにJava対応がなされれば動くだろうけど
現状はNN系だけでは?
899デフォルトの名無しさん:2005/03/21(月) 14:05:13
//テキスト形式のあるファイルから文章を読み込み、
//同一ファイルに書込みを行って保存したいです。
//以下のようなコードを書いたのですが、FileNotFoundExceptionが発生してしまいます。
//(プロセスはファイルにアクセスできません。別のプロセスが使用中です。)
// どなたか解決策を教えて下さいませ。よろしくお願いします。

String myFile = "abc.txt";
BufferedWriter bw = null;
BufferedReader br = null;

try {
 bw = new BufferedWriter(new OutputStreamWriter(
     new FileOutputStream(myFile)));
 br = new BufferedReader(new InputStreamReader(
     new FileInputStream(myFile)));
 
 String line;
 while ((line = br.readLine()) != null) {
  bw.write(line);
  if (perl.match("m!(色々)!i", line)) {
   bw.write(perl.group(1) + "色々");
  }
 }
} catch (Exception e) {
900デフォルトの名無しさん:2005/03/21(月) 14:10:19
>>899
とりあえず、StackTrace 吐かせて、どの行でException が出てるか調べてみたら。
901デフォルトの名無しさん:2005/03/21(月) 14:16:59
質問です。

ttp://www.hellohiro.com/javamail.htm
ここのサイトのソースをコピペし、サーバー等を指定し実行すると以下のエラーとなります。

javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketException: Connection reset
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1349)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1191)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:311)
at javax.mail.Service.connect(Service.java:233)
at javax.mail.Service.connect(Service.java:134)
at javax.mail.Service.connect(Service.java:86)
at com.sun.mail.smtp.SMTPTransport.connect(SMTPTransport.java:144)
at javax.mail.Transport.send0(Transport.java:150)
at javax.mail.Transport.send(Transport.java:80)

送信した際にメールサーバとの反応時に何か起こっているということでしょうか?
902デフォルトの名無しさん:2005/03/21(月) 18:31:33
WinXPのコマンドプロンプトのcharsetはMS932ですか?
それをJavaの内部charsetにデコード(?)したいのですが、どうすればよいのでしょうか?
903質問あげ:2005/03/21(月) 19:50:03
C だと関数名でその関数のポインタを示すことができ、
そのポインタをコールすることで関数を呼ぶ事ができる。
これを利用してポインタを配列にしておけば、呼ぶ関数を
数値で切り替えることができる。

これと同じような事って、Javaでもできるの?状態遷移を
テーブルで定義したいんだけれど、switch〜case じゃない
方法でできればとってもハッピーです。
教えてクンでスマソです。
904デフォルトの名無しさん:2005/03/21(月) 19:56:24
javaを使ってID?会員制みたいなHPを作りたいんだけどプログラム辞典なんかで
調べたんだけど、載ってないんですけど・・・だれかわかる人いますか?

905デフォルトの名無しさん:2005/03/21(月) 19:58:10
>>903
> これを利用してポインタを配列にしておけば、呼ぶ関数を
> 数値で切り替えることができる。
C++ では class を使って似たような事をする。Java でも同じ。
906903:2005/03/21(月) 20:00:49
>>905
レスどうもです。

クラスのインスタンス単位ではできるけれども、
メソッド単位での配列化はJavaでは「できない」
という事でしょうか。
907デフォルトの名無しさん:2005/03/21(月) 20:17:31
>>906
Method クラスを使えばできるし、大概のフレームワークでは
実際にそれが使用されている。だが、やはり普通は多態で解決。
908デフォルトの名無しさん:2005/03/21(月) 20:24:09
まわりくどい言い方しないで
「できない」とハッキリ言っとく。
909デフォルトの名無しさん:2005/03/21(月) 20:31:36
>>903
つうか普通switchで処理切り替えができないか?という疑問が出てきたら、
すぐに設計ミスだと気づくだろ。

そういうのはインターフェースなり継承なりで解決するもんだ。
910デフォルトの名無しさん:2005/03/21(月) 20:33:41
>>903
コールバックを受け取るクラスのインスタンスを配列に突っ込めばいいじゃん?
ActionListnerを複数配列に突っ込むみたいなもんだろ。

どうしてもCと同じ方法でないとやだ!とかいうんなら、リフレクションでMethod
オブジェクトを取り出して、そいつを配列に突っ込んどけばいいじゃん。
911903:2005/03/21(月) 20:40:30
>>909-910
なるほど、Listenerを配列にしておけばできますね。

>>907,>>910
Method クラス(オブジェクト)というのは聞いた事無いので
ちと勉強してみます。

ありがとうございました!
912デフォルトの名無しさん:2005/03/21(月) 21:28:35
double ant

double.ant
は一緒の意味ですか??
913デフォルトの名無しさん:2005/03/21(月) 21:28:54
doubleは型です
914デフォルトの名無しさん:2005/03/22(火) 00:09:18
ソース互換を破壊してまで導入したassertが全く使われていない件について
915デフォルトの名無しさん:2005/03/22(火) 18:19:52
サービスとして起動したtomcatからだとODBCを利用できないんですねぇ。
バッチ起動したtpmcatは利用できるけど。

916U ◆CZtFsGiu0c :2005/03/22(火) 19:09:29
>>915
そんなことはないと思うけど。サービスの起動アカウントを変えてみた?
917デフォルトの名無しさん:2005/03/22(火) 20:42:21
918デフォルトの名無しさん:2005/03/23(水) 03:27:57
コンストラクタで引数をつかいますよね?コンストラクタを作成する時に引数をいれるの←クラス名(String in) とします
型 変数;
クラス()はちがうんでしょうか?←
String in;
public クラス名()とは違いますか??
919デフォルトの名無しさん:2005/03/23(水) 03:34:04
え、Javaってベクタージャンプできないのか・・・
920デフォルトの名無しさん:2005/03/23(水) 03:40:49
>>918
意味がよくわからないけど、
 class Foo {
  public Foo(String in);
 }

 class Foo {
  String in;
  public Foo();
 }
なら全然違う。
前者は1引数コンストラクタだし、
後者はメンバ変数inと0引数コンストラクタだし。
921デフォルトの名無しさん:2005/03/23(水) 09:17:59
>>919
ベクタージャンプの原理が理解できてるならば、できると考えるべき。

今回のはC言語と同じ文法で書けなくて躓いた頭の固い奴がいただけ。
922デフォルトの名無しさん:2005/03/23(水) 11:13:38
public Dimension getMinimumSize()
{
return (new Dimension(300, 200));
}
public void Count()
{
int a = 3+4;
int b = 5*2;
int c = a+b;
}

public void paint(Graphics g)
{
g.drawString("もんくあんのか!!" + c, 50, 50);
}
}
}
とやったら、("もんくあんのか!!" + c, 50, 50);のcが解決できませんとなります。
どうしたら、解決できますか?初歩的なことですみません。
923おしえて厨:2005/03/23(水) 11:16:11
DataOutputStream と ByteArrayOutputStream を組み合わせて
int型の二次元配列からbyte配列を作る方法と
ByteArrayInputStream と DataInputStream を利用して
byte配列をint二次元配列に戻す方法がわからないんだけど、
誰かこんなオレに擬似コードでなげやりに教えたりとかしてください
あるいは参考になるサンプルコードのアドレスをおしえたりしてください
924デフォルトの名無しさん:2005/03/23(水) 11:21:51
>>922
cの寿命を考えてみい
Countで生まれCountで死ぬ漢変数だと分かるだろ
925デフォルトの名無しさん:2005/03/23(水) 11:30:57
漢変数っていいな
926http://www.geocities.com/tokyufubai/:2005/03/23(水) 11:32:39
必要なページだけを主記憶にロードして実行し、
   必要なページが主記憶にない場合は、主記憶にあるいらないページを
   ハードディスクに戻して、必要なページを主記憶にロードします。

   このいらないページをハードディスクに戻すことを
   ページアウト(page out)といい、必要なページを主記憶にロードすること
   をページイン(page in) といいます。
   また、これらをまとめてページング方式(paging) といいます。
927デフォルトの名無しさん:2005/03/23(水) 11:52:16
public Dimension getMinimumSize()
{
return (new Dimension(300, 200));
}

public void paint(Graphics g)
{
int a = 3+4;
int b = 5*2;
int c = a+b;
g.drawString("もんくあんのか!!" + c, 50, 50);
}
}
}
こうすることですよね?>>924さん
でもCountから呼び出したいのです。どうしたら呼び出せますか?
928デフォルトの名無しさん:2005/03/23(水) 11:52:56
>>923
2次元配列のサイズが固定な場合のサンプルな
読み出すときは配列のサイズわかんねーって場合は、書き出しておかないとダメだ

ByteArrayOutputStream ba_os = new ByteArrayOutputStream();
DataOutputStream d_os = new DataOutputStream(ba_os);
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size; j++ ) {
d_os.writeInt( in[i][j] );
}
}
d_os.flush();
byte[] out = ba_os.toByteArray();
d_os.close();

DataInputStream d_is = new DataInputStream( new ByteArrayInputStream( out ) );
for ( int i = 0; i < size; i++ ) {
for ( int j = 0; j < size; j++ ) {
in[i][j] = d_is.readInt();
}
}
929デフォルトの名無しさん:2005/03/23(水) 11:53:40
>>927
cを漢変数じゃなく、フィールドにしろ
930デフォルトの名無しさん:2005/03/23(水) 12:15:53
>>923
それが人に教えてもらう言いかたですか?
931デフォルトの名無しさん:2005/03/23(水) 12:25:10
class Abc
{
int a,b,c;

public Dimension getMinimumSize()
{
return (new Dimension(300, 200));
}

public void Count()
{
a = 3+4;
b = 5*2;
c = a+b;
}

public void paint(Graphics g)
{
g.drawString("もんくあんのか!!" + c, 50, 50);
}
}
}
こうすると、cが0になってしまいます。どうしたら、計算した値をCountから持ってきて表示できますか?
本当にばかでごめんなさい
932デフォルトの名無しさん:2005/03/23(水) 12:30:59
>>931
それでいい
ただ、paintが呼ばれているのがCount()を呼ぶ前なんじゃないのか?
このAbcを使っているクラスのほうの問題だ
933デフォルトの名無しさん:2005/03/23(水) 12:32:03
paintの前にCountを呼んでないんじゃねーの?
934デフォルトの名無しさん:2005/03/23(水) 12:45:16
import java.awt.*;
import java.awt.event.*;

class uuuuuu extends Frame
{
public static void main(String args[])
{
uuuuuu app= new uuuuuu();
app.show();
}

public uuuuuu()
{
setTitle("Mozi");
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
});
add(new uuuuuuCanvas());
pack();
}
}
935U ◆CZtFsGiu0c :2005/03/23(水) 12:45:54
>>916
それらに書かれていることは理解できているでしょうか。
最初のは、サービス起動云々とは関係ないですね。手動で起動しても同じことです。
次の質問については私が指摘したことと同じですね。要するに、サービスの起動
アカウントとしてデフォルトで設定されるSYSTEMアカウントでは権限不足なのでは
ないか、ということです。
936デフォルトの名無しさん:2005/03/23(水) 12:46:00
class uuuuuuCanvas extends Component
{
int a,b,c;
// Component
public Dimension getPreferredSize()
{
return (new Dimension(200, 100));
}

// Component
public Dimension getMinimumSize()
{
return (new Dimension(300, 200));
}

public void Count()
{
a = 3+4;
b = 5*2;
c = a+b;
}

// Component
public void paint(Graphics g)
{
g.drawString("もんくあんのか!!" + this.c, 50, 50);
}
}
この二つのクラスを使っています。どこがだめなんでしょうか?
937デフォルトの名無しさん:2005/03/23(水) 12:49:45
クラス名がおかしい。あとJavaやってるならJava流の命名規則でやりなさい。
人に見せるときに失礼だから。
938デフォルトの名無しさん:2005/03/23(水) 12:51:29
Count()はどこでよんでるの?

ただ、推奨サイズとか指定しているちゃんとしたアプリで意外とびびた。
アプリケーションなようだし、Canvas使ってないとかそこまでやるならSwingのほうが
いいような気もするが
939& ◆Di83K0DpQA :2005/03/23(水) 12:55:46
>>928
ありがとうございます。
で、もうひとつ質問
import java.io.*;
class test1 {
public static void main(String args[]) {
int data[] = {1,2,3,4,5};
ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(bout);
try {
for (int i = 0; i < data.length; i++)
dout.writeInt(data[i]);
} catch(IOException e) {

}
byte[] buf = bout.toByteArray();
for(int j = 0; j<5; j++) {
System.out.println(buf[j]);
}
}
}
とやると、
00010
と表示されます。
どうして
12345
にならないの??
940デフォルトの名無しさん:2005/03/23(水) 12:56:22
>>937はい、わかりました。
>>938Canvasって書いてあるのはなんとなく書いてみました。
Count()をpaint(Graphics g)のなかで呼んでみます。
941デフォルトの名無しさん:2005/03/23(水) 12:59:56
public void Count()
{
a = 3+4;
b = 5*2;
c = a+b;
}

public void paint(Graphics g)
{
Count();
       g.drawString("もんくあんのか!!" + this.c, 50, 50);
}
これでできました!
このほかにも呼び出す方法ありますか?
942デフォルトの名無しさん:2005/03/23(水) 13:02:50
いや、メソッドよんでないと実行されないから。
もしかしてもともとのソースかなんかはCountクラスだった予感。
コンストラクタで処理してる気がする。
943デフォルトの名無しさん:2005/03/23(水) 13:07:03
もともとは、Countメソッドは無く自分で追加しました。
いろいろありがとうございました。
944デフォルトの名無しさん:2005/03/23(水) 13:08:03
Count()ってメソッドなのに何回呼んでも同じ仕様ってのはなんなのかw
945デフォルトの名無しさん:2005/03/23(水) 13:23:39
>>944
それは多分同じになるとおもいます
946おしえて厨:2005/03/23(水) 13:39:44
>>939
に追記

0
0
0
1
0
0
0
2
:
:
という風になっていることは分かったんだけど、なんで3つ跳びに
格納されてしまうのか、それがわからないんですけど
947デフォルトの名無しさん:2005/03/23(水) 13:44:48
intでシリアライズしてバイトで取り出したらそうなるのは当たり前
むしろバイトオーダーが決まってるJavaでよかったな、とおもた
948デフォルトの名無しさん:2005/03/23(水) 13:46:36
byte = 1byte
int =

さてなんでしょう
949デフォルトの名無しさん:2005/03/23(水) 13:47:34
Javaってバイトオーダーが決まってるの?
ByteBufferのデフォルトがBigなのは知ってるけど
全部がそうなのか
950& ◆hJb7GWrzxo :2005/03/23(水) 13:55:26
なるほど納得。
みなさまどうもありがとう
951918:2005/03/23(水) 14:02:02
>>920
どう違うか詳しくお願いします
>>920が同じと書いてあった本がありましたが違う本には違うと書いてあったのでよろしくお願いします
952デフォルトの名無しさん:2005/03/23(水) 14:04:36
>>951
inの寿命を考えてみろ
上のはFooで生まれFooで死ぬ漢変数だ
953デフォルトの名無しさん:2005/03/23(水) 14:07:51
>>952なるほど 分かりましたありがとうございました
954デフォルトの名無しさん:2005/03/23(水) 17:01:39
>>952
漢変数。
いいねそれw
955デフォルトの名無しさん:2005/03/23(水) 19:36:02
>>935
おお、なんかログオンタブのアカウントのところをいじったらサービスでもできるようになりました。
ありがとうございます。
956デフォルトの名無しさん:2005/03/23(水) 19:46:15
>>949
VM内部の話ならば
言語仕様として直接触れる手段がないので
VMの実装の都合でどっちになっていてもよい。

ByteBuffeをはじめとする外部との入出力を扱うAPIでは
すべてBigというかネットワークバイトオーダーが標準。
957デフォルトの名無しさん:2005/03/23(水) 20:34:21
シリアライズはちゃんとメソッドごとに丁寧にビッグエンディアンって書いてあるしなぁ
APIマニュアルよんでないとしかおもえん
958おしえて厨:2005/03/23(水) 20:58:53
アプレットをFrameやJFrameに書き換える際のコツをおしえてください。
959デフォルトの名無しさん:2005/03/23(水) 21:15:37
>>958
main()メソッド内で
FrameやJFrameにAppletを乗せちゃえばいいんじゃないの
でAppletのinit()を呼んで、Frameをvisibleにする
960デフォルトの名無しさん:2005/03/23(水) 21:37:19
サーバー側
class multicastServer{
static final int MULTI_PORT = 10000;//マルチキャスト接続用ポート番号
static final int BUFSIZE = 1024; //バッファサイズ
public static void main(String[] args)
{
byte[] buf = new byte[BUFSIZE];//送信バッファ
try
{
InetAddress ipadr = InetAddress.getByName("224.0.0.1"); //IPアドレス設定
while(true){//何度でもキー入力
System.out.print("send>");
k = System.in.read(buf); //キー入力
int len = buf.length;
//データグラムパケット設定
DatagramPacket packet = new DatagramPacket(buf,len,ipadr,MULTI_PORT);
MulticastSocket sock = new MulticastSocket();
sock.setTimeToLive((byte)1); //TTL
sock.joinGroup(ipadr);
sock.send(packet); //データ送信
sock.leaveGroup(ipadr);
〜続く
961960:2005/03/23(水) 21:37:47
クライアント側
class multicastClient{
static final int MULTI_PORT = 10000;//マルチキャスト接続用ポート番号
static final int BUFSIZE = 1024; //バッファサイズ
public static void main(String[] args)
{
try
{
//マルチキャストソケット設定
MulticastSocekt sock = new MulticastSocket(MULTI_PORT); 
//IPアドレス設定
InetAddress ipadr = InetAddress.getByName("224.0.0.1");
sock.joinGroup(ipadr);
byte[] buf = new byte[BUFSIZE];//受信バッファ
while(true){
//データグラムパケット
DatagramPacket packet = new DatagramPacket(buf,buf.length);
sock.receive(packet); //データ受信
String recvdata = new String(packet.getData());
〜続く
962960:2005/03/23(水) 21:38:08
UDPマルチキャストのサーバ・クライアントモデルについて教えて下さい
サーバ側で何かキーボード入力し(send>プロンプト)てクライアント側に表示させるだけのプログラムです
サーバ側で入力してもクライアント側の
sock.receive(packet);
でプログラムが止まってしまいます(両プログラムを同時デバックして確認済み)
別に例外処理されるわけでもなく止まってしまうんです
サーバー側はしっかり動作しているようで何回でもキー入力はできます
ちょっと原因がわからないので教えてください。おねがいします
963デフォルトの名無しさん:2005/03/24(木) 09:19:40
キーボード入力のオブジェクトはbrが主流のようですが、
ファイル処理はどうなんでしょうか?
ファイル書込はbwでいいと思うんですが、読込はbrでかぶるんですよね・・・
964デフォルトの名無しさん:2005/03/24(木) 09:26:12
変数名のことか?
965デフォルトの名無しさん:2005/03/24(木) 09:30:51
はい、そうです
966デフォルトの名無しさん:2005/03/24(木) 09:38:29
fとかkとか
967デフォルトの名無しさん:2005/03/24(木) 09:58:44
>>963
brが何の略か考えないの? キーボードとかファイルとか
関係なく単にBufferedReaderのインスタンスってだけでしょ。
968& ◆hJb7GWrzxo :2005/03/24(木) 10:08:30
>>959

アプレットをswingにそのまま移植しようとすると
staticでない何々をstaticコンテキストから参照することはできませんエラーが
ズラーッと並んでしまいます。
init()の中身をmain()にコピーし
メソッドを全部そのまま貼り付けただけなんだけどこれじゃ不味いのかな?
ちなみに
たくさんのクラスに分かれてるわけでもなく
ひとつのクラスの中にぜんぶぶちこんでるコードです。
969963:2005/03/24(木) 10:09:16
何の略かぐらいは分かってます
ただ、キーボード入力もファイル読込もおなじBufferedReaderなんで同じbrを使うわけにはいかないんで、一般には何が使われているのかと思ったんです
970デフォルトの名無しさん:2005/03/24(木) 10:10:56
好きなもん使えよハゲ
971おしえて厨:2005/03/24(木) 11:25:26
>>968
に追記

もしかして「 staticでない何々をstaticコンテキストから参照することはできません」
のstaticコンテキストには
main()も当てはまるってこと?
public static void main()からは同じクラスにあるmainの外のフィールドやメソッドを参照できないのですか
972デフォルトの名無しさん:2005/03/24(木) 11:38:39
>>971
当たり前じゃない
973デフォルトの名無しさん:2005/03/24(木) 11:49:21
>>971
以下のコードを正しいと思うか?
思うんだったらコンパイルしてみれ

class T {
 int x;
 public static void main(String[] args){
  x = 0;
 }
}
974デフォルトの名無しさん:2005/03/24(木) 11:56:03
クラスは雛形のはずなのにstaticはいきなり実体だからな
住所が同じなだけの他人様ってのはいつか仕様として疑問視されるかもな
975デフォルトの名無しさん:2005/03/24(木) 11:59:25
同じクラスやそのサブクラスで共通の変数を持ちたい時はその変数を static にすればいいですが
異なるクラス同士で共通の変数を持ちたい場合はどうするのですか?
976デフォルトの名無しさん:2005/03/24(木) 12:03:55
>>969
ハンガリー記法っぽく、brKeyInput,とかbrFileReadでどうだ?
977デフォルトの名無しさん:2005/03/24(木) 12:09:06
>>975
設計が変な気もするが、シングルトンクラスかな。
978& ◆hJb7GWrzxo :2005/03/24(木) 12:10:09
C言語のグローバル変数とかグローバル関数のノリでついやっちゃったよ・・・
そうか駄目なのか・・・
979おしえて厨:2005/03/24(木) 12:31:28
repaint()みたいなメソッドがstaticでないからって
main()から呼べないのはどうにかならんのですか
980デフォルトの名無しさん:2005/03/24(木) 12:37:34
インスタンスを作ってから呼べ
mainから直接呼ぶのは無理だ
981 ◆magic.fu7c :2005/03/24(木) 13:10:27
staticについて教えて下さい
オブジェクトが作成されなくてもメソッドをよびだせる と書いてあるんですが だったら全部staticをつけたらいいんじゃないですか?いちいちnewをつけて作るのがバカらしくなるんじゃないでしょうか?
御回答よろしくお願いします
982デフォルトの名無しさん:2005/03/24(木) 13:16:01
Javaはオブジェクト指向言語でそう言う仕様にしている。
嫌なら、手続き型言語をやればいいじゃない。
983デフォルトの名無しさん:2005/03/24(木) 13:21:38
>>981
マリオとルイージが常に同じ動きしてたらヤじゃん
984デフォルトの名無しさん:2005/03/24(木) 13:50:44
>>983
的確だが飛躍しすぎでわけ分からんと思うぞw
985デフォルトの名無しさん:2005/03/24(木) 13:57:41
>>981
おお、キミか。例のサイトは勉強になったかい?

staticメソッドは、名前の通り静的なメソッドだ
入力が同じなら処理も結果も(返却値があればそれも)全く同じになる
それと上の方に既出だが、クラス内のstaticじゃないフィールドやメソッドは使用できない

対して非staticメソッドは入力が同じでもインスタンスによって
処理や結果が異なる(可能性がある)
また、クラス内のフィールドやメソッドを自由に呼び出せる

>>983のマリオとルイージの例が分かりやすいね
つづく
986つづき:2005/03/24(木) 14:07:42
class PlayerCharacter {
 public PlayerCharacter(int x){ jumpHight = x; }
 private int jumpHight;
 void jump(){ jumpHightだけジャンプする処理 }
}

というクラスがあって、
 PlayerCharacter mario = new PlayerCharacter(10);
 PlayerCharacter luigi = new PlayerCharacter(20);
 mario.jump();
 luigi.jump();
と言うように使うと、同じjumpというメソッドを使用している
にもかかわらず、ジャンプする高さは違う
これは使用するインスタンスが違うから
staticメソッドだとこうは行かない

ところでクラスとインスタンスの違いは理解できたんだよね?
987デフォルトの名無しさん:2005/03/24(木) 14:23:46
>>981
そうしたいなら、そうすれば良い。

>>981 がまわりから馬鹿だと思われたり、
天災だと思われたりするかもしれんが、
こっちの知ったこっちゃ無いし。
988960:2005/03/24(木) 14:27:56
僕にも構ってください
989デフォルトの名無しさん:2005/03/24(木) 14:29:23
Charset charset = Charset.forName("UTF-8");
CharsetEncoder encoder = charset.newEncoder();
CharsetDecoder decoder = charset.newDecoder();
String str = "あいうえお";
String enstr;
String destr;

Charset系のクラスを用いて
プラットフォーム毎のデフォルトエンコーディングと
UTF-8とのエンコード・デコードをしたかったのですが

encoderのほうはCharBufferを引数にとって
decoderのほうはByteBufferを引数にとるようで
なんだかわけがわからなくなりました。

これらをうまく使ってenstrにUTF-8、
destrにUTF-8からプラットフォームのエンコーディングに
それぞれうまく変換する方法を教えてください。
990981 ◆magic.fu7c :2005/03/24(木) 14:32:07
>>982-987
ありがとうございました
今からauのJAVAの勉強をしはじめるくらいです 基礎はだいたい分かったつもりなので
991デフォルトの名無しさん:2005/03/24(木) 14:32:43
>>989
別の文字コードに変換したなら、それは Java 的には文字列ではなくバイト配列として扱わなければならない。

String str = "あいうえお";
byte[] utf8 = str.getBytes("utf-8");
byte[] sjis = str.getBytes("Cp943C");
992デフォルトの名無しさん:2005/03/24(木) 14:33:36
プラットフォームデフォルトエンコーディングの書き忘れ

byte[] def = str.getBytes();
993デフォルトの名無しさん:2005/03/24(木) 14:37:33
評判が良かったので、「なぜ、あなたはJavaでオブジェクト指向開発ができないのか」という本を買ってみた。
コンピュータにジャンケンをさせるという簡単なプログラムで、非オブジェクト指向とオブジェクト指向のソースを書き、
二つを比較しオブジェクト指向の利点が具体的にとても分かりやすく解説されているので、
Javaの基本は分かってるけどオブジェクト指向の何が良いのか分からないって人にはちょーお勧め。

なんか宣伝っぽくなってスマソ。
994 ◆magic.fu7c :2005/03/24(木) 14:38:45
)>>986はいクラスやインスタンスの違いは分かりました
今は細かい事が分からない(?)んです もう少し勉強しますんでまたよろしくお願いします
995980:2005/03/24(木) 15:08:39
次スレ

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

http://pc8.2ch.net/test/read.cgi/tech/1111644392/
996デフォルトの名無しさん:2005/03/24(木) 15:50:26
>>991
そのやり方だとなぜかなんか奇数文字だったり、「う」が入ったりすると化けるようなのです

byte[] utf8 = str.getBytes("UTF-8");
str = new String(utf8,Charset.defaultCharset().name());
System.out.println("DefEnc:"+str);
byte[] defEnc = str.getBytes(Charset.defaultCharset().name());
str = new String(defEnc,"UTF-8");
System.out.println("UTF-8:"+str);

なんでうまくいかないんでしょう?
997& ◆QWv3R1XL8M :2005/03/24(木) 16:13:41
998& ◆QWv3R1XL8M :2005/03/24(木) 16:14:36
999& ◆QWv3R1XL8M :2005/03/24(木) 16:15:13
1000デフォルトの名無しさん:2005/03/24(木) 16:16:03
Java大好き。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。