【初心者】Java質問・相談スレッド103【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/06/27(水) 07:23:27JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド102【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1180419689/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
次スレは>>980あたりで。
0048デフォルトの名無しさん
2007/06/28(木) 08:57:05ありがとうございます
単純に実行部分のバイトコードを添付するだけでいいわけですか
↓の部分が適用されるってことですか?
>もし著作物が『ライブラリ』とリ ンクされた実行形式ならば、著作物を完全かつ機械読み取り可能な
>「『ラ イブラリ』を利用する著作物」のオブジェクトコードあるいはソースコー ド(どちらかでも可) と一緒にし、
>ユーザが『ライブラリ』を改変した後 に再リンクして、改変された『ライブラリ』を含む改変された実行形式を
>作成できるようにする
0049デフォルトの名無しさん
2007/06/28(木) 11:16:54org.postgresql.util.PSQLException: The connection attempt failed.
Caused by: java.net.UnknownHostException: localhost
こんなエラーがでて接続できないんだけど、
これってJDBCドライバ自体は認識できてるんかな?
ずっと「JDBCドライバがないYO」って言われてたんで、そこが気になる。
誰か教えてくれー
0050デフォルトの名無しさん
2007/06/28(木) 11:53:45いえす
localhost が解らんって言われているけど、postgresqlならば
jdbc:postgresql://localhost:5432/test
のようにURL指定してないとか?
それでもダメなら、localhost を 127.0.0.1 で試す。
後、WindowsのFireWallの可能性もあるかな?
005149
2007/06/28(木) 13:37:37レスありがとう。
なんとか動きました。
postgresqlにTCP接続する設定をやっていなかった。
// これがダメだったのかな?
postgresql.confを編集して
URL指定に「jdbc:postgresql://127.0.0.1:5432/hoge」で接続できました。
loclhostだと失敗したんで根本的な解決はしてない気もするけど、とりあえず動いたからおk!!!
005234
2007/06/28(木) 13:52:52ありがとうございます。
さっそく実行してみたのですが、次は
org.postgresql.util.PSQLException: The column index is out of range: 2, number of columns: 1.
と表示されてしまいます。
?の数とsetStringやsetIntの数が違うのかなと思ったのですが、
一緒でわかりません・・・
0053デフォルトの名無しさん
2007/06/28(木) 14:02:01「15歳からはじめる〜」って本を良く耳にする。でも読んだ事はない。
Javaでゲーム作成 2本目
http://pc11.2ch.net/test/read.cgi/gamedev/1130373830/
0054デフォルトの名無しさん
2007/06/28(木) 14:25:08配列の要素数が0で始まるのか1で始まるのかをもういちど確認してくれ
0055デフォルトの名無しさん
2007/06/28(木) 14:34:250056デフォルトの名無しさん
2007/06/28(木) 14:44:030057デフォルトの名無しさん
2007/06/28(木) 15:10:44PreparedStatement のメソッド setDate(int, Date) は引数 (int, Date) に適用できません。
どういうことだよorz
0058デフォルトの名無しさん
2007/06/28(木) 15:15:27setDate(int, java.sql.Date) は引数 (int, java.lang.Date) に適用できません。
ってことだ。エラーメッセージが悪い。
0059デフォルトの名無しさん
2007/06/28(木) 15:44:17そのスレッドを長時間実行してもタイムアウトになることはありませんよね?
0061デフォルトの名無しさん
2007/06/28(木) 18:35:06まぁ、>>47みてやりたいことは大体判った。
結局のところ探索、評価の繰り返しをいかに精確かつ高速にやるか、というところが肝なわけで…
まともにやろうとすると結構専門的なところまで踏み込むことになるけれども一応参考資料(英語ですが)
ttp://www.cs.ualberta.ca/~mburo/publications.html
もともとはリバーシのアルゴリズム解説だけれど、探索や評価のアルゴリズムは他にも応用がききそうなので。
日本語の資料だとつっこんだところまで解説したものってみたことないので情報工学とか数学関係の専門書を
あたった方が早いかもです。
0062デフォルトの名無しさん
2007/06/28(木) 19:28:14ボーンデジタル
006345
2007/06/28(木) 20:45:50やはり専門的な分野になると英語になるのかぁ・・・
最初の1〜2冊は日本語で勉強したかったんです。
Amazonで漁っていくつか候補があったのでとりあえず片っ端から買ってみますw
0064デフォルトの名無しさん
2007/06/28(木) 20:51:31これですか・・・
ttp://www.amazon.co.jp/Game-Programming-Gems-Mark-DeLoura/dp/4939007286/ref=pd_sim_b_1_img/249-4142550-3954713?ie=UTF8&qid=1183031211&sr=8-11
流石にいい値段しますが興味はあります・・・むぅ
0065デフォルトの名無しさん
2007/06/28(木) 22:39:12複数回読みたいんですが、どうしたらいいですか?
0066デフォルトの名無しさん
2007/06/28(木) 22:55:51できない
InputStreamのStreamの意味を調べたことあるか?
尚、普通の人は画像データを変数に格納するだろう
0067デフォルトの名無しさん
2007/06/28(木) 22:58:41一回closeしてしまったら、もう読み込めないから、もう一回接続して新しいInputStreamで読み込む。
もしくは、最初のInputStreamで読んだデータは手元にあるはずだから、それを利用する。
0068デフォルトの名無しさん
2007/06/28(木) 23:02:55> InputStreamのStreamの意味を調べたことあるか?
あります、すみません
resetメソッドとかよくわからずに使ってうまくいかなかったもので…
> 尚、普通の人は画像データを変数に格納するだろう
InputStreamが引数なメソッドを2つ呼び出す必要があるんですが、
やっぱそのたびに生成しなきゃいけないんでしょうか。
↑これがよくわからんかったのでリサイクルしたいと思いました。
>>67
接続は1回にしたいです。
0069デフォルトの名無しさん
2007/06/28(木) 23:05:13頭からもう一度とはいかない。全データのプッシュバックをサポートするstreamを作って、
HttpURLConnectionのInputStreamに接げばいけるかもだが、
それは最初に読んだデータを再利用するようにした方がいいような気が。
007066
2007/06/28(木) 23:11:05言い方がきつかった、すまん
ただ、Streamってのは流れなんだ、流れてくるものを2回読むことはできない
だからデータを溜めておかなければならない。
ちなみに、使うメソッドがInputStreamで引数を持つという事自体がおかしいということはないか?
Imageで受けたり、byte[]で受けたり出来ないような特殊な事情があるのか、検討して欲しい。
それでも、どうしてもInputStreamにしなければならないならば、byte[]等でキャッシュしておき、自前で再度流すようにコーディングする必要があるな
0071デフォルトの名無しさん
2007/06/28(木) 23:11:30InputStreamのサブクラスにはByteArrayInputStreamというものもある。
何もネットから読み込むだけのストリームではない。
最初にそのメソッドを呼ぶ前にHttpURLConnectionでバイト配列にデータを読んで、
そのメソッドにはバイト配列をバッファにしたByteArrayInputStreamを渡してやればいい。
0072デフォルトの名無しさん
2007/06/28(木) 23:31:38最終的にはswtのImageを作るんですが、
その前に元のデータのハッシュを取る必要があるんです。
最初はImageを作って それからgetImageData().dataのハッシュを
取ればいいかと思ってたんですが、dataってビットマップ(広義)と知って…
>>71
そうですね、
一旦bete[]にバッファしてそれぞれByteArrayInputStream作ることにします。
ご協力ありがとうございました。
007357
2007/06/29(金) 00:12:38ありがとう やっと意味がわかったよ
0074デフォルトの名無しさん
2007/06/29(金) 00:22:36そういうのってNIOでやるんじゃない?
0075デフォルトの名無しさん
2007/06/29(金) 00:29:41DigestInputStream
0076デフォルトの名無しさん
2007/06/29(金) 00:51:14教えてください。
RMIとかなんでしょうか
0077デフォルトの名無しさん
2007/06/29(金) 00:54:31遠隔機器操作だけじゃわからん。どういう事をやりたいか具体的に書く。
0078デフォルトの名無しさん
2007/06/29(金) 01:05:56知りたいのは、ネットワークのストリームの確立方法と制御命令の伝達方法、及び監視情報のリアルタイム
での送受信方法です。
0079デフォルトの名無しさん
2007/06/29(金) 01:10:10回線は優先無線の両方を考えてますが、とりあえず有線の方法、通常のインターネット経由の方法で
教えていただけたらと思います。
0080デフォルトの名無しさん
2007/06/29(金) 01:17:500081デフォルトの名無しさん
2007/06/29(金) 01:20:20for(Foo f: set) {
// ここで set を変更
}
で ConcurrentModificationException が出るときの解決案って
for(Foo f: set.toArray(new Foo[set.size()])) {
// ここで set を変更
}
以外にどのようなものがありますか?
0082デフォルトの名無しさん
2007/06/29(金) 01:43:20>>81とか俺には理解できない・・・
0084デフォルトの名無しさん
2007/06/29(金) 02:26:47色々調べたのですがわからなかったので、初歩的な質問ですが教えてください。
class Car
{
int n;
}
とした時に
Car car[ ] = new Car[3];
のような配列ぽい変数にできるのでしょうか?
今試しているのですがエラーになります。
コンストラクタを使ってオブジェクトを作る時は配列は使用できないのでしょうか?
先のページには出来ている様なコードが書いてあるのですが、抽象クラスでないとダメなんでしょうか?
0085デフォルトの名無しさん
2007/06/29(金) 02:27:12失礼Cはマイコン用のCで低レベルの制御用にのみ使うものです、通信そのもは複雑なネットワークに
も対応できるようにJAVAを使おうと思っています。
0086デフォルトの名無しさん
2007/06/29(金) 02:29:50配列要素それぞれをnew Car()で生成する必要があります
Vector使ったほうが簡単では?
0087デフォルトの名無しさん
2007/06/29(金) 02:31:17エラーの種類がわからないから断定は出来ないけど、
おそらく発生しているエラーは NullPointerException だと思う。
Car[] car = new Car[3];
for (int i = 0; i < car.length; i++)
car[i] = new Car();
0088デフォルトの名無しさん
2007/06/29(金) 02:34:24>>87
なるほど!!
まずは配列要素それぞれで生成するわけですね。
早速試してみます。
0090デフォルトの名無しさん
2007/06/29(金) 03:11:34OKボタンを押したときのイベントの中にRuntime.exec()で2つのシェルスクリプトを実行するプログラムを書きましたが、
1つ目のJavaアプレットのプロセスをkill するスクリプトは常に動作しますが、2つ目のJavaアプレットを起動するスクリプトが動作したり、動作しなかったりしています。
・1つ目 stop.sh:(abc.jarのプロセスをkill するスクリプト)
・2つ目 start.sh:java -jar abc.jar
String[] cmd= {"stop.sh", "start.sh"};
Runtime.getRuntime().exec(cmd)
でcmdにスクリプトを渡すようにしています。
この書き方はだめなのでしょうか?
ソースは手元にありません。すみません。
よろしくお願いします。
0091デフォルトの名無しさん
2007/06/29(金) 03:22:450092デフォルトの名無しさん
2007/06/29(金) 03:35:312つ目動作することある?
Runtime#exec(String[]) の2つ目以降の要素は1つ目の要素の引数ではないか?
009390
2007/06/29(金) 03:47:39>String[] cmd= {"stop.sh", "start.sh"};
>Runtime.getRuntime().exec(cmd)
String cmd[] = new String[2];
cmd[0]="stop.sh"
cmd[1]="start.sh"
Runtime.getRuntime().exec(cmd[0])
Runtime.getRuntime().exec(cmd[1])
0094デフォルトの名無しさん
2007/06/29(金) 04:39:48組み込み用Cしか動かないような環境でJava動くの?
0095デフォルトの名無しさん
2007/06/29(金) 04:43:53どうせネタだろうけど
Runtime.getRuntime().exec(cmd[1]);
Runtime.getRuntime().exec(cmd[0]);
これでいいよ
0096デフォルトの名無しさん
2007/06/29(金) 06:48:01setの変更がremoveのみなら、こういう手も。
for(Iterator<Foo> iter = set.iterator(); iter.hasNext();){
Foo f = iter.next();
if(...){
iter.remove();
}
}
せっかくの enhanced for loop が使えないのはもったいないけど。
0097デフォルトの名無しさん
2007/06/29(金) 07:45:23こんな感じにする
Set<Foo> set = new HashSet<Foo>();
Set<Foo> temp = new HashSet<Foo>(set); // 丸々コピー
for(Foo f: set) {
// ここで temp を変更
}
set.clear(); // 一度、空にしてから
set.addAll(temp); // 全部詰めなおす
参照の問題が起きないのであれば、2行を、set = temp;としてもいいけど、
このメソッドでSetを生成して返すのでもなければ、clear addAll のコンボのがいいと思う。
もし、他のスレッドからsetの更新の可能性があるならば、同期も取ろう
0098デフォルトの名無しさん
2007/06/29(金) 15:40:33ループ内でリクエスト送信後、レスポンス受信の前に次のリクエストを送る事ってできないんでしょうか?
レスポンスを待たずにリクエストを送りたいと思っています。
こういうのはthreadを使うべきなんでしょうか?
0099デフォルトの名無しさん
2007/06/29(金) 17:11:460100デフォルトの名無しさん
2007/06/29(金) 17:53:150101デフォルトの名無しさん
2007/06/29(金) 19:48:07はじめから考えなきゃだめな部分とそうでない部分がある。
まあ、とにかくはじめに検討することが大事。
0102デフォルトの名無しさん
2007/06/30(土) 00:14:50toArray()メソッドを使おうと考えたのですが、Integer[]クラスへの代入はできるもののint[]クラスへは代入できませんでした
0103デフォルトの名無しさん
2007/06/30(土) 01:00:43ArrayList<Integer>とint[]は一方が他方のサブクラスの関係でないので代入できない。
リストの各要素をint[]の各要素に代入したいのなら、
toArrayでInteger[]を生成したあとで、同じ要素数のint[]を作って、各要素に代入していく。
0104デフォルトの名無しさん
2007/06/30(土) 01:03:390105デフォルトの名無しさん
2007/06/30(土) 01:25:21if(a[ i ] && b+c<=d)
という条件文の場合、条件を日本語を訳すと「a配列の�@番目の要素とb+cがともにd以下の場合」ということでいいんでしょうか?
0106デフォルトの名無しさん
2007/06/30(土) 01:30:520107デフォルトの名無しさん
2007/06/30(土) 01:31:33○要素が
0108デフォルトの名無しさん
2007/06/30(土) 01:32:17URL url = new URL(address);
URLConnection connection = url.openConnection();
としたとしてサーバーに「GET」としてリクエストが行くと思うのですが、ヘッダーのUser-AgentがJava/1.5.0_12となっています。
ネット上のデータを取得するときに、指定したヘッダーをサーバーに送信するやりかたはあるでしょうか?
今はテストとして、http://www.cybersyndrome.net/evc.htmlをURLクラスで取得して、User-Agentの書き換えをあれこれ試してるんのですが、
URLConnectionのsetRequestPropertyなど試してもなかなかうまくいきません。
よろしくお願いします。
0109デフォルトの名無しさん
2007/06/30(土) 02:16:26setRequestPropertyはストリームを開く前にセットしないと効果がないよ。
URLConnection u = new URL(...).openConnection();
u.setRequestProperty("User-Agent", "hogehoge");
InputStream s = u.getInputStream();
こんな感じで。
もし、hogehoge Java/1.5.0_12みたいに後に元のUser-Agentが付いても構わないなら、
javaのオプションに-Dhttp.agent=hogehogeとかやるだけでいける。
0110デフォルトの名無しさん
2007/06/30(土) 02:24:22現在まで読んだ文字数を知る方法はないでしょうか?
読み込んだ文字列の長さを足していけばいいと思ったのですが,
改行が削除されているために,改行コードがCRかCRLFかわからない場合うまく数えられないのです.
0111デフォルトの名無しさん
2007/06/30(土) 02:30:11BufferedReader#readLineではたぶん無理
一文字ずつ読んで行にまとめる処理は自分でやる
0113デフォルトの名無しさん
2007/06/30(土) 02:35:55とりあえず最初の行末端が出るまでは一文字ずつ読んで
改行がLFかCRLFかCRかを判断したら
あとはreadLineで読んで改行の種類に応じて行ごとに文字数に1か2を足してやる手もある
0114110
2007/06/30(土) 02:37:43BufferedReaderで現在まで読んだバイト数(現在位置)も知ることは無理でしょうか?
0115108
2007/06/30(土) 02:44:38継続的にUAの改変をしたいのでプログラム中に書こうと思ってます。
試した処理が
URL url = new URL(String address);
URLConnection connection = url.openConnection(); //オブジェクト取得
connection.setRequestProperty("User-Agent", "hogehoge"); //ヘッダーセット
connection.connect(); // 接続
という風にやってます。
その後は、BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));で読み込んでreadlineでデータ読み込むとやっぱりUAがJAVAのままになってます。
ぐぐって出てくるサイトはPOST処理について書かれてるものばかりで。
URLで中身取得するだけなら、これ以上処理はないと思ってるのですが。
connect()前にヘッダー送られてるのでしょうか…
0116デフォルトの名無しさん
2007/06/30(土) 02:52:28実際にデータを読むときはなんでURLからストリームを開いてるの?
0117デフォルトの名無しさん
2007/06/30(土) 02:54:22for(;i<bln;i++){
}
と
if(blp==0){
i=2;}
for(i=2;i<bln;i++){
}
は一緒の意味?
0118デフォルトの名無しさん
2007/06/30(土) 02:56:18多分無理っぽい。自分でカウントするしかなさそう。
>>115
わざわざconnectしなくてもデータを読もうとした時点で勝手に接続してくれるよ。
0119デフォルトの名無しさん
2007/06/30(土) 02:58:50blpの値によって違う
0121デフォルトの名無しさん
2007/06/30(土) 03:01:21もしblpが0と1の2種類の場合、0と1でどう違うのでしょうか?
0122デフォルトの名無しさん
2007/06/30(土) 03:09:070123デフォルトの名無しさん
2007/06/30(土) 03:10:59実際に実行してみて分かりました!
0124108
2007/06/30(土) 03:15:28ありがとうございます、UA表示が変わりました。
どうやら、本でURL先のデータ表示だけをする部分に
ttp://journal.mycom.co.jp/column/java/054/index.html
ここのヘッダー取得処理を加えたときに、ごっちゃになったようです、すみません…
>>118
私も最初はconnect()いらないんじゃないかと思ったんですが、ぐぐったときに出たサイトで
// コネクション生成(この時点では、接続されていない)
con=(HttpURLConnection) url.openConnection();
とあったので、そういうものだとばかり思ってました。
ありがとうございました、またがんばろうと思います。
0125デフォルトの名無しさん
2007/06/30(土) 06:27:340126デフォルトの名無しさん
2007/06/30(土) 07:33:530127デフォルトの名無しさん
2007/06/30(土) 08:41:400128デフォルトの名無しさん
2007/06/30(土) 21:08:43Windows アプリケーションでいうところの INI ファイルみたいな
設定ファイルって Servlet にはないの?
properties ファイルはローケール依存テキストを記述するものだから
適当じゃないよね?
0129デフォルトの名無しさん
2007/06/30(土) 21:18:21グーグル先生に「Servlet 設定ファイル」で聞いてみろよ。
http://www.google.co.jp/search?q=Servlet+%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
0130128
2007/06/30(土) 21:25:19調べたんだけど、どこか分からないんです。
コンテキスト ファイルでもないし、server.xml でもないし、web.xml でもない。。。
外部プログラムのパスとか、アップロードしたファイルを記録するディレクトリとか、
Servlet を配備するユーザーが書き換えれるような設定ファイルって、どれになるのかな?
0131デフォルトの名無しさん
2007/06/30(土) 21:31:00そういうことか
アプリケーション自体の設定ファイルなんぞ、読める場所に好きな形式で書いておけばいい
変更も少なく数も少なければ、web.xmlに記述するのもあり。
よくやるのは、設定ファイルのパスをweb.xmlに書いておき、実際の設定ファイルは別にするという形
そうすればテスト用の設定ファイルとかを使い分けるのが楽。
形式はXMLにするかプロパティファイルにするか独自形式か、それは好きにしてくれ
0133デフォルトの名無しさん
2007/06/30(土) 21:43:49ありがとう。とても参考になったよ。
0134デフォルトの名無しさん
2007/06/30(土) 23:23:18しかし、ボタンを2回以上押すとアイコンの後ろに「...」のような文字が入ります。 ちなみに、setActionCommand()も
同時に使っています。 何かのバグでしょうか?
アプリは簡単な動画再生プログラムでPlayとPauseのアイコンを入れ替えるだけのものですが、何か解決方法は
ないでしょうか?
0135デフォルトの名無しさん
2007/06/30(土) 23:27:30ソースみなきゃ何ともいえないけど・・・
JButton playButton = new JButton();
JButton pauseButton = new JButton();
と個別にインスタンス作って、setEnableで制御した方が確実な気がする
どうしても1ボタンで済ませたいのであれば、setVisibleで見せる/見せないの制御を行うほうが自然
013688
2007/06/30(土) 23:50:05値渡し、参照渡しの理解で苦しんでます。
値渡し、参照渡しは言語によってあったりなかったりぽいのですが、これは理屈どうこうっていうより「java仕様」って事で覚えた方がいいのでしょうか?
なぜ値渡し、参照渡しと別々の考え方なのかが理解できないでいます。
「やさしいjava」曰く、クラス型変数は代入=参照渡しだから〜という内容で、int型等を「基本型」とくくって「基本型の変数は値渡し」と書いてあります。
他のサイトやwikiで調べてみると、基本型とかクラス型とか、そういう考え方は一切なく、intやdoubleは値渡しで処理して、String型等は参照渡しがjavaの仕様と書いてあるような気がしました。
やさしいjavaで「クラスで生成された変数は参照型の処理をされる」と書いてありますが、自分のコードのクラスで生成した変数だろうが、クラスライブラリ使用での変数だろうが、
どっちもクラス型変数のような気がして、いまいち「int型やdouble型は基本型の変数」というのが納得いきません。
int型やdouble型等は値渡し、String型は参照渡し みたいな感覚で覚えていいのでしょうか?
うまく説明できてい上に初歩すぎる質問かもですが、よろしくお願いします。
0137デフォルトの名無しさん
2007/06/30(土) 23:57:57http://www.google.com/search?num=50&hl=ja&lr=lang_ja&ie=UTF-8&oe=sjis&q=%E3%82%88%E3%82%8A%E6%AD%A3%E7%A2%BA%E3%81%AB%E8%A8%80%E3%81%86%E3%81%AA%E3%82%89%E3%81%B0%E3%80%8C%E5%8F%82%E7%85%A7%E3%82%92%E5%80%A4%E6%B8%A1%E3%81%97%E3%80%8D
0138デフォルトの名無しさん
2007/07/01(日) 00:11:09やさしいJavaはろくな目にあわないなw
Javaでのプリミティブ型は特殊だという認識を持った上で、メソッド呼び出しの時は全てインスタンスの参照が渡されると認識するならばいいんじゃないか?
納得して先に進みたいならば、この辺に結構詳しく書いてあった
ttp://d.hatena.ne.jp/Strada/20070216
013988
2007/07/01(日) 00:27:18仕組みについては理解できました!
クラス型の変数というところでひっかかっていたようです。
クラスで作った変数1=変数2だと参照型というのは理解していたのですが、
やさしいjavaで「String n」の引数に「一号車」と代入する時はクラス型変数なので参照型 という記述があって、
なぜString型がクラス型の変数なのか?とワケワカラン状態になってました。
プリミティブ型が特殊っていう考え方が非常にわかりやすかったですw
値渡しが基本で、参照渡しが特殊 ではなくて、参照渡しばっかりのjavaの中でプリミティブ型は値渡しが行われてる仕様 って事でいいんですね。
勉強になりました。ありがとうございました!
0140デフォルトの名無しさん
2007/07/01(日) 00:36:18クラス型変数?
違和感を感じたのはそこか!
「クラス型変数なので参照型」は逆だ、逆。
「インスタンス(正確にはその参照)は、参照型変数に代入できる」が正しい
だから、参照型変数の型は必然的にクラスになる
インスタンスの存在に関する記述がテキトーなんだな、その本は
0141デフォルトの名無しさん
2007/07/01(日) 00:38:14#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION 。。。
というメッセージがコンソール画面に出て来るときがあります。
Eclipseのデバッグ画面には、このエラーが発生した箇所が出てこないので、どこで発生しているのか分かりません…
このエラーメッセージが出た場合、とりあえずプログラムのどこをチェックすべきですか?
ACCESS_VIOLATIONってことなので、C言語だったらポインタ演算してる箇所とかをチェックするんですが…
0142デフォルトの名無しさん
2007/07/01(日) 00:39:090143デフォルトの名無しさん
2007/07/01(日) 00:45:57Swingとかマルチスレッド関連?
どの手のアプリケーション実行していての話だろうか。
デバッグ時だと予期せぬ状態としか言いようがないな
0144デフォルトの名無しさん
2007/07/01(日) 00:54:24それが出たときは飼い犬に咬まれたと思って諦めろ
0145デフォルトの名無しさん
2007/07/01(日) 01:02:59今はSwingとマルチスレッド両方使ってます。Swingだけで出てきたこともあります。
エラーが発生した後、logファイルが吐かれてて、そこには
Current thread (0x00837440): JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=5020]
と書かれてました。自分で作ったスレッドで発生したわけではないのかな…
>>144
諦めろ…ということは、原因を突き止めるのがすごく難しい問題だったり、まさかJavaの仕様だったりするんですか…
発生確率は1/10くらいなので「仕様」ということにしておきます。
0146デフォルトの名無しさん
2007/07/01(日) 01:09:08マルチスレッドだと単純に不安定になるよ
デバッグでなく発生するのであれば、別の問題だろうけど
そうでないのであれば原因を突き止めるのはデバッグモードを創れるレベルが要求されそうな予感
0147デフォルトの名無しさん
2007/07/01(日) 01:12:19>値渡しが基本で、参照渡しが特殊 ではなくて、参照渡しばっかりのjavaの中でプリミティブ型は値渡しが行われてる仕様
値渡しが全て。
プリミティブは、その値自身が、値渡しされる。
オブジェクトは、そのオブジェクトへの参照が、値渡しされる。
■ このスレッドは過去ログ倉庫に格納されています