09/04/14 20:20:57
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 URLリンク(pc11.2ch.net)
Webプログラミング URLリンク(pc11.2ch.net)
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
URLリンク(www.wikiroom.com)
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド124【歓迎】
スレリンク(tech板)
次スレは>>990あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
URLリンク(www.wikiroom.com)
2:デフォルトの名無しさん
09/04/14 20:21:19
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 8
スレリンク(tech板)l50
■ SWT は --
Java 高速GUI SWT 3
スレリンク(tech板)l50
■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part19
スレリンク(tech板)l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 8
スレリンク(tech板)l50
■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 67 ★★
スレリンク(tech板)l50
**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
URLリンク(sdc.sun.co.jp)
■ J2SE 5.0 (1.5.0)
URLリンク(java.sun.com)
■ Java SE 6
URLリンク(java.sun.com)
**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
URLリンク(www.java.com)
3:デフォルトの名無しさん
09/04/14 20:26:14
早く潰れろ。糞スレ。
4:デフォルトの名無しさん
09/04/14 20:26:33
俺が書いたからこのスレは終了記念日
5:デフォルトの名無しさん
09/04/14 20:40:53
double i = 1.0/0.0
これゼロ除算で割り込みにならないんですね。
初めて知った。
6:デフォルトの名無しさん
09/04/14 22:50:49
前スレ見て xhtml1.1 の DTD 付けて解析してみたけど
<?xml version="1.0" encoding="UTF-8"?>
<html version="-//W3C//DTD XHTML 1.1//EN" xml:lang="ja" xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">
<head profile="" xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type" xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)"/>
<title xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">TITLE</title>
<link href="style.css" rel="stylesheet" type="text/css" xml:space="preserve" xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)"/>
</head>
<body xml:space="preserve" xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">
<h1 xml:space="preserve" xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">TITLE</h1>
<p xml:space="preserve" xmlns="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">
...
これはひどいwww
7:デフォルトの名無しさん
09/04/14 23:29:55
名前空間とかはHTML要素にひとつずつだと思ったが、これは予想外だなw
8:デフォルトの名無しさん
09/04/14 23:47:02
まあ継承するから別にいらないんだけどご丁寧に付けてるね
9:デフォルトの名無しさん
09/04/15 18:33:56
JavaでMIDIを演奏してるんですが、
\lib\audioにあるsoundbank.gmを消したときに
音質が良くなる場合と全く音が鳴らなく場合があるんですが
原因は何でしょうか
10:デフォルトの名無しさん
09/04/15 19:10:27
よくなる場合→別の場所にあるサウンドバンクが見つかった。
ならない場合→サウンドバンクが見つからなかった。
11:デフォルトの名無しさん
09/04/15 20:44:47
public static void main(String[] args)
って書いてるんですけど、
public static void main(String args[])
この様な書き方も有る様ですが
実際何が違うんですか?
12:デフォルトの名無しさん
09/04/15 20:47:41
下はC言語スタイルで、C言語、C++といったJavaより前に出来た言語のスタイル。
ソースコード上では下はそれらと互換があるけど、Javaでは上が正解だから忘れて良い。
ちなみに違いはない。
13:デフォルトの名無しさん
09/04/15 21:04:07
>>11
下は C から来た人に馴染みがあるというだけの話。
C は型指定と配列指定が別物だったから配列と非配列をまとめて char a, b[20]; のように宣言できた
(だから変数の後に [] を付けていた)。ただ Java が出る前には同一宣言内にポインタや配列を
混在させるのはよろしくないね的な風潮ができあがって、Java では配列指定を型宣言に含めて
char[] a, b; か char a, b; のどちらかしかできなくなった。
どちらで書いてもコンパイラの解釈は同じだが Java 流儀だと前者で書く。
14:デフォルトの名無しさん
09/04/15 22:41:17
public class test {
public static void main(String[] args) {
/* [] を変数名の前に書く場合と後ろに書く場合 */
char[] data = new char[10]; // (一般的な書き方)
char u[], v; // uのみ配列
char x, y[]; // xのみ配列
// char s, []t; // コンパイルエラー ×
/* 変数を同時に2個宣言する */
char[] o, p; // oもpも配列
char []q, r; // qもrも配列 (変な書き方)
char[] w, z[]; // wは1次元配列、zは2次元配列
w = new char[10]; z = new char[10][10];
} }
15:デフォルトの名無しさん
09/04/15 22:54:09
public class sample
{
public static void main(String[] args)
{
int hokan = 0;
int[] Num = {10,9,8,7,6,5,4,3,2,1};
for(int i = 1; i<Num.length; i++)
{
if(Num[0]<Num[1])
{
hokan = Num[0];
Num[0] = Num[1];
Num[1] = hokan;
}
}
for(int i = 0; i<10; i++)
{
System.out.println(i);
}
}
}
初心者で申し訳ないです、1~10までの数字を逆に並び替えたいのですが
うまくいきません、間違っているところがあればご指摘お願いします。
16:デフォルトの名無しさん
09/04/15 23:00:33
java.util.Stack使えよ
Don't repeat yourself.
17:デフォルトの名無しさん
09/04/15 23:08:54
>>15
まず i が 1~9 までの 9 回しかループしていない。それから Num[0] は初期状態で 10 のところで
Num[1] は 9 のところ。つまりループしながら配列内のその 2 箇所の入れ替えしかできていない。
18:デフォルトの名無しさん
09/04/15 23:10:34
ひっかけだろうwwww
index回してないし、最後のsysoutだけじゃん。やってるのは。w
19:デフォルトの名無しさん
09/04/15 23:12:23
>>15
>初心者で申し訳ないです、1~10までの数字を逆に並び替えたいのですが
>うまくいきません、間違っているところがあればご指摘お願いします。
public class sho125_15
{
public static void main(String[] args)
{
int hokan = 0;
int[] Num = {10,9,8,7,6,5,4,3,2,1};
for(int i = 1; i<Num.length; i++)
{
if(Num[i-1]>Num[i])
{
hokan = Num[i-1];
Num[i-1] = Num[i];
Num[i] = hokan;
}
}
for(int i = 0; i<10; i++)
{
System.out.println(Num[i]);
}
}
}
20:デフォルトの名無しさん
09/04/15 23:17:11
>>19
それ 9 8 7 6 5 4 3 2 1 10って表示されね?
21:デフォルトの名無しさん
09/04/15 23:29:29
数値をソートしたいのか配列のインデックスを逆転させたいのかもはっきりしないしな。
int[] Num = {10,9,8,7,6,5,4,3,2,1};
Arrays.sort(Num);
System.out.println(Arrays.toString(Num));
22:デフォルトの名無しさん
09/04/15 23:33:44
Mainクラス(中略)
public void run() {
Iterator it = effects.iterator();
while(it.hasNext() == true) { // ここでエラー
Effect ef = (Effect)it.next();
ef.update();
}
}
public void effectAdd(int effectNo) {
effects.add(new Effect(this, effectNo));
}
----------
Effectクラス(中略)
public Main m;
Effect(m) {
this.m = m;
}
public void update() {
if(ある条件) m.effectAdd(effectNo);
}
----------
とあるゲームを作っていて、上記のようにエフェクト追加、情報更新処理を行っているんですが、エラーが出てしまいます。
少し調べてみたところ、IteratorはhasNextで要素を探している時にaddするとエラーになることが分かりまた。
こういう場合は配列とか、他のリスト構造(?)にするしかないんでしょうか?
23:デフォルトの名無しさん
09/04/15 23:38:46
するしかない。
Iterator it = new ArrayList(effects).iterator();
ただしそれがそのプログラム設計的に妥当なのかは別の話。
24:22
09/04/15 23:38:53
>>22のプログラムにおかしな点があったので修正します。
ちなみにここで見やすいようにスペースを全角にしてます。
Mainクラス(中略)
private ArrayList effects = new ArrayList();
public void run() {
Iterator it = effects.iterator();
while(it.hasNext() == true) { // ここでエラー
Effect ef = (Effect)it.next();
ef.update();
}
}
public void effectAdd(int effectNo) {
effects.add(new Effect(this, effectNo));
}
----------
Effectクラス(中略)
public Main m;
Effect(Main m) {
this.m = m;
}
public void update() {
if(ある条件) m.effectAdd(effectNo);
}
----------
25:デフォルトの名無しさん
09/04/15 23:42:19
>>23
そうですか、分かりました。
ものすごい早いレスありがとうございました。
26:デフォルトの名無しさん
09/04/15 23:44:17
イテレータは元コレクションのビューだから、
元のコレクションが変更された時点で操作不能になる。
CopyOnWriteArrayListってのがあるからそっち使えば?
こっちはビューをコレクションを切り離す事が出来る。
27:デフォルトの名無しさん
09/04/15 23:45:19
>>24
ArrayListじゃなくてLinkedListをこんな風にして使え
List list = Collections.synchronizedList(new LinkedList(...));
28:19
09/04/16 01:05:05
>>15
public class sho125_15
{
public static void main(String[] args)
{
int hokan = 0, i, j;
int[] Num = {10,9,8,7,6,5,4,3,2,1};
for(i = 1; i<Num.length; i++) // 比較する1個をまず選ぶ
{
for(j = i; j<Num.length; j++) // 選んだ数字を以降の全ての数字と比較する
{
if(Num[i-1]>Num[j])
{
hokan = Num[i-1];
Num[i-1] = Num[j];
Num[j] = hokan;
}
}
for(j = 0; j<10; j++) // 毎回確認する
System.out.print(Num[j]+" ");
System.out.println();
}
for(i = 0; i<10; i++) // 最終結果の表示
System.out.println(Num[i]);
}
}
29:デフォルトの名無しさん
09/04/16 05:04:52
>>9
もしWindowsなら、
soundbankを消すとMSGSが鳴る。MSGSはデフォのsoundbankより波形容量が4倍あって、その分音質がいい。
Vista以降のMSGSは、XGリセットやBankSelectですぐに黙り込む。
30:デフォルトの名無しさん
09/04/16 06:35:07
初学者なんですが、ファイルを作るところまで学習して、
エクスプローラのアドレスバーからパスをコピーして
いろんなところにファイルを作ったりしてましたが、
Windowsのパスってパスデリミタが\ですよね。パスが深いと
いちいち\\とエスケープするのが面倒になってきました。
で勉強にもなるかなと、引数にフルパスを取って
(ソース中にハードコーディングして埋め込み)
\を\\にするようなメソッドを書いてみようとしましたが、
ソース中に\があるとコンパイルさえしてくれません(Eclipse3.2)。
そこで質問なんですが
1) 標準クラスライブラリでこのような、自動エスケープシーケンスとも
いえるような機能ってあるのでしょうか。あったら教えてください。
2) そもそもソール中に\は存在してはいけないのでしょうか?
うまく回避する方法はないのでしょうか。
3) クラスの自分自身の絶対/相対パスを返してくれるメソッドは
ないものでしょうか。Class c = this.getClass();から始まるサンプル
を見つけましたが、IDE上ではthisが赤い波線になり「staticコンテキストでは
thisを使用できません」と全く意味が分かりません…。
結局何がやりたいかというと、キーボードから1を入力するとD:\myFolder1にファイルを作成、
2を入力するとD:\myFolder2に…というようにファイルを選択された場所に作る、
という機能のまとまりを作成してみたいのです。
よろしくご教示ください。お願いいたします。
31:デフォルトの名無しさん
09/04/16 08:10:02
鉢物の植え替えの時、よく耳にするのは、”根鉢を崩さないで植え替えるように・・・...
32:デフォルトの名無しさん
09/04/16 09:14:00
>>30 2)
char a = '\\';
String ss = "\\";
とする。2個の\\なら、4個にする。
33:デフォルトの名無しさん
09/04/16 13:50:08
>>30
それは「キーボードから1を入力すると~」というプログラムとは別に「ソースに貼り付ける前に
¥ を ¥¥ にエスケープする」プログラムを作らなければならない。コンパイル時にエスケープされて
なきゃいけないのを実行時にエスケープするコード書いても仕方がない。
クリップボードを監視してコピペ前にエスケープするプログラムでも書いてみたら?
34:デフォルトの名無しさん
09/04/16 16:21:28
Vector は raw 型です。総称型 Vector<E> への参照は、
パラメーター化する必要があります
コードを打ったら↑なwarningが出るんだけど、これは放っておいて
いいのですか。
35:デフォルトの名無しさん
09/04/16 16:25:46
>>34
いいんじゃね
36:デフォルトの名無しさん
09/04/16 16:26:41
無視しても実害はないけど
入れる物が決まっていない時: Vector<?> foo = new Vector<Object>();
入れる物が決まっている時: Vector<String> foo = new Vector<String>();
下のように書けば間違えて foo に Integer 入れようとした時にコンパイラが検出してくれる。
あと特に理由がなければ Vector なんて遺物使わないで ArrayList 使いなさい。
37:デフォルトの名無しさん
09/04/16 16:29:31
DocumentBuilderFactory に Schema オブジェクトを 1 つだけ設定できるようだけど
複数の XML Schema が混在する XML の場合は DOM にした後にテメェで Validator
動かさなきゃだめかね。
38:デフォルトの名無しさん
09/04/16 16:31:51
うーむ、javaは難しいなあ
本に載っていることを、ただただ純情にやっていってます。
>Vector なんて遺物使わないで ArrayList 使いなさい
↑こういうことが分かるようになりたいものです。
39:デフォルトの名無しさん
09/04/16 17:46:46
>>38
> ↑こういうことが分かるようになりたいものです。
Vector, ArrayList の話に限っていえば、参照している本が古すぎるだけってこと
40:デフォルトの名無しさん
09/04/16 19:10:28
まーたArrayList厨か
41:デフォルトの名無しさん
09/04/16 19:31:28
迷うくらいなら思考を停止してArrayListを使っとくのも悪くない。
初学者がSetの代わりにArrayListを使ってても笑って許せるというもの。
42:デフォルトの名無しさん
09/04/16 19:36:38
VectorとArrayListの違いがわからんならArrayList使えばいいと思うけど。
43:デフォルトの名無しさん
09/04/16 19:38:26
ぶっちゃけPriorityQueueとか覚えても使う機会がなさ過ぎて、
いざ実践となると、うっかり自分でソートしてたりするから基本形だけ覚えればいい。
44:31
09/04/16 20:43:08
>>32-33
レスありがとうございます。
プログラム実行中にIDEのコンソールから
File file = new File(str); へ
C:\test\test1.txt を
タイプまたはコピペで渡すことでファイルは作成できました。
コンパイル後の実行中には\は存在していいんですね
(デバッガではstr "C:\test\test1.txt"となっていましたし)。
今までの学習の復習としてこれからゴテゴテと機能を追加予定
ですのでその時に>>32-33お二方のアドバイスを活かしたいと
思います。クリップボード監視とか皆目見当がつきませんが…。
別の質問させていただいていいでしょうか。
コンソールアプリでユーザがqを押すまで繰り返すという処理を
do{
(何かの処理)
if (isQuit.equals("q")){
System.out.println("終了=q \nもう一度=q以外\nをタイプしてリターン");
break;}
}while (true);
としているんですがこれって良くないのでしょうか。たしかに break; でwhile
ループを抜けるとか本筋じゃない気がしますが、理想的にはどうすれば
まっとうなのでしょうか。
ご教示いただければたすかります。
よろしくお願いいたします。
45:デフォルトの名無しさん
09/04/16 20:46:26
while(true) に break の組み合わせなんて普通に使うが。
while(true){
int len = in.read(buffer);
if(len < 0) break;
out.write(buffer, 0, len);
}
46:デフォルトの名無しさん
09/04/16 20:59:24
Classクラスというのが登場した。
いままで出てきたクラスと毛色が違う
解説を読んでも概略する把握できないですねえ
何をやっているんでしょうか
47:31
09/04/16 21:01:26
>>45
早速のレスありがとうございます。
そうですか安心しました。
どこかのページにwhileループは使わないで
ifをつかって(?理解不能で忘れました)
やったほうがいいとかあったものですから
心配になっていました。
ありがとうございました。
48:デフォルトの名無しさん
09/04/16 21:10:25
>>46
メタプログラミングとか言うんだけど、まぁクラスの情報を持ってたり、普通はコードを書いて
コンパイルしなきゃいけない事をプログラムの実行中にやったりするためのもの。
例えば
List list = new ArrayList();
list.add("foo");
は、こうでも書ける (適当)。ここで指定するクラス名やメソッド名はただの文字列なので
ぶっちゃけユーザに入力させたものでも良い。
Class<?> clazz = Class.forName("java.util.ArrayList");
Object obj = clazz.newInstance();
Method method = clazz.getMethod("add", Object.class);
method.invoke(obj, "foo");
まぁ最初のうちは「クラス情報クラス」とでも思っておけば良い。
49:デフォルトの名無しさん
09/04/16 21:48:27
>>48
なんとなくわかりました。
Class、Object、Methodというクラスも確かにありました。
コードの中でコードを生成するんですね。
ありがとうございました。
50:デフォルトの名無しさん
09/04/16 21:57:18
APIというのがあって、そこに全てのクラスが載っているのを知りました。
大量のクラスがあるけど、全部覚える必要があるんですか、それとも、
よく使うのはほぼ決まっていて、経験と慣れみたいなもんですか。
全クラスの何パーセントくらいを使えるようになれば社会に出て通用
するんでしょうか。
51:デフォルトの名無しさん
09/04/16 22:04:30
>>50
java.lang, java.util, java.io あたりは何を作るにも必須。あとは自分が作る
プログラムの専門分野ごとに異なる。
業務系なら java.sql, javax.xml に JEE あたりが必須になってくるし、ゲームは
よく知らんけどベタな AWT や javax.sound が必要になるんじゃないのか。
52:15
09/04/16 22:05:44
レス遅れました、ご指摘戴いた部分を参考に完成することができました。ありがとうございます。
53:デフォルトの名無しさん
09/04/16 22:06:23
初心者くらいですが、これって作りたい物に合わせてAPIで調べて
それを入れていく感じ・・・でよろしいでしょうか?
それとも、逆引きAPIみたいなのを調べて行くんでしょうか。
ワタシは、初心者本とアルゴリズム本を精読した程度ですが。
54:デフォルトの名無しさん
09/04/16 22:08:21
正直 CORBA 関係は SE コアに入れなくても良かったと思う。
55:デフォルトの名無しさん
09/04/16 22:12:03
>>53
最初の頃はまず目的 (やりたい事) に対する手段 (どれを使えばいいか) が分からないだろうから
逆引き API みたいなのが良いんでないの。そのうち「これ系の機能はこのパッケージ」っての
が分かってくるから。
56:デフォルトの名無しさん
09/04/16 22:21:55
Integer.parse()で"-1"とかは当然認識できるものとして、
"+1"がエラー吐くのがどうも納得いかない。
というか、文字列をサクッと計算してintに戻してくれるようなAPIはないもんか。
57:デフォルトの名無しさん
09/04/16 22:37:58
>>56
つ javax.script
58:デフォルトの名無しさん
09/04/16 22:40:56
正規表現通してからparseIntすると楽
59:デフォルトの名無しさん
09/04/16 22:43:46
Scripting API は環境依存だろー。Mac だと Rhino どころか JavaScript ですらなく
Apple Script だぜ?
XPath をうまく使えば四則演算程度ならおk。
60:デフォルトの名無しさん
09/04/16 22:47:17
>>56
import javax.script.*;
public class Hoge {
public static void main(String[] args) throws ScriptException {
String expr = "+1";
new ScriptEngineManager().getEngineByName("ECMAScript").eval("print(" + expr + ")");
//new ScriptEngineManager().getEngineByName("ECMAScript").eval("print(" + args[0] + ")");
}
}
61:デフォルトの名無しさん
09/04/16 22:50:58
>>56
javaccとかantlrとかでパーサを作れば?
自分勝手に使いやすいように仕様決められるし。
62:デフォルトの名無しさん
09/04/16 23:32:50
Logging API って log4j みたいに起動時のシステムプロパティに設定ファイル指定したりできないの?
63:デフォルトの名無しさん
09/04/16 23:41:14
四則計算くらい自分でパースすればいいんじゃないだろうか。
64:デフォルトの名無しさん
09/04/16 23:55:07
四則演算くらいなら手書きでパーサを作っても大した手間でないけど
56がどんな文字列をパースしたいか次第だな
65:デフォルトの名無しさん
09/04/17 00:35:00
あるある
66:デフォルトの名無しさん
09/04/17 01:17:51
>>62
Logging APIに関連するシステムプロパティはLogManagerのドキュメントに説明がある。
Properties形式のプロパティファイルならjava.util.logging.config.fileで指定できる。
67:デフォルトの名無しさん
09/04/17 02:24:06
あるサイトの、IDやパスを自動的に入れて、ボタンを押し、
その中のデータを持ってくる方法ってありますか?
データを持ってくるのは楽なんだけど、ボタンを押すのが、、、もしかしてJavascript?
68:デフォルトの名無しさん
09/04/17 02:39:01
最後の一文のせいで誰もが反応に困る質問に変化したな。
69:デフォルトの名無しさん
09/04/17 02:39:09
67だけど
ごめん、自己解決した。ClickってJavascriptにあった。。
70:デフォルトの名無しさん
09/04/17 02:39:42
ブラウザ操作の自動化という事なら Robot について調べれ。
シナリオ通りにリクエスト投げまくって最後の結果を取りたいというのなら Apache の JMeter (だっけ?) でも使え。
71:デフォルトの名無しさん
09/04/17 02:42:58
>>70
ありがとう
そうです。自動でデータを持ってきて、DBに入れるJava作ろうと思ってました。
DB入れるのは簡単だったんだけど、ボタン押すことで考えが止まってました。
72:デフォルトの名無しさん
09/04/17 02:46:32
ボタンを押すというGUI上のアクションじゃなくて、
formのactionにだな・・・、まあ解決したんならいいか。
73:デフォルトの名無しさん
09/04/17 04:07:56
トレードロボット基本コンポーネントパッケージ API仕様
これかぁ。だよなぁ。
74:デフォルトの名無しさん
09/04/17 04:10:31
それはそれで興味あるが違う。AWT の Robot クラス。
URLリンク(java.sun.com)
75:デフォルトの名無しさん
09/04/17 04:17:29
んー「トレードロボット」かw
変なところへ行っちゃったっぽいなあ
深夜にいろいろありがとう
76:デフォルトの名無しさん
09/04/17 14:34:55
暴走して追証食らわないようになwww
資金は有限。
77:デフォルトの名無しさん
09/04/17 15:20:05
信用できないものに信用取引を任せなければ問題ない
78:デフォルトの名無しさん
09/04/17 15:33:06
当分現物買いの機会はなさそうだけどな
79:デフォルトの名無しさん
09/04/17 17:35:09
java空売りしてmsft買っとけ!
80:デフォルトの名無しさん
09/04/17 19:27:37
javap が出力するヘッダファイルってプラットフォームによって変わったりする?
81:デフォルトの名無しさん
09/04/17 19:29:48
プラットフォーム毎にデファクトスタンダードな環境があるから、変わってもおかしくはない。
COFFだとかOMFだとか、WINENTRYだとかstdcallだとか色々あるしね。
82:デフォルトの名無しさん
09/04/17 20:31:57
~
List<Integer> list = Arrays.asList(hairetu);
list = new ArrayList>Integer>(list);
~
<A extends Number> void shori(List<A> list) {
for (Iterator<A> itr = list.iterator(); itr.hasNext();) {
こういうのがあるとき、list.iterator()は、Listクラスのiterator()メッソドを使っていると思うのですけど、
listは、ArrayListのオブジェクトなんですけど、ArrayListクラスのメソッドにはiterator()はないです。
先頭にあるList<Integer> list = Arrays.asList(intarray);から紐付いていると思うんですけど、
List<Integer> list = Arrays.asList(hairetu);で Arrays.asListのオブジェクトを生成して、
list = new ArrayList>Integer>(list);でArrays.asListのオブジェクトを生成して参照変数を置き換えています。
それでも尚、Listのメソッドをlistから使用できるのは何故なんでしょうか。
理解できていないですねえ私は。
83:デフォルトの名無しさん
09/04/17 21:02:58
>>82
> ArrayListクラスのメソッドにはiterator()はないです。
ホントにそうかな?ちゃんと調べてみよう。
ヒントはAbstractList。ってほぼ答えじゃん。
84:デフォルトの名無しさん
09/04/17 21:15:05
>>81
そうだよね。プラットフォームのソースと一緒に個別にしておくか。
85:デフォルトの名無しさん
09/04/17 22:44:37
>>80-81間でjavapじゃねえだろとか突っ込みもなくスムーズに話が進んでるのはなぜなんだ
86:デフォルトの名無しさん
09/04/18 00:24:58
BSD出身の人ですか?
87:デフォルトの名無しさん
09/04/18 01:26:01
javah?
88:デフォルトの名無しさん
09/04/18 01:33:42
質問です。
■やりたいこと
m∈Z、n∈Nに対して、
0以上n未満の範囲のmod nの値を取得したい
■問題
%で取れると思ったのですが、
(-8) % 5という演算では、-3という負の値が返って来てしまいます。
(期待している値としては、2です。)
(m%n<0)?m%n+n:m%n
とするしかないでしょうか…?
89:デフォルトの名無しさん
09/04/18 02:00:45
つ (int)Math.IEEEremainder(-8, 5)
90:デフォルトの名無しさん
09/04/18 02:11:14
>>89
有難うございます。実現できました。
91:デフォルトの名無しさん
09/04/18 02:13:30
システムプロパティの "os.name" や "os.arch" の一覧てどこかにないですか?
92:デフォルトの名無しさん
09/04/18 02:16:21
システムプロパティ取得してリストすればいいよ
93:デフォルトの名無しさん
09/04/18 02:22:59
いえプラットフォームごとの値の方をば。
94:デフォルトの名無しさん
09/04/18 02:29:29
そりゃ実行環境固有の文字列になるだろ。
何が目的か言った方が早いぞ。
95:デフォルトの名無しさん
09/04/18 02:36:54
>>83
継承してました。ありがとうございました。
int m = 10
Integer[] hairetu = new Integer[m];
for (int i = 0; i < m; i++) { hairetu[i] = i; }
List<Integer> list = Arrays.asList(hairetu);
list = new ArrayList>Integer>(list);
10個の数字を入れられる入れ物をつくって、Integerクラス型の変数hairetuにポインタ代入して、
for文で実際に入れ物に値を入れて、
ArraysクラスのasListメゾットの引数に中身が入った入れ物のポインタを渡して、
Listクラスの変数listに戻り値のポインタを代入して、
そのポインタをArrayListクラスのコンストラクタ引数に渡して、
オブジェクト生成して、そのポインタをlistに代入している。と思うんですけど、
よく分からなくなりました。
0~9までの数字が入ったhairetuがあって、それがメモリ上にあって、それを参照するのに、
変数にポインタが入ってて、結局最後には、listという変数から、配列が見えるんだけど、
Integerとか、Arraysとか、ArrayListとか、違ったクラスのオブジェクトを経由するけど、
各クラスにはそれぞれのフィールドやメソッドなどがあるんだけど、
それぞれに、10個の配列(hairetu)は、実体として、どのように紐ついているんでしょうか。
96:デフォルトの名無しさん
09/04/18 02:41:35
ぽいんたw
97:デフォルトの名無しさん
09/04/18 02:57:55
>>95
そういう書き方であれば、答えは、なんとなくあってる。
詳しい実装はソースを見て勉強してください。
基本的にAPIdocument に書いてあることが行われるように実装されています。
ArrayListでの固有機能が必要でなければ、最後の行は必要ないと思うんだ。
98:デフォルトの名無しさん
09/04/18 03:25:43
>>95
Arrays.asListは文字通りas-listで、配列をListに見立てるだけ。
ArrayListは初期値にListを使ってるだけで、配列は引数から独立してる。(Integer自身は変更無し)
Integer[] intArray = new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<Integer> asList = Arrays.<Integer>asList(intArray);
List<Integer> arrayList = new ArrayList<Integer>(asList);
Comparator<Integer> reversOrder = Collections.reverseOrder();
Arrays.sort(intArray, reversOrder);
↑でasListは9..0となり、arrayListは0..9のまま。
99:デフォルトの名無しさん
09/04/18 03:33:33
>>97
上記では、オブジェクトの参照であるhairetuでもlistでも最後のlistでも、
10個の値が入った入れ物の内容が見れると思うんですけど、
たとえばListくらすであれば今回の場合は、listとして参照できるのは、
10個の値が入った入れ物の内容だけなんでしょうか。
私は、各クラスがインスタンス化されたら、型枠のようなクラスが、
そっくりそのままオブジェクト(実体)としてコピーされると
考えていました。そうなると、たとえばListクラスなら、10個の配列は、
Listオブジェクトの、どこに入るんだろうかと疑問に思う。
肝の部分がまだ見えてないんですよね。