1 名前:デフォルトの名無しさん [2007/06/27(水) 07:23:27 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド102【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1180419689/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 次スレは>>980 あたりで。
570 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 14:47:05 ] >>568 だからこそJLSで明確な定義があるんじゃないか
571 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 16:17:51 ] printfって要る派と要らん派でもめなかったけ? swap要るか要らんかの話みたいだと思った記憶があるんだが。
572 名前:sage [2007/07/12(木) 21:59:27 ] いまjaxb2.0を使って、xmlからjavaオブジェクトに変換するロジックを考えてるんだけど、 <hoges> <hoge id="hoge1"><value>ほげでーた</value></hoge> <hoge id="hoge2"><value>ほげでーた</value></hoge> <hoge id="hoge3"><value>ほげでーた</value></hoge> </hoges> pubric class Hoges { @XmlElement(name="hoge") private List<Hoge> hogelist = new ArrayList<Hoge>(); ・・・ } @XmlRootElement pubric class Hoge { @XmlAttribute(name="id") private String id; @XmlValue private String value; ・・・ } このxmlの<value>タグが無駄に思えて仕方ない。 <hoges> <hoge id="hoge1">ほげでーた</hoge> <hoge id="hoge2">ほげでーた</hoge> <hoge id="hoge3">ほげでーた</hoge> </hoges> ってな書き方で、"ほげでーた"をHoge.valueにセットする方法ない?
573 名前:デフォルトの名無しさん [2007/07/12(木) 22:11:25 ] スレッドを指定して停止したり、再開させることってできますか?
574 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 22:13:14 ] >>573 できません。自分でフラグを用意してください。
575 名前:556 mailto:sage [2007/07/12(木) 23:15:53 ] >>557 レスありがとうございます。 doubleを使わないんですね。 intで計算すると、どんな良い事があるんでしょうか。 >>558 ごめんなさい 使えるのはjava.util.*だけでした。
576 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 23:48:21 ] すいません、質問させてください。 「UDTの通信で自分のIPアドレスと、通信している相手のIPアドレスを比較するプログラム」というプログラムを作っています。そこで、 相手のIPアドレスは、DatagramPacket.getAddress() で 「192.○.○.○」という様に普通に取れるんですが、 自分のIPアドレスを、InetAddress.getLocalHost().getHostAddress() で 「2001:0:4136:・・・・」という様に(ググってみるとIPv6のIPアドレスらしいんですが)比較できません。 IPv4で自分のIPアドレスを取得するにはどうすればいいんでしょうか? よろしくお願いします。
577 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:04:31 ] >>572 うろ憶えだけどXmlMixed?だったかで出来たかも
578 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 00:52:58 ] >>576 UDT?
579 名前:デフォルトの名無しさん [2007/07/13(金) 00:59:48 ] >>574 >>573 たしか一時停止とかならできるのが有ったよ
580 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 01:01:46 ] >>579 どうやってやるのですか? 特別なライブラリを使用するとかでしょうか??
581 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 01:18:02 ] 指定してってのは無理じゃねーの
582 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 01:22:08 ] 対象の Thread が分かってるなら suspend も resume も可能だろが
583 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 04:25:34 ] イベント処理がGUIの例ばかりでよくわかりません。 どなたかGUIではないイベント処理のサンプルコードを教えてくださいませんでしょうか。
584 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 05:21:09 ] じゃあ、プッシュ型のxmlプログラミングでも・・・ まあ、それは良いとして単純なCUIだとループ中にキー入力拾うだけ。 それ以上のものはコンソール制御できないjavaには無関係で どっちにしても例に出すようなサンプルコードはないよね。 イベントドリブンでググった方が良いと思う。
585 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 05:28:47 ] >>583 public class Clock implements java.awt.event.ActionListener { public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println(new java.util.Date()); } public static void main(String[] args) throws InterruptedException { Clock c = new Clock(); new javax.swing.Timer(1000, c).start(); synchronized (c) { c.wait(); } } }
586 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 08:15:59 ] >>585 それ結局はGUI+スレッドに関連したプログラミングなんじゃ・・・。 まあ、java.awt.*パッケージにイベント周り集中してるからjavaのイベント処理は ヘッドレスじゃないだろって考え方もできるから>>583 の質問も的を射てないかも知れんが。
587 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 11:16:43 ] java.io.File#listFiles や java.io.File#list は > 結果の配列の名前文字列は特定の順序にはなりません。 > アルファベット順になるわけではありません。 とありますが、これは名前文字列以外の点においても 不定(少なくとも保証はしない)と言うことなのでしょうか?
588 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 11:21:40 ] >>587 実装的にはOSのAPIが返す順番そのものなので、たいていはディスク上の ディレクトリに記録されている順番になる。だから、意味のある順番で はない。
589 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 11:42:40 ] >>587 そゆ事。 原文みりゃ分かると思うけど > There is no guarantee that the name strings in the resulting array > will appear in any specific order; they are not, > in particular, guaranteed to appear in alphabetical order. 日本語訳では in particular の部分がスッポリぬけてるのね。 もちろん、>>588 がいう「OSのAPIが返す順番そのもの」ってのも一切保証されてない。
590 名前:デフォルトの名無しさん [2007/07/13(金) 11:46:45 ] Tomcatのコネクションプーリングについて以下でOK? server.xmlのJNDI(ResourceParams)の設定でfactoryにBasicDataSourceFactoryなどの コネクションプーリングに対応した、データソース実装クラスのfactoryを 指定する事で行われる。 factoryの指定がない場合は、driverClassNameで指定したJDBCドライバの DataSource実装クラスが使用される。 よって、factoryなしで、JNDIの記述だけでは、プールが行われるとは限らない。 PostgreSQLの場合、付属のJDBCドライバでは、プールはされない。
591 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 11:57:10 ] >>588-589 ありがとうございます。やはり、と言うところですが 訳抜けと言う点は驚きました。
592 名前:デフォルトの名無しさん [2007/07/13(金) 14:14:10 ] JFreeChartで描画したグラフの上にかぶせるようにShapeを描画する事は可能でしょうか
593 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 14:40:21 ] >>592 可能
594 名前:592 [2007/07/13(金) 15:02:09 ] JFreeChartについてもう一点 axisを共有した異種チャートの混合表示も可能でしょうか
595 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 15:25:30 ] >>591 javadocでは普通、原文とサイトのチュートリアルよく読むのオヌヌメ
596 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 15:44:35 ] >>594 異種で共有ってのがよく分からないけど、それも出来たと思う 前使った時に5,6種類のグラフを重ねてプロットしてたはず
597 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 15:45:43 ] >>1 てsと
598 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 17:02:50 ] 計算についての質問です double test = 17.56; というのがあって、これの100倍の答え(1756)を出したいのですが、 計算すると、1755.9999999999998などという答えがでてきます。 どのようにすれば期待した答えがでてくるのでしょうか。 試したことは下記の2つでどちらも変な結果になりました System.out.println(test * 100.0); System.out.println(test * 100.0f);
599 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 17:19:33 ] >>598 BigDecimal test = new BigDecimal("17.56"); System.out.println(test.multiply(new BigDecimal(100)));
600 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 17:20:37 ] >598 System.out.println(Math.round(test*100));
601 名前:598 mailto:sage [2007/07/13(金) 17:39:48 ] >>599-600 ありがとうございました 期待通りの答えをだすことができました。 単純に100倍するというのは難しいことなんですね・・・勉強になりました。
602 名前:デフォルトの名無しさん [2007/07/13(金) 19:22:03 ] >>593 >>596 有難うございました、早速使ってみました なかなか優れものですねこれは
603 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 19:51:42 ] >>601 誤差がね あるから
604 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 19:52:03 ] >>598 Javaに限ったことじゃないけど、プログラムで小数を扱うのは難しい
605 名前:デフォルトの名無しさん [2007/07/13(金) 19:55:11 ] 電卓でもいえるけどね
606 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 20:26:47 ] 量子コンピューターになればいいんじゃないかな?
607 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 20:31:58 ] 量子コンピュータは二進数使わないのか?
608 名前:デフォルトの名無しさん [2007/07/13(金) 20:46:13 ] アナログコンピューターでOK
609 名前:デフォルトの名無しさん mailto:sage [2007/07/13(金) 22:42:44 ] >>576 試したこと無いけど DatagramPacket.getSocketAddress().getAddress() って何が帰ってくるの?
610 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 00:04:40 ] >>600 適当すぎw 答えが2.6とかだったら3になるなw
611 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 16:47:50 ] switch文で○○以上の場合はこの処理をするっていうのはできますか?
612 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 17:40:17 ] >>611 とりうる値がかなり限られているなら○○以上の値を複数のcaseで羅列して挙げておけばいいが、 そういう条件判断は普通はif文で処理したほうがいいと思う。
613 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 18:39:38 ] >>611 int flag = 0; if( 10 <= x) flag = 1; switch flag case flag: // 処理 break; default: // 何もしない? でどうだ? switch文は使わないのがベター 大雑把な書き方は覚えているけど、詳細忘れたんで、テキトー xが10以上の時、switch文で処理を分岐できるぞ。 業務で書いたならばぶち殺すけどなwwww
614 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 18:55:18 ] >>611 できません
615 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 21:07:48 ] >>613 case 1:
616 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 22:37:48 ] >>613 caseに変数は使えない。リテラルのみ。 自信ない時は試してから書こうぜ。
617 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 22:38:21 ] あ、定数もいけたか。
618 名前:611 mailto:sage [2007/07/14(土) 23:28:12 ] レスさんくす
619 名前:デフォルトの名無しさん mailto:sage [2007/07/14(土) 23:30:16 ] Rubyならできる
620 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 01:21:06 ] rubyもgroovyもいらない子
621 名前:デフォルトの名無しさん [2007/07/15(日) 12:13:26 ] データの読み込みについて質問です。 一度ByteにしてArrayListに格納して、取り出してbyteに変換しています。 もっとスマートな方法(このクラスを使った方が良い等)があれば教えて頂けないでしょうか。 ArrayList byteArray = new ArrayList(); int readByte = 0; while (readByte != -1) { readByte = stream.read(); if (readByte != -1) { byteArray.add(new Byte((byte) readByte)); } } Byte[] byteBig = (Byte[]) byteArray.toArray(new Byte[0]); byte[] byteTmp = new byte[byteBig.length]; for (int i = 0; i < byteBig.length; i++) { byteTmp[i] = byteBig[i].byteValue(); }
622 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 12:49:22 ] >>621 スマートとかじゃなくて、それじゃ落第です。動くだけ。性能でなさ杉。 1.もし読み込み対象データのサイズは先にわかるのであれば、1発バルクリ ードしておしまいのはず。そんな遅そうな処理をする必要はないです。 多分こんな感じで。 File target = new File("..."); byte[] buffer = new byte[target.length()]; FileInputStream in = new FileInputStream(target); in.read(buffer); I/O-CPU間のスイッチが発生しないので、速いですよ。 2.サイズがわからないにしても、1バイトずつ読むのはやめなさい。 たとえば100バイトずつ読めば、I/O-CPUスイッチの回数は1/100です。
623 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 13:41:28 ] JDBC4.0に対応しているDBってどのくらいある? PostgreSQLが完全対応で、Derbyがβって感じ?
624 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 13:56:15 ] >>622 new byte[target.length()] してから new FileInputStream(target) するまでの間に、 ファイルが書き換えられて長さが変わる可能性がある。 in.read(buffer); は確実にbuffer.lengthバイトを読み込む事を保証してないので、 実装依存にしたくなければ明示的にループ使って全部読み込まないとダメ。 I/O-CPU間のスイッチがどのタイミングで入るかは実装依存なので 100バイトずつ読んでもスイッチ回数が本当に1/100になるかは不明。
625 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 14:05:13 ] RandomAcceccFileの方を使えば100%保障じゃね?
626 名前:デフォルトの名無しさん [2007/07/15(日) 14:13:09 ] ByteBuffer
627 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 14:16:47 ] >>621 ByteArrayOutputStream out = ByteArrayOutputStream(); byte[] buf = new byte[1024]; int len; while(-1 != (len = stream.read(buf))){ out.write(buf, 0, len); } byte[] contents = out.toByteArray();
628 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 14:17:20 ] >I/O-CPU間のスイッチが発生しないので、速いですよ。 >2.サイズがわからないにしても、1バイトずつ読むのはやめなさい。 >たとえば100バイトずつ読めば、I/O-CPUスイッチの回数は1/100です。 おいおい、実装依存だぜそこは・・・って言おうとしたのにorz ち、ちゃんと気づいてたんだからね!?
629 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 14:36:36 ] 様々な回答ありがとうございます。 一通り試して各メリットデメリットを整理し、理解を深めたいと思います。 このスレは優しい方が多いですね。 もっと叩かれると思っていました。
630 名前:デフォルトの名無しさん [2007/07/15(日) 21:22:44 ] javaのlexとyaccどこ?
631 名前:デフォルトの名無しさん mailto:sage [2007/07/15(日) 23:03:47 ] Calendarクラスって使いづらくない?
632 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 00:39:43 ] 古いのはそうだね
633 名前:デフォルトの名無しさん [2007/07/16(月) 01:19:29 ] 上司から、1つのJavaプログラムソースの流れを追えるように、と指示が出されました。 このページの作成ボタンを押したらデータはどう飛ぶかとか…。 ヒントを求めてもこれといった答えをくれないので、Eclipceを前にして苦悩しています。 ど素人&抽象的な質問で申し訳ないですが、ソースを追う際のコツみたいなのはありますでしょうか?
634 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 01:22:31 ] メソッドの頭にブレークポイントを挿入してみたら?
635 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 01:35:42 ] >> 634 ありがとうございます。なるほど、それが簡単かもしれませんね。 でも、jspやらjavaやらが全部で何千と存在しているので、できればそれ以外の方法で検証したいのです。 変数が定義されてないかを調べるために変数を検索してみるといい、とは上司に言われたのですが、 あまり自分の中でピンとは来ません。 とんちんかんなことを言ってるかもしれませんが、ブレークポイント以外でもう一声いただけると助かります!
636 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 01:40:27 ] Eclipseなら右クリックで変数の宣言に飛ぶとかメソッドの定義に飛ぶとかできる
637 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 01:44:16 ] そうなんですか?! 明日、日付明けて今日ですが、会社行って試してみようと思います。 12時間後ぐらいに撃沈してるかもしれませんが、その時はまたご教授願いします…。 素人の質問に回答いただきありがとうございました!
638 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 05:08:20 ] C++からJavaに引っ越してきたばかりの初心者です。 class A { private int data; //外部からは見えない private setter(int data) { this.data = data; } //外部からは使えない public int getter() { return data; } } というクラスがあったとき、data は int 型なので、この値が外部からは 絶対に変更されないことは保証されていると思います(C++と同じ)。 しかし、これが基本型の int ではなく、一般的なクラスだった場合、 例えば StringBuffer だったりしたら、外部からでも StringBuffer str = getter(); str.append("hoge"); みたいにして操作することは可能です(ここはC++と違う)。 これを防ぐために思いつくのは、getter() で data そのものではなく data のコピーを返すことですが、 public String getter() { return data.toString(); } 1. これは標準的な方法ですか? 2. ざっと見たところ、StringBuffer と違って String には インスタンスそのものが保持している値を直接書き換える 関数はないようですが、int と同じように扱っても安全ですか? 3. StringBuffer.clone() って使えるのが自然なような気がするんですが、 なんで使えないんですか?
639 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 05:32:15 ] public StringBuffer getter() { return new StringBuffer(data); } Stringはimmutable StringBufferのclone()はObjectのclone()をオーバーライドしていないのでprotectedアクセスになりAからはアクセスできない
640 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 05:41:17 ] こんな時間にレスありがとうございます! 3点ともしっかり理解しました。 C++についても「分かったつもり」になっていただけの部分が だいぶありそうですので、これを機にもう一度見直してみようと思います。 色々と。
641 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 07:00:07 ] がんがれ
642 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 08:05:31 ] >>638 こういう方法もよくやる class A { // 外部から直接アクセス禁止 private StringBuffer buf = new StringBuffer(); // 許可するメソッドだけを間接的に公開 public append(String str) { buf.append(str); } } あわせて。>639のようにGetterはコピーして返せばOK
643 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 09:21:56 ] >>633 Eclipseがある今では古風なやり方だが、各所にSystem.out.println(".."); を配置すると今どこら辺の過程やってるのか分かるよ。
644 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 10:29:57 ] lnないほうがいいよ
645 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 10:31:48 ] 二重ループで外を●内を・にすると ●・・・・・・・●・・・●・・・・●・・・・・●・・・ みたいに楽しめる
646 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 11:21:11 ] >>638 javaはcall by referenceが無くていわばreferenceをcall by valueしてる。 ていうのをとっとと覚えた方が良いと思う。 むかし、MSにプリミティブのラッパークラスが 保持してるvalueを書き換える手段がないのは欠陥と非難されたことがあるよ。
647 名前:デフォルトの名無しさん [2007/07/16(月) 11:24:16 ] FlashからJavaに入った奴です、よろしくお願いします。 例えば、Flashでは、あるFlash(swfファイル)に、後から、別ファイルのFlashを、 ロードして実行/表示することができるんですが、 Javaアプレットの場合、後から、別archiveをロードして、その中のクラスを 利用したりすることは出来るんでしょうか。。
648 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 11:25:37 ] BASIC作ってた会社に言われたくない罠
649 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 11:26:17 ] できるよ
650 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 11:42:08 ] >>648 作ってないよ。あれは買い取っただけ。
651 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 12:07:30 ] >>650 ビルゲイツキタ━━━━━━(゚∀゚)━━━━━━ !!
652 名前:デフォルトの名無しさん [2007/07/16(月) 12:47:53 ] mainスレッドとmainスレッドからstartされるThread-0があって、GUIのボタンでThread-0の停止・開始を 制御するサンプルとかないですか?
653 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 13:30:04 ] >>652 一度止めた(止まった)スレッドを再開することはできない。 Threadの中でループを使って実行・一時停止を制御するか、ボタンのイベント毎にスレッドを作れ(止めろ)
654 名前:647 [2007/07/16(月) 14:21:16 ] >>649 ありがとうございました。この方向で、勉強してみます。 また、つまづいたら、よろしくお願いします。
655 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 15:06:05 ] >>653 ありがとうございます wait/notify使えば出来るかなと思ったのですがダメなんですね
656 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 17:52:30 ] JDBCでMySQLを使ってるんですが、setAutoCommitをfalseして commitとrollbackを使えば排他制御はできてるんですか?
657 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 17:54:16 ] commit/rollbackは排他制御じゃなくてトランザクションの仕組み それを使って排他制御ができるかどうかは>656次第
658 名前:デフォルトの名無しさん mailto:age [2007/07/16(月) 17:55:04 ] cから来たんですけど「final」って何ですか?馬鹿にしてるんですか?
659 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 17:57:41 ] >>658 constと同義
660 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 17:58:34 ] >658 includeってなんですか?馬鹿にしているんですか?
661 名前:デフォルトの名無しさん mailto:age [2007/07/16(月) 18:01:07 ] >>658 処理系側が安心して定数であると判断しているのです 大文字、小文字の判別が出来るものと出来ないものが有る為 どうしても定数宣言で必要になるのです
662 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 18:01:55 ] ん、もしかしてCしか知らないのかw
663 名前:656 mailto:sage [2007/07/16(月) 18:41:04 ] トランザクションと排他制御の違いがよくわかってませんでした。 dev.mysql.com/doc/refman/4.1/ja/lock-tables.html MYSQLでは、このページにあるようにロックテーブルすれば排他制御はOKですか?
664 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 18:46:16 ] 今のjavaのfinalは定数じゃなくて一度しか代入(初期化しか)できない変数だろ。 blank finalがあるから。
665 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 18:49:06 ] >>663 それはJavaの話ではないのでMySQLスレで聞いた方がいい 排他制御がシビアであるのでない限り、TimeStampを使って簡単な排他制御を行うことが一般的。 つまり、更新するレコードを取得した時にLAST_UPDATE_TIMESTAMPなどを取得しておき、UPDATE時はWHERE条件に含めてしまう(排他で引っかかれば更新結果0件)など。
666 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 18:50:42 ] >>664 むしろ、変数に代入された値(参照先も含む)の不変性を保証 釣りにマジレスはここまで。
667 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 18:52:46 ] 何が「むしろ」なんだ?>>664 のが的を射ているし。
668 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:24:02 ] >>665 timestampはそういうときに使えるんですね LAST_UPDATE_TIMESTAMPっていうのはMySQLの関数ですか? 探したんですが見つからないです。 あとこの方法だとテーブルにtimestamp型のカラムを持たせないとできないんですよね? もうMySQLの質問になってますね。すいません。これで最後にします。
669 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:27:31 ] >>667 JLS3以降(Java5以降)でfinalの役割が重くなって、 666のようになったはず。
670 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 19:31:13 ] >>668 いや各テーブルに定義するカラム 最終更新日時ってカラムは何かと便利だから全てのテーブルに含めてテーブル設計することが多い(この辺もMySQLスレかDB総合スレ)