[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 01/06 12:55 / Filesize : 277 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:05:27 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド114【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1207385614/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

45 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:15:08 ]
>>44
Integer[] i = ...;
int[] j = ...;
j[0] = i[0];
みたいにIntegerとintの間ならauto-boxing, auto-unboxingしてくれるはずだが?
どんな代入を行おうとしたんだ?

46 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:19:35 ]
使ってるのが1.4以下だったならこの言語仕様はないから真面目に変換を書かないとだめだが

47 名前:デフォルトの名無しさん [2008/05/13(火) 07:17:12 ]
>>45
DataTableがInteger型です。
int [ ] DataOfSocialStudies= new int [ DataTable[2].length ] ;
for(int i=0;i<DataOfSocialStudies.length;i++){
DataOfSocialStudies[i]= DataTable[2][i].intValue(); ←この部分
}

ぷらっとフォームを確認したらJDK1.4だったんでJavaHotSpotClient VM1.6
ってのにしたんですけどエラーは変わらず出ました・・・


48 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 07:33:13 ]
JDK1.6入れろよ

49 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 16:11:23 ]
>>47
>ぷらっとフォームを確認したら
PCショップか。

50 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:04:29 ]
あれはぷらっとホーム

昔、営団がホームドアを導入したとき、Home Doorと英表記してたのを思い出した。


51 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:09:54 ]
swingスレか迷ったのですが、
コマンドプロンプトを起動+コマンド入力→実行
をJavaプログラム内から行いたいのですが、こういうのは可能なのでしょうか?

52 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:20:05 ]
Runtimeクラスを調べてごらーん

53 名前:デフォルトの名無しさん [2008/05/13(火) 22:14:05 ]
Web系の仕事をしてまもない若輩者です。

最近、上司の教えにより、ようやくsyncronized構文を使ったサーブレットを作成する事が
理解できるようになりました。スレッドについては他にThreadクラス、Runnableインターフェイス等あるみたいなんですが、
とりあえずsyncronizedを覚えてといわれたので上記2つは勉強しておりません。

Web系開発をするにあたり上記2つ(Threadクラス、Runnableインターフェイス)は
必要でしょうか?

よろしくお願いします。



54 名前:デフォルトの名無しさん [2008/05/13(火) 22:47:42 ]
もしかしてResultSetってクエリの結果をオブジェクト内に保持しているんじゃなくて
getXxx()する度にDBに結果を取りに行ってるんですか?

55 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:54:58 ]
1レコード取得するたびにRDBMのカーソルが動くと思っておけばいいんでない?


56 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:04:16 ]
どうせでっかいがちがちのフレームワーク使うことになると思うよ。

57 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:04:50 ]
>>53

58 名前:53 [2008/05/13(火) 23:08:17 ]
>>57
なんですか!?なにかおかしかったですか??

せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。

だから、教えてくれればありがたいんですが。。



59 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:11:55 ]
>>53
お前にはまだ早いというのが上司の判断だろう

60 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:18:55 ]
            ____
         __,,/  _, ----`ヽ
        / _     ___   、\
       / /   i      \   \\
       ,'./       i  ヽ:.   ヽ:.:.. ヽ.ヽ
      ,'/    / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ
       |i .i i  .i /  ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
       |i .i l  :N_, -弋 \弌弋ナ:}:.:}
      |i∧ ', :{ ,ィjモト \  イjミトイイV
       .|  :メヽ.', `ozZ}      izN。ハ::{
        |  :ヾ_! ゝ "゙゙    '  `゙ ハ.:',
      |  :.:_イ .:.ヽ.   (二フ , イ :.:.:!:.ヽ
      / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\
      / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
    / .{. ',ヾ、ヽi .:.:.{ /(^`  |.:.:.:.//: : :.}: . ヽ.
   / /  ) ヽ ヾ、ヽ:.ハ ヤ{   ∧/.-‐'": : |:.:. i ',
  ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、  : : : l:.:.: .ハ ',
  { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
  V | .:.:/:.:|_,ィ' ̄  ヽ三{ `ー-ノ : イ : : :/:.:i.:{  リ
    ヽ:.:{、.:.V     : : ヘ     : : {: : :/:.::∧|
     ヽ! )人    : : :人      : : : / \!
      "  ヽ : : : : :/イ{     :.ノ: : : :.\
          \__///: :\______/: : : : : : : ヽ
           / //: : :|;|: : : : : : i: : : __: : : : ',
             / 、 {;{   |;|   . : i/. : : : : : :|
          / `Y;{. . . .|;|. : : : /i: : : : : : : : :l

なんですか!?なにかおかしかったですか??

せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。

61 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:24:02 ]
>>58
状況がよく分からんが・・・・・

そもそも、synchronizedを使うということは、
マルチスレッドが絡んでる領域だろう

一般論としてマルチスレッドプログラミングは、概念を理解した上で行わないと危険
しくじると簡単にデータの整合性を破壊したり、パフォーマンスを劣化させてしまう
おまけにバグが再現しにくいので修正も簡単じゃないことがある

62 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:26:04 ]
単なる釣りだろ

63 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:26:34 ]
まあJavaでWebならデフォでマルチスレッドだからな



64 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:33:53 ]
サマータイムになったらどうすればいいの?おしえてちょ

65 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:40:51 ]
何がしたいの?

66 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:55:28 ]
質問です

Javaアプリケーションで起動したときに
フレームの上半分にあらかじめ指定していたファイルから
画像を読み込み表示するというプログラムを
作りたいのですがどう作れば良いのでしょうか?

調べてもAppletに関することばかりで困ってます

67 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:58:48 ]
appletで出来るのなら
親をJFrameにすれば?

68 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:00:39 ]
フレームにAppletを貼ったあとinitとstartを呼び出すのも忘れずに。

69 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:14:30 ]
>>67
いえ
Appletでも出来ないんです


70 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:16:26 ]
ということはここでアプリケーションに関する情報を得たとしても作れないってことだ
素直に宿題スレへ行け

71 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:25:08 ]
申し訳ありませんでした
もう少し勉強してきます

72 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:26:03 ]
>>69
で、どこまで調べた?

73 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:32:19 ]
そういや>>68っていう手があったな。
アプレットなんてもう何年も使ってないから忘れてた。



74 名前:51 mailto:sage [2008/05/14(水) 00:44:12 ]
>>52
すいません、寝ちゃって返事が遅くなってしまいました!><
ちゃんと引数まで付けて実行出来るとは、正にやりたかったことです!
おかげさまで非常に助かりました、本当にありがとうございます!!

75 名前:デフォルトの名無しさん [2008/05/14(水) 00:58:52 ]
ぐぐればすぐ出てきそうなもんだろうに…<<66

76 名前:デフォルトの名無しさん [2008/05/14(水) 01:02:34 ]
宿題スレから誘導されて来ました。
乱数を利用して0〜53の値をランダムで配列に格納するプログラムなんですけど、
永久ループになってしまいます。値は一意です。
どなたか助けてくださいm(_ _)m


public class XXX {
public static void main(String[] args) {
/* 変数宣言 */
int[] card = new int[53];
int nn, num;
boolean frg = false; // 配列との比較用フラグ

/* 乱数の発生と格納 */
nn = 0;

while (nn != 52) {
num = (int)(Math.random() * 54);

for (int i = 0; i < nn; i++){

if (num == card[i]) {
frg = true;
break;
}
}

if (frg == false) {
card[nn] = num;
nn++;
}

77 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:03:02 ]

/* 結果の表示 */
String buf;

for (int i = 0; i < card.length; i++){
buf = " " + card[i];
buf = buf.substring(buf.length() - 4);
System.out.println(buf);

if (i % 10 == 0){
System.out.println();
}
}
}

78 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:14:05 ]
>>76
while (nn != 52) {
num = (int)(Math.random() * 54);

for (int i = 0; i < nn; i++){

if (num == card[i]) {
System.out.println("num=" + num);
frg = true;
break;
}
}
でやってみたらどう?

79 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:34:33 ]
>>78
やってみました、
num = で、1〜53までのランダム整数が永久ループで表示され続けます。
フラグ初期値falseがどんな数値でもtrueになってしまっているようで、
それでいてnnが加算されないのが永久ループの原因のようです。
うう、どうしてかわからない・・・。

80 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:37:22 ]
シャッフルって普通こう書くんでは?

public static void shuffle(int[] array) {
shuffle(array, array.length);
}

private static void shuffle(int[] array, int size) {
if (size == 1) return;
int swapIndex = random.nextInt(size - 1);
int temp = array[size - 1];
array[size - 1] = array[swapIndex];
array[swapIndex] = temp;
shuffle(array, size - 1);
}

81 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:44:02 ]
>>80
すません、まだJAVAならいたてのど素人なので
そこらへんは・・・

(int)(Math.random(x + 1))で、0〜Xまでの数値のランダムというのを
ネットで発見したのでそれを使ってやろうと考えています。

82 名前:80 mailto:sage [2008/05/14(水) 02:05:54 ]
誤: int swapIndex = random.nextInt(size - 1);
正: int swapIndex = random.nextInt(size);

死にたい。

>>81
if (frg == false) {
card[nn] = num;
nn++;
} else frg = false;

ってしてみたら?
あとフラグの綴りはflagです。

buf = buf.substring(buf.length() - 4);

は何やってるのかわかりません。
if(frg == false)はif(!frg)でいいじゃん

83 名前:53 mailto:sage [2008/05/14(水) 02:08:44 ]
たびたびすみません。>>53です。みなさん、レスありがとうございました。

上司からデッドロックとかスレッドの概要はおしえてもらいました。データの整合性
とか同期とかも教えてもらいました。

スレッドクラスとかランナブルインターフェイスというのは、スレッドを専門にあつかうクラスであるみたいですが、
Webアプリやるならsyncronizedだけでいいといわれました。でも、せっかく本を買ったので
必要ならやってみたいとおもったりしたわけです。

概念的なものは理解したつもりです。後はクラスの使い方だとおもうんです。
ですから、それを勉強しといたほうが得なのか、Webアプリには必要ないのかを聞きたいんですが…

ぜんぜん、つりではなく、まじめな質問なので、よろしくお願いします。
具体的には、WebアプリでThreadクラスやらRuunableインターフェイスを使う事があるのかないのかを聞きたいです。

どうか、よろしくお願いします。



84 名前:53 mailto:sage [2008/05/14(水) 02:10:08 ]
上司の物言いが軽かったので、真偽のほどをおしえてもらいたいんです。

すみませんが、軽く答えていただければいいのでよろしくお願いします。

85 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:15:59 ]
その辺のめんどくさいことはアプリケーションサーバがやってくれるので、
意識しなくてよいはずです。
そのためのアプリケーションサーバですから。
せっかく本を買ったのなら、アプリケーションサーバのベンダの人達は、
こんなめんどくさいことやってるんだなあ、と考えながら読みましょう。

86 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:17:01 ]
明示的に使う使わないに関わらずjava技術者ならスレッド全般の知識はあって当然
目先のことに囚われて勉強しなくていいやなんて思っているなら死んだ方がまし

87 名前:53 mailto:sage [2008/05/14(水) 02:26:06 ]
>>85
まいど!やんなくていいですか。ありがとうございます。
せっかく買ったのでやってみようとおもいます。ありがとうございました。

>>86
スレッドってそんな大事なんですね。あちきは、単なる1部分くらいにおもってました。
じゃあ、やってみます。

みなさん、回答どうもありがとうございました。多謝です。

88 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:30:21 ]
>>82
あーっ、なるほど。漸くわかりました。
一度既出の値が出たときにフラグがtrueになるのがそのままtrueのまま続いてしまっていたんですね。
どうもありがとうございます。精進します。


>buf = buf.substring(buf.length() - 4);

すいません、説明不足でした。表示する内容を右揃えする制約があったので、
substringを利用して右揃えをする部分ですこれ。

89 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:45:49 ]

◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
system-trading.jp/news/index.php?cID=3

5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。


▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
www.fx-gp.com/about/

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

90 名前:デフォルトの名無しさん [2008/05/14(水) 05:35:57 ]
すみません、別のプロジェクト内のクラスのインスタンスを作ることって可能なんでしょうか?
教科書にスタックの考え方を再現したJAVAプロジェクトと、前置記法のアルゴリズムを再現したJAVAプログラムがあり、
そのうち前置記法のプロジェクトが当然のようにスタックのプロジェクト内のクラスのインスタンスを作っているのですが。
エクリプス上でその部分に赤線が引かれており、実行してもエラーが出ます。
また、別のクラスを呼び出すために「Javaのビルド・パス>プロジェクト」と「プロジェクト参照」の設定」とやらも試してみたのですが、
そうすると赤線部分はなくなったのですが、実行しても何も起こりません。
前置記法のプログラムの最初にはimport java.io.*; とあるのですがそれが関係しているのでしょうか?


91 名前:デフォルトの名無しさん [2008/05/14(水) 07:06:40 ]
すいません。初歩の初歩でつまずきました。。。
実行すると
Exception in thread "main" java.lang.NoClassDefFoundError:
↑はwikiで解決するんですが、
at java.net.URLClassloader$1.run(Unknown Sourse)
at ・・・
at ・・・
と、at何とかが7個出てくるんですがあれはなんでしょうか?
教えてください。

92 名前:デフォルトの名無しさん [2008/05/14(水) 11:42:50 ]
エラー

93 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:25:20 ]
>>91
スタックトレース
例外が投げられた時点でどういうメソッドが呼ばれていたのかの情報
下の行のメソッドが上の行のメソッドを呼んでいることを表す
その場合は例外は一番上のjava.net.URLClassloader$1クラスのrunメソッドで投げられた



94 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:23:05 ]
2006年atex1003第XX回「hoge」(piyopiyo).avi

↑のようなファイル名のファイルが大量に入ったディレクリを引数に指定して、
中のファイル名を第XX回「hoge」.aviにしたいと考え以下のようなものを書いたのですが、
renameToの返却値がfalseになってダメです。
どうしたらちゃんとリネーム出来るのでしょうか?orz
public static void main(String [] args)
{
File dir=new File(args[0]);
String[] str=dir.list();
for(int i=0;i<str.length;i++)
{
File file=new File(args[0]+str[i]);
String newfile=new cui().toRenStr(str[i]);
System.out.print(file.renameTo(new File(args[0]+"/"+newfile)));
}
}

public String toRenStr(String str)
{
Pattern pattern = Pattern.compile(".*第");
Matcher matcher = pattern.matcher(str);
String renstr = matcher.replaceAll("第");
pattern = Pattern.compile("」.*");
matcher = pattern.matcher(renstr);
renstr = matcher.replaceAll("」.avi");
System.out.println(renstr);
return renstr;
}
}

95 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 17:01:05 ]
>>94
renameTo()を呼ぶ前に、file.getName()とnew File(args[0]+"/"+newfile).getName()
を表示して確認。



96 名前:デフォルトの名無しさん [2008/05/14(水) 20:11:53 ]
質問です。
左右マウスホイールって使えないんですかね?
(一般的にはチルトホイールという?)
少し調べたんですけど、全然出てこないですね。

97 名前:デフォルトの名無しさん [2008/05/14(水) 20:51:21 ]
JavaでWebサーバを作成中で、POSTリクエストの受付を可能にしようとしています。
POSTのHTTPリクエストは
「ヘッダ部複数行」
 1空行
「データ部1行」なので、
BufferedReader br = new BufferedReader
(new input StreamReader(socket.getInputStream()));
でHTTPリクエストを取得。そのあとに
while(br.readLine() != (""){
}
String data = br.readLine();
とやれば、データ部をdataに入れられると思ったのですが、
データ部の後ろには改行コードのCRLFがないため、readLineで1行読み込む
ことができないようです。同様にread()でもうまくいきません。

どうにかしてデータ部を取得することはできないでしょうか?

98 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:09:43 ]
>>97
たいていの場合はヘッダにデータ部の長さが入っているので、そのぶん
だけ読めばよろしい。

他、気になるところ:
・HTMLからのフォームPOSTでも、データがMIMEで送られることがあるので、データが1行とは限らない
・データがバイナリのこともあるので、基本的にReader類は使ってはダメ
・chunked-encodingのこともあるので、以下略


99 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:27:47 ]
private InputStream is;
private InputStreamReader in;
これらを使って文字列を読んでるんですが、ファイルが終端に達したかを調べる方法ってありますか?


100 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:32:32 ]
>>99
readメソッドの戻り値がー1

101 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:40:13 ]
>>100
ありがとうございます

102 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 22:50:49 ]
スレチかもしれませんが教えてください。
いまSQL Serverとjavaを繋げる勉強をしています。
INSERTした時間を後で取り出し
after()メソッドで比べたいのですが、そういった処理は可能ですか?
もし可能なら詳しく教えてください。


103 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:01:01 ]
System.currentTimeMillis() または System.nanoTime()



104 名前:デフォルトの名無しさん [2008/05/15(木) 00:19:56 ]
ガベージコレクションは必要なくなったオブジェクトを自動的に開放してくださるそうですが、ストリームも自動開放してくれるのでしょうか?

また、どのタイミングでしてくれるのですか?

105 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:25:52 ]
しません。

106 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:27:08 ]
忘れてた。ファイナライザでクローズしちゃだめだよ

107 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:30:16 ]
ストリームくらいちゃんと閉じろ、馬鹿者

108 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 00:33:55 ]
void hoge() {
InputStream input = null;
try {
  // 略
} finally
  input.close();
  input = null;   // ←
}
}
これが必要か?って話ならばイラネ


109 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 05:30:00 ]
無駄にnull突っ込むのはC#でもよく見かけるんだが、何でこんなに
流行しちゃったの?何か歴史的背景とかあんの?

110 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 08:45:43 ]
>>103
ちょっと難しそうですけど、ありがとうございました。

111 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 09:38:05 ]
>>109
nullを入れたほうがGCの取りこぼしが少ないとか、即座にGCされるから効率的だとか、そういう勝手な思い込みから

112 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 11:19:31 ]
input.close();
input = null;
 System.gc();

しても実際3行目でメモリ解放するかはGCの実装依存なんだよね。

113 名前:デフォルトの名無しさん [2008/05/15(木) 11:47:37 ]
バグの原因になるからだよ
処理しないでそのまま流してしまうコードを書くおっちょこちょいが多すぎて
コンパイラがデフォでnullを入れてないコードをコンパイルするときにエラーをはくようになった





114 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 12:46:18 ]
何言ってんだ?

115 名前:デフォルトの名無しさん [2008/05/15(木) 14:52:45 ]
public class A {
 public static void main(String args[]){
  static int i = 0; // int i = 0;ならエラーにならないのはなぜですか?

116 名前:デフォルトの名無しさん [2008/05/15(木) 15:10:35 ]
>>115
ローカル変数には static つけられないって言語仕様で決まってるから。

117 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 15:21:37 ]
public class A {
 static int i = 0;
 public static void main(String args[]){
これならいいんですね。

118 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:27:21 ]
>>117
それだとiはローカル変数ではなくなる。
staticはインスタンスでなくクラスに属する変数であるという意味だから、
クラスやインスタンス個別でなくスレッドごとに存在しているローカル変数に付けると
意味不明になってしまう。単に、>>115でstaticを外したように書けば、
ローカル変数iとして使えるし、コンパイルも通るはず。
それともクラス変数にしようとして書く場所を間違っただけ?

119 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:37:44 ]
型の静的変換について質問です。
とあるObject型のobj、Sting型のstrがあるとして

((String)obj).charAt(0);
str.charAt(0):
この二つでは、静的変換が入る上のほうが実行速度にペナルティーがあるのでしょうか?

以前やっていたCではペナルティがなかったと思うのですが、Javaだと「静的型変換に失敗した」という例外を投げてくれるようなので、おそらくなかでチェック機構が働いており、ペナルティがあるかなと思っているのですが

120 名前:デフォルトの名無しさん [2008/05/15(木) 17:48:19 ]
>>119
コードや実行環境によるとしか言えない。

例えばループ内で obj が再代入されないなら
JITコンパイラが String tmp = (String)obj; みたいなコードを
ループ外部に作成して、ループ内部では tmp.charAt(0) に変換、
みたいな事をする可能性はある。

121 名前:デフォルトの名無しさん [2008/05/15(木) 17:49:55 ]
>>119
あと、(String)obj は動的(実行時)型変換だよ。

静的(コンパイル時)型変換じゃない。

122 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 17:58:49 ]
>>120-121
なるほど、最適化されるということは、裏を返せば型変換にはペナルティがあるってことですね。

>あと、(String)obj は動的(実行時)型変換だよ。
たしかに。書き方がCと同じだからって、同じものだとは限らないわけですね。
Javaには静的型変換はないようで。

ありがとうございました。

123 名前:デフォルトの名無しさん [2008/05/15(木) 18:15:56 ]
>>118
ありがとうございます。
int変数のiが5なのかを判定したくて
if(i == 5){
と書いてみたのですが、そのif以前にiが初期化されていなかったらiがnullかもしれないから
if(i != null && i == 5){
と書かなくてはならないのか調べたくて
int i;
if(i == 5){
とするとコンパイルできなかったから、
static int i;
if(i == 5){
と書きましたが、これもコンパイル不能でしたが、コンパイラがstaticを
解釈できていないようなメッセージを出しているみたいだったので質問させていただきました。



124 名前:デフォルトの名無しさん [2008/05/15(木) 18:17:38 ]
>>123
int型が null になる事はない

125 名前:デフォルトの名無しさん [2008/05/15(木) 18:21:49 ]
>>124
そうですね。nullになりませんが、プリミティプの数値型は0で暗黙の初期化がされるらしいので
int i;
を書いてから、初期化を書かずに
if(i == 0){
を実行して真となることを確認したいのですが、そのようなソースは書けませんか?

126 名前:デフォルトの名無しさん [2008/05/15(木) 18:23:40 ]
>>125
ローカル変数は暗黙の初期化はされない。

127 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:24:46 ]
>>125
書けません。
必ずローカル変数はその値を参照する前に初期化されていることが求められています。
そして、ローカル変数は初期化を省略した際のデフォルト値のようなものはないので、
自分で初期化しなければなりません。

128 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:27:37 ]
>>125
int i;
と書いただけではiの値は確定していないので必ず初期化が必要。
iに値を代入するのがそんなに面倒?

129 名前:デフォルトの名無しさん [2008/05/15(木) 18:29:52 ]
public class A {
 static int i;
 public static void main(String args[]){
これならiは暗黙の初期化で0ですね。
ありがとうございました。

130 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 18:36:28 ]
なにがやりたいのかわからん
ローカル変数とクラス変数では全然意味が違う
暗黙の初期化をしたいがためにローカルなものをフィールドに出したら
プログラムそのものの動作が変わってしまうだろ

131 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:15:37 ]
暗黙の初期化なんて百害あって一利ぐらいだわ。
一般的なJavaプログラミングには必要ない。

むしろプリミティブ型の値範囲と精度に注目して欲しい。

132 名前:デフォルトの名無しさん [2008/05/15(木) 19:58:21 ]
なんか、Seasar2っていうのがいいらしい。

おもしろかったらやってみたいんだけど、
家計がしんどいので2000円の本買うのためらってる。

Seasar2っておもしろい??

133 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:13:25 ]
まず働いて2000円の本位買える家計環境にしよう



134 名前:132 [2008/05/15(木) 20:50:48 ]
>>133
働いています><; 一人暮らしでバイクのローンもあるから厳しいんです><;

原付にしときゃよかった><;

Seasarのスレがあったのでみたら、閉店するそうなので
やめます><;

135 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:03:04 ]
2,000円の本を買うのためらうくらいならネットで調べろ

136 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:05:57 ]
JSPでDBとやり取りするドライバ(のようなもの?)のクラスを作っているのですが、判らないことがあります。
ResultSet.nextをコールしないとSQLExceptionがスローされるようなのですが、なぜExceptionになるのでしょうか?

statement.excute(SQL文)でSQLのカーソルをSQL文に対応するレコードに移し、
statement.getResultSet()でカーソルの指し示すレコードをResultSetとして渡す。
で、ResultSet.getString()なりなんなりでSQLの中身を取り出す。

複数のレコードを取り出すならばResultSet.next()を使うのが自然だと思うのですが、単独のレコードが期待される場合は使う必要がないのではないでしょうか?
excuteじゃなくてexcuteQueryだと違うんでしょうか?

137 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:15:23 ]
なぜExceptionの詳細を書かないんでしょうか?
stacktraceくらい張ったらどうでしょうか?

138 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:24:48 ]
>>136
ResultSet のカーソルは、初期状態では最初の行の前に位置付けられています。
メソッド next の最初の呼び出しによって、最初の行が現在の行になります。
2 番目の呼び出しによって 2 行目が現在の行になり、以降同様に続きます。

139 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:29:52 ]
>>136
java.sun.com/javase/6/docs/api/java/sql/ResultSet.html
> A ResultSet object maintains a cursor pointing to its current row of data.
> Initially the cursor is positioned *before the first row*.

日本語版は誤訳だから気をつけろ


140 名前:136 mailto:sage [2008/05/15(木) 22:49:57 ]
英語苦手なんでアレなんですが…

ResultSetのカーソル位置が最初0で、受け取ったデータは1から始まるって事でしょうか?

141 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:54:57 ]
そう

142 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:02:39 ]
把握しました。ありがとうございます。

<チラ裏>
言えない…ResultSetが単体のレコードを格納すると思ってたなんて言えない…
</チラ裏>

143 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 01:09:02 ]
Cursorとかいう名前だったらよかったのにな。




144 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:31:41 ]
>>140
可能です。
以上。
↓次の方どうぞ

145 名前:デフォルトの名無しさん [2008/05/16(金) 08:35:28 ]

質問です、文字列からColorクラスに変換することってできないでしょうか?つまり、
String colorname = "red";
のような色名を表す文字列を使って、setBackgroundやsetColorなどのメソッドの引数をつくる方法はないでしょうか?
色名を全部並べてif文とかで条件分岐をすればできるですが、それだととてもコードが長くなってしまうので・・・







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef