3 :
デフォルトの名無しさん :2012/04/15(日) 21:25:43.42
>>1 乙です
Javaにおけるジェネリックスのメリットって、コンパイル時やIDE上でエラーチェックができることぐらいですか?
型推論のある言語だとそこから更に効果あるらしいんですけど・・・
MapとかListにジェネリックスを使うと見た目がかなりゴチャゴチャするので、
そのぐらいのメリットしかないなら、使いたくないんですが
どうであれ、使わなければ関係ない
実行時型検査のキャストでゴチャゴチャしたいか コンパイル時型検査の型宣言でゴチャゴチャしたいかの二択だな。
ちがうだろ ライブラリ書く奴が苦労するか ライブラリ使う奴が苦労するか の違いだ プロならどちらを選ぶかは自明
型推論のある言語だとそこから更に効果あるらしいんですけど・ 具体的に何ですか?
javaを習得したいんだがおすすめの参考書ってある?
>>8 The Java Programming Language
10 :
質問です :2012/04/16(月) 14:07:55.80
JFrame を new して setVisible(true) する時は、 EventQueue.invokeLater() 使って EDT(Event Dispatch Thread) 側でやれって事のようですが、 java.awt.Frame の場合もそうするべきなのでしょうか? ザックリとググッてみたのですが Swingネタばかりで… 一応、main() で古典的なべた書きパターンで作ってみて問題は今の所発生はしてないのですが。 エロい人、よろしくお願い致します。
マルチスレッドにちょっぴり対応しているかもとかいう都合のいいことは考えない方が安全
12 :
デフォルトの名無しさん :2012/04/16(月) 19:29:50.06
今から Java開発環境をつくるなら、Java/Eclipse の バージョンの組み合わせは、どんなのがベストでしょうか?
Javadocで、Listなら {@link List#size()} と書くように、 配列のlengthフィールドへのリンクを書きたいんだけど、どうすればいいですか?
>>12 自分用・勉強用なら、Java7 + Eclipse 3.7.2(だっけ? Java7対応のやつ)。
ダイアモンド演算子とリソース解放付きtryがすさまじく便利。
業務用ならJava5じゃね?
業務用だと、いまだにJava1.4が主流だと聞いたけど、
1.4はジェネリクスがないから、コレクションがまともに使えなくて、
誰かがコレクション捨てて配列使って書き始めて、全体的にぐだぐだになる。
Java5でジェネリクス使って、生の配列を使わないように書くとすごく楽。
……と俺は思ってるんだけど、他の人の意見も聞きたい。
>>15 {@link}ってそーゆー使い方できたっけか?
>>16 無理だったか。じゃ無理だわな。
それでも諦めないならHTML直書きするか、カスタムタグ定義してリンクに変換するか。
>>15-17 ありがとう。
素直に書くことはできないっぽいですね。
お手数おかけしましたが、「配列長がxxのとき――」とベタ書きの文章で書くことにします。
というか、自分でも調べてたんだけど、
配列#length フィールドのJavadoc、というか定義文自体が存在しない?
そもそも 配列#length ってフィールドじゃないのか…?
APIの一部じゃないのでAPI仕様というかjavadocには記述されてないだけ。 言語仕様には記述されてる。 あと言語仕様的にはフィールドだけど、 java.lang.reflect.Field で取ってこれない特別なフィールド。
>>19 あー。「API」じゃないのか、言語仕様なのか…。
配列が特別扱いなせいで、色々なところで「配列用の特別なコード」が書かれてるんだよなぁ。
ジェネリックとも親和しないしなぁ…。
うまくAPIに織り込めなかったのかね。
それか、Javascriptみたいに「世界はすべて(連想)配列だ!」くらい割り切ってくれてたらなあ…。
21 :
>>10 :2012/04/16(月) 23:05:22.56
>>11 レスありがとうございます。
そうですね、結局の所、別スレッドと強調するのは必然でしょうしね…
すいません ライセンスの質問などはどこのスレッドでさせてもらえますか?
24 :
12 :2012/04/16(月) 23:47:07.19
>>14 サンクス!
とりあえず、書籍の付録CDにあった Java5(TIGER) & Eclipse3.1.1
で、開発環境を作ってみます。
なんでわざわざそんな古いEclipse使うの?
Pleiadesでいいじゃんな。javaもとりあえず1.5-1.7が入ってるし、 アップデートによって、自分で入れ替えればいい。
27 :
デフォルトの名無しさん :2012/04/17(火) 08:12:44.65
javaの入門書ってどれがおすすめ? プログラミング経験はCをかじった程度
どれでも読め。 どれを読んでもハズレ。
いえいえ
Cの習熟度次第じゃないの?Cでバリバリソフト作れるぐらいならネット検索だけで十分だと思うけど。不安なら何か初心者向けの本一冊買ってあとは適時買い足せばいいと思う
起動しているjavaの現在使用メモリ及びMAXメモリを確認する方法はあるでしょうか?
内部からだったら java.lang.Runtime の maxMemory() freeMemory() あたり。 外部からなら jconsole みたいなモニタリングツール使えば。
Beans bindingはこちらでいいですか? MVC構築に使える無料のライブラリ を探して見つけたのですが、オススメ とかやめとけとか、皆さんの評価を 聞かせてください。
>>31 thx
今日入門書買ってきた
がんばるよ
知ったか乙
>>38 背伸びして叩かれるのもときにはいいものだ。
で、独習のどこがいいの?読んだの?
背伸びして叩かれてろw
>>14 EOF過ぎたバージョンを業務で使うキチガイは流石にいないぞw
EOLだw
1.4.2 for buisinessってもうサポートされないんだっけか?
>>33 ありがとうございます。
外部からCtrl-Breakでスレッドダンプを出せとよしゃっと思いましたが、メモリは出ていないですね…
残念
javaでプログラム作る場合、アプリケーションの共通設定やユーザの設定ってどこでやるように想定されてるんでしょうか? マルチプラットフォームだから、ウィンドウズのレジストリは論外としても、環境変数も必ず共通で使えるわけじゃないですよね。 OSや環境に応じていちいち別処理にするんでしょうか? 結局環境依存のプログラムになるような。
java.util.prefs.Preferences 使ってもいいし、 System.getProperty("user.home") に .aplicationName みたいな設定ファイル作ってもいいし。
>System.getProperty("user.home") に .aplicationName みたいな設定ファイル は初耳ですね。どこかに出典はあるんですか?
50 :
47 :2012/04/19(木) 16:25:00.27
>>49 *nixアプリの伝統的な設定保存方法の一つ。
.emacs とか .vi とか見たことあるでしょ。
*nixでjava.util.prefs.Preferences使うと、その方法使うんじゃなかったか?
~/.emacs とか書いたほうがわかりやすいんじゃね?
user.homeプロパティーは、linuxだと普通は~/ですけど、windowsでリアルだと普通はどこになるんですか?
%USERPROFILE% じゃね?
MacOSXは ~/Library/Application Support/ とかが一般的だったりする。 窓付きアプリはあまり~/直下にもの置かないような気がするな
eclipseもnetbeansも~/.eclipse ~/.netbeansってディレクトリ掘るし、 jeditなんかも同じだな。 macではどうなるか知らんけど。
既に設定ファイルにもus-ascii,88591だけでなく日本語など混在しているのでvi,emacsなどのレガシーはもう使ってません。 さらにx起動しないときの(tty)コンソールがbash --helpの時でも日本語表示できないので、vi,emacsを極める理由もありません。
ISO8859_1と日本語って混在できたっけか?
設定ファイルの説明部分に日本語でコメントを残しておくので、設定ファイルの種類は8859_1,utf8,eucjpなどが混在します。 prefsなら別ですが、home.userに置くような設定ファイルはテキストじゃなくてバイナリーと考えた方がいいんじゃないですかね。
そんなもんディレクトリ作って別ファイルにしてもいいし、お好きなように。
>>58 ISO2022JPならなんとかならん?
複数のファイルであっても複数の文字コード混在させないだろ、普通。
設定ファイルなんてユーザには直に弄らせないんだから統一するの楽だし。
そろそろスレ違い
63 :
デフォルトの名無しさん :2012/04/19(木) 20:18:30.09
JavaFx Scene BuilderのツールバーのEditが開かない。
BASICはfor next や if文など、基本的なものはまぁまぁわかっているつもりなんですが、 javaをはじめるにあたって本か何かで身に着けたいと思います。 おすすめの本ありますか?
Eclipseで実行やデバッグを押したら自動的に保存されるようにする設定のやり方を教えてくれ
自治厨の屁の役にも立たないレスで1レス消費するのもどうかと思うけどな
そう思うならID表示に汁
>>61 切り替え方式でも8859_1との混在は無理だろ
wikipedia見てみたら2022-JP-2 (RFC1554 1993years)から混在できるって書いてあった。
自治厨 = 中二
↑自己紹介
java自体の質問じゃないんですが、java総合スレってないんでしょうか?
javaが見れないのでjavaをアンインストールして新しいのをインストールしようとして コントロールパネルでJava(TM) 6 Update29をアンインストールしたところ 何故かJava(TM) 6 Update20 のアンインストールが始まった挙句 「この Windows インストーラ パッケージに問題があります」と出て行き詰ってしまいます どなたか解決法を教えて頂けないでしょうか?
Java(TM) 6 Update20を拾って来て 上書きインストールして アンインストールする
エラーメッセージでググればなんか出てきたよ 気のせいかMicrosoftInstaller(MSI)やInstallShieldのトラブルを目にするな最近。 検証不足のセキュリティソフトがなにかやらかしたのか
やらかしたのは自分だろ
馬鹿には無理
だなw
「馬鹿はjavaやれ」と言われこのスレでは「馬鹿には無理」といわれます><
馬鹿はC#だろw
C#も後出しだけあって、作りやすさは相当なもんだな C#というよりVB#って感じだけど。
javaしかできない馬鹿には無理
馬鹿にはおっぱい言語を勧める
おまえらどうせDBからデーター引っ張ってHTML出力する程度のプログラムしか書けないんだからjavaで十分じゃん
と全角が申しております
charの0の意味について質問します。 普段ならnullかどうかで分ける事を考える様な場所で、charを返すメソッドを使用して場合わけをしようと考えています。 そこで、charは0以上しか取らないことがわかったので、0を返したときに別の動きをするようにしようと考えた時に疑問がわきました。 普通のcharに0を代入するとどのような文字に対応しているのでしょうか? char c = (char)0 if(c == ' ') { System..out.println("aa")} System..out.println(String.valueof(c)) としても何も表示されず悩んでいます。教えていただけないでしょうか?
Cでは0はナル文字(終端文字)
馬鹿には無理
馬鹿には無理
>>89 >>90 の言うとおり0はNULL文字で、改行コードやTabと同じ制御文字。
制御文字だから見えないし、エスケープシーケンス無しには書けない。
場合分けには、charの65535が不正な文字コードだから、これ使えば?
>>89 > if(c == '') { System..out.println("aa")}
if(c == '\0') { System..out.println("aa")}
> System..out.println(String.valueof(c))
不可視文字の確認したいなら
System..out.printf("U+%04X%n", (int)c);
とかした方が。
java1.7環境だと、実行可能jarは2バイト文字が含まれるディレクトリ配下だと起動できない これって意図的なの?
96 :
89 :2012/04/21(土) 14:02:17.14
>>90 >>93 >>94 普通の文字ではなかったんですね。ありがとうございました。
場合わけには65535使いたいと思います!
残業代が基本給を超えるって1日何時間残業してるんだ?
javaの入門書でおすすめ教えてください。 プログラミングはcを少しかじったくらい。
Cがわかってるなら「入門書」は必要ない
少しかじったくらい としか書いてないのに馬鹿は日本語も読めないのか
何もわからんのに かじったとか言う方が悪い
>>100 Cをかじった程度ってことは、とりあえず文法や構造体、ポインタの扱い方は理解してて
ソースファイルの分割も出来るってことだろ
その程度も出来ないんだったら「まったくわかりません」って書いてくれないと
オレはかじったことあるっていう言葉に受ける印象は 配列が使えたり単純なソートができたり程度という感覚かな。 ちなみにお前ら的にjavaだとどの程度のレベルがかじったなの?
解らないところが出てきたら source読むようになるぐらい。
ソートとか以前に ・nullと"null"の違い ・空文字列って? は理解しといてもらいたいかな。 こんなことも知らない派遣クンとJava知らない主任が組んだら あ〜ら最凶のプロジェクトに・・・ って事例が現在進行中。
馬鹿には無理
>>104 Javaに限らないけど、基本的なアルゴリズムとデータ構造を自分で実装できるレベルなら
かじったと言ってもいいんじゃね
こんな糞スレで質問しようと思う馬鹿には無理
for (::) System.out.println("馬鹿");
下級戦士はよく吠えるな
馬鹿には無理
〉〉98だけど説明不足でした cは〉〉102の言うことは理解してるくらいのレベルです
安価ミスったww
なら、入門書なんか読んでもつまんねーよ。 「変数は箱です」からはじまって、うだうだやって、 ディレクトリの再帰検索やって終わり、で2000円。 解説サイト読んでから言語仕様読んで、 そしたら、Apache Commons Langあたりの適当なライブラリの ソースコードDLして読めばいいよ。
このスレ転載して、おすすめの本の広告つけようとしてるアフィサイトなんじゃね?
118 :
ora! :2012/04/22(日) 13:57:42.66
119 :
ora! :2012/04/22(日) 15:03:03.94
120 :
ora! :2012/04/22(日) 15:26:55.65
121 :
デフォルトの名無しさん :2012/04/22(日) 19:03:51.74
C言語でfwrite((char*)ptr,sizeof(double),1,fp) で書きだしたバイナリの8バイトを JavaでDataInputStream::readDoubleあるいはreadFloat で読もうとしているのですが、成功しません。(ハードウェアは同じです) ・数値のフォーマットをあわせる ・ファイル末尾に改行がないと読み込みエラーが出る の2点について、Java側で何とかしないといけないのですが、どのへんを調べれば分かりますか?
>>121 エンディアン間違ってるだけなら、
value = in.readDouble();
value = Double.longBitsToDouble(Long.reverseBytes(Double.doubleToLongBits(value)));
で変換できる。最初から正しいエンディアンで読み込む方が楽だろうけど。
C言語のdoubleはフォーマットは処理系依存だったような気がするから、
そっちも調べてみるべきかも。NaNとか無限大も変換したいなら特に。
ファイル末尾に改行云々は何したいのかわからん。
改行を発見できないとエラーにするプログラムが書きたいのか、
意図しない「改行が発見できないよエラー」が出て困ってるのか。
>>122 ありがとうございます!動きました。
エンディアンって、Cで単純なダンプをすると逆になってるってことですか?
これだとjavaに負荷がかかりそうですね。
java.io.EOFExceptionが最後にトラップされてるのですが、
すみません、改行かどうかは分かりません。
例外処理のしかたがよくわからないもので、とりあえず放置します。
少し調べましたが、C側のエンディアンが環境依存なんですね。 こんな基本的なところでズレているとは・・・
まさに馬鹿には無理w
質問です。 HttpURLConnectionを使ったサイトの取得時に InputStream、InputStreamReader、BufferedReaderを使って処理しているのですが 処理中にエラー(ネット接続が切れたor処理のバグ)が起きたときにきちんと閉じる処理をしようとしたら 閉じる処理自体にもtry-catchが必要とeclipseさんに言われてこんな感じになってしまいました。 try{ 処理省略 }catch(Exception e){ httpURLConnection.disconnect(); try { inputStream.close(); } catch (Exception e2) { } try { inputStreamReader.close(); } catch (Exception e3) { } try { bufferedReader.close(); } catch (Exception e4) { } } 自分でもおかしいと思うのですが閉じる処理は httpURLConnection、inputStream、inputStreamReader、bufferedReader のうちどれかだけをすればいいのでしょうか?やっぱり全部必要でしょうか?
覚え始めなんだけれども どんなものから作っていったらいい? 少しづつステップアップしていきたい
>>126 jdk1.7以降がターゲットなら、素直に try with resources 使った方がいい。
try (InputStream in = connection.getInputStream()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//処理
}
みたいな奴。
1.6以前もターゲットの場合は、
public static void closeQuietly(Closeable c) {
try { c.close(); } catch (IOException e) { /*無視する*/ }
}
みたいなメソッド作っておいて呼ぶと、いくらかスッキリする。
あと、close は基本的に連鎖的に close するのでイチイチ全部呼ぶ必要はない。
どうしても close の連鎖が切れるのが心配なら
大元の(というか直接リソース握ってる)InputStream だけを close しときゃいい。
>>127 どんなものを作りたいと思ってJavaを勉強しはじめたの?
>>127 自分がよく使うソフトか、よく使う作業の補助になるようなので、出来るだけ小さいプログラムがいい。
毎日そのプログラムに触るぐらいじゃないと良くならないし、何度も作り直せるぐらい小さくないと、設計が上達しない。
初心者は自分のレベルをまず説明しよう。 (他のプログラム言語はバリバリやってるけど)javaは初心者。 プログラム自体初心者。 まぁ、他の言語でも今まで作ってきたんならこんな質問はしないと思うけど、 そうすると別にjavaの質問ではないしな。
<td class="abc" align="center">food</td> のfood部分のみをJsoup取り出したいのですが... どなたかご教授お願いします。
小数点以下2桁までで切り捨てるにはどうすればいいでしょうか?
>>133 負の値や精度考慮しない手抜きでいいなら
value = Math.floor(value * 100) / 100;
自前部分のコード量減らしたいなら
BigDecimal val = new BigDecimal(value).setScale(2, BigDecimal.ROUND_DOWN);
>>132 for (Element node : document.select("td.abc[align=center]")) {
System.out.println(node.ownText());
}
>>129 最終的には簡単なゲーム
>>130 なるほど
ランチャーとかファイラーみたいなのつくってみます、何ヶ月かかるか分からんけど
ゲームならそんなの作らずに「android ゲーム 作る」とかで検索して解説してあるとおりに適当に作ってみればいいよ
質問です。 目的の実行結果のように, ・英語,数学,国語の各科目の試験受験者数をキーボード入力 ・各科目の受験者の名前と点数をキーボード入力 ・各科目の入力データ,平均点,最高点,最高点獲得者の出力 を行うソースファイルを作成してください. 目的の実行結果 C:\ [英語の受験者数を入力してください] > 2 [数学の受験者数を入力してください] > 2 [国語の受験者数を入力してください] > 4 [英語の1人目の受験者の名前を入力してください] > 鈴木 [鈴木さんの英語の点数を入力してください] > 95 [英語の2人目の受験者の名前を入力してください] > 三枝 [三枝さんの英語の点数を入力してください] > 80 [数学の1人目の受験者の名前を入力してください] > 西田
続き [西田さんの数学の点数を入力してください] > 88 [数学の2人目の受験者の名前を入力してください] > 野田 [野田さんの数学の点数を入力してください] > 95 [国語の1人目の受験者の名前を入力してください] > 鈴木 [鈴木さんの国語の点数を入力してください] > 92 [国語の2人目の受験者の名前を入力してください] > 三枝 [三枝さんの国語の点数を入力してください] > 95 [国語の3人目の受験者の名前を入力してください] > 西田 [西田さんの国語の点数を入力してください] > 95 [国語の4人目の受験者の名前を入力してください] > 野田 [野田さんの国語の点数を入力してください] > 87 入力された試験結果は以下のとおりです 英語鈴木さん:95点三枝さん:80点 英語の平均点は87.5点です 英語の最高点は95点です 英語の最高点獲得者は鈴木さんです 数学西田さん:88点野田さん:95点 数学の平均点は91.5点です 数学の最高点は95点です 数学の最高点獲得者は野田さんです 国語鈴木さん:92点三枝さん:95点西田さん:95点野田さん:87点 国語の平均点は92.25点です 国語の最高点は95点です 国語の最高点獲得者は三枝さんと西田さんです
凄い釣り師がキタ!
>>137 助かりました、本当にありがとうございます。
俺も
>>127 みたいな感じなんだけど、
minecraftのmodを作りたいという変な理由でjava勉強し始めたんだけど、
最初どういうふうに勉強して、どういうふうにプログラムを作っていけばいいのか教えて下さい。
とりあえず文法を憶えたらググってMODの作り方を勉強 あとは他のMODのソースとかあればそれを参考にしたり試行錯誤で作っていく
>>144 最初は他の言語の方がいいと思うけどね。
正直javaはあんまり言語仕様やとりまく環境としては良くないから。
>>145 他のMODのソース見るのは勉強になりそうかな? やってみます。
>>146 学校ではBASICやってます。 java難しいです。
環境とか言語仕様とか言ってたら、 なにも出来ないと思うけどな。 あ、だからなにも出来てないのか。
うざい
パッケージ名なんですが、みなさんどんな感じでわけてます? どんなに小規模のアプリケーションでも、 [自分のドメイン名].[アプリケーションの名前].[クラス]ってやってます? それとも [自分のドメイン名].[アプリケーションの名前のクラス]みたいにいきなり置いてます?
「アプリケーションの名前」 っつーか、用途じゃね?
クラスファイル1個ぐらいの小規模アプリだったらデフォルトパッケージに置いとく。
>>152 あ、なんか書き方おかしかったですが、パッケージをそのアプリケーション専用の作るか、作らないかって質問でした。
>>153 ありがとうございます。
よく考えたら、全部が全部パッケージに分類しなくてもいいのか。
誰か助けて・・・
知らんがな
漏れは自分のドメイン名は恥ずかしいので付けてない
JarファイルA、B、Cが有ったとして、 AはX-1.0でないと動かない。 BはX-2.0で無いと動かない。 X-1.0とX-2.0の仕様は部分的に非互換で部分的に互換。 つまり似ている部分は有るが共存はできない。 こういう場合はどうすれば…
○ JarファイルA、B、Xがが有ったとして、
ggrks
複数のXでAとBの開発・テストを平行して行いたいのならMaven覚えればいい A,B両方を使うDがどっちのXを参照すべきかは他人に判断できない問題
162 :
デフォルトの名無しさん :2012/04/24(火) 22:48:16.33
よくFactoryでもなければ、ClassでもないのにstaticでnewInstance();を定義しているクラスがありますが、 あれは何の意義があるんでしょうか?new Type();と比べ何のメリットがあるんでしょう?
1 今後変えていくかもしれんのでnewでインスタンスつくんなおという願い 2 やってみたかっただけ 3 知能に問題がある人が書いた
>>163 > 1 今後変えていくかもしれんのでnewでインスタンスつくんなおという願い
なら、コンストラクタ不可視にすんだろ。
> 2 やってみたかっただけ
> 3 知能に問題がある人が書いた
これはあるある
4 内部でうまいことキャッシュしてやるからnewInstance使え。キャッシュとか
別にいらねーなら勝手にnewしろ。そのかわり自分で面倒見ろよ
大抵は3か4だろう。2は殴れ。3は殴るな後が怖い。
死ねよ雑魚が
自殺宣言?
「自分は頭が良くて詳しいです」的な自己満足レスの典型だぞ。 相手は超初心者なんだからもう少し優しく教えてあげないと。 さもなくばスルーでOK
>>162 staticファクトリーメソッドで調べてごらん
断る
あ゛?なめてんのか?
>>162 シングルトン
インスタンスの数を常に1つにしたい場合に使う
172 :
デフォルトの名無しさん :2012/04/25(水) 15:00:37.73
Java6u31の総称型の質問です。 class Foo<T extends Hoge> { public int insert(List<T> entitylist) { /* ... */ } public int insert(List<Long> primaryKeyList) { /* ... */ } } とあるとき、java.lang.LongはHogeのサブクラスではないのに同じメソッドイレイジャだとコンパイルエラーになります。 総称型のextendsによる限定は考慮されない仕様なのでしょうか。
過去と互換性のあるレイヤではパラメタ型全部消えるのでerasure。
コンパイルの過程で総称型の情報が消えてしまい、 List<Foo>もList<Baa>もただのListとなるから同じとみなされるわけですね。 erasureの動きが少し理解できました。 ありがとうございました。
java6 update16ください
>>171 シングルトンはnewInstance()なんて名前普通つかわんだろ
177 :
ora! :2012/04/25(水) 19:52:13.02
シングルトンはgetInstance()だな
>>162 がよく見るソースコード見てみたいものだ
5 今後プリミティブ型廃止の流れがきた際にnew演算子を使っていた不幸な人たちを少しでも減らしたい願いの表れ
>>172 Javaの型パラメータは、コンパイル時に除去されてObject型になってしまうのだよ。
この性質のことをイレイジャという。
そんなわけで、おまえさんが例示した2つのメソッドは同じシグネチャになってしまいコンパイルエラーになるわけだ。
抽象戦隊!イレイジャー! よし覚えた。
私的用プログラムを高速化したいので、javaからsse1,sse2(amd64)にアクセスしたいんですが、JNI,JNAを使ってCでブリッジを書かないとやっぱり無理でしょうか。
わからない 俺にきくなよ
知らないならレスしないでください うざいだけです
JNI,JNAを使ってCでブリッジを書けばsse1,sse2(amd64)にアクセスできますよ
sseの高速化メリットよりメソッド呼び出すコストの方が高そうだな
>>168 調べましたけど何でstaticなんでしょうね。
インスタンスメソッドにしたって大したコストにならないでしょうに。
>>187 アーキテクチャにもよるけど、JNI1回で10-50msぐらいかかる。
SSE使うだけのジョークアプリになるね。
だなw
今のJVMって最適化オプションでSSE使ってくれるだろ あくまで俺が使ったときの一例の話だけどgccの自動ベクトル化より速かった
192 :
デフォルトの名無しさん :2012/04/27(金) 00:07:33.40
Romeを利用してRSSを配信したいのですが、enclosureタグが出力できません。 List<SyndEnclosure> enclist = new ArrayList<SyndEnclosure>(); SyndEnclosure enc = new SyndEnclosureImpl(); enc.setUrl(image_path.toString()); enc.setType("image/jpeg"); enc.setLength(image_file.length()); enclist.add(enc); entry.setEnclosures(enclist); どこか問題ありますでしょうか・・・
sse(mmx),amd64は、java8で実装される予定のラムダとbulk dataを利用して使おうと考えてます。 java8からはmulticoreの活用はもちろん基本的に内部イテレータ仕様がメインになるようなので、java5 generics typeの時と同じく次回の改訂はjava languagesのパラダイムシフトになるかなと思います。
意味がわからん ラムダ使った並列化はMIMDだろ
195 :
デフォルトの名無しさん :2012/04/27(金) 01:06:27.15
起動したクラスって取得できますか? public class SuperClass{ public static void main(String[] args){ } } public class SubClass extends SuperClass{ } こんな感じで、SubClassで起動した場合に mainの中で起動したクラス(SubClass)を取得したいのです。
↓の状態で実行すると数字の重複をしてしまいます。 乱数の重複を防ぎたいのですがどうすれば良いですか? ネットでいろいろな方法を調べたのですが、どれも上手くいきませんでした。 import lib.Input; public class Sample1{ public static void main(String[] args){ int a = Input.getInt("何人に配りますか?(2〜5)"); for (int i=1;i<=a;i++){ System.out.println(i+"人目の手札は以下のとおりです."); System.out.println(cards()+""+cards()+""+cards()+""+cards()+""+cards()); } } public static String cards(){ String[] a = {"ハート","クラブ","ダイヤ","スペード"}; int b= (int)((Math.random()*13)+1); int c= (int)(Math.random()*4); int c_b = (int)(Math.random()*53); String d = a[c] + "の" + b +" "; if(c_b==0){ d="ジョーカー"; } return d; } }
>>197 あらかじめ使えるカードの一覧を作っておいて使用済みのチェックを入れる。
>>197 配列に52枚のカードを入れて、それをランダムにシャッフルして、先頭から順にめくっていく
>>197 重複しない膨大な整数系列を高速省メモリで吐いてくれるアルゴリズムの
疑似乱数クラスは、探せばある。
トランプにはオーバースペックか。
202 :
デフォルトの名無しさん :2012/04/27(金) 11:21:12.39
Javaを勉強し始めたばかりで用語について混乱しているので教えて下さい。 クラスをコントラクトすること=インスタンス化(クラス名 変数名=new クラス名();) インスタンス化された変数をインスタンス メソッドや変数をまとめて1つのクラスとして独立させることをカプセル化 このような解釈であってますでしょうか。。。 初歩的な質問で申し訳ないのですがサイトなどでの説明がわかりにくかったもので、 誤った理解をしていればご指摘頂ければ幸いです。
>>203 【インスタンス化】
● クラスからオブジェクトを作ること。
● コンストラクタの呼び出しによって、メモリ上に、新たに生成される
オブジェクト用のメモリの領域を確保すること。
【カプセル化】
● クラスの外部からはフィールドを直接操作できないようにして、必ずメソッドを
経由してフィールドを間接的に操作するようにすること。
Java7u4 Java6u32 リリース
>>195 public class SuperClass {
static Class subclass=SuperClass.class;
public static void main(String[] args) {
System.out.println(subclass.getName());
}
}
public class SubClass extends SuperClass{
static {
subclass = SubClass.class;
}
}
もしくは
public class SuperClass {
public static void main(String[] args) {
todo(SuperClass.class);
}
public static void todo(Class subclass){
System.out.println(subclass.getName());
}
}
public class SubClass extends SuperClass {
public static void main(String[] args) {
todo(SubClass.class);
}
}
>>198 >>200 理論的には分かりやすい説明ですが、ググったりしたのですが具体的なやり方がぜんぜんわかりません。
1.カードの枚数分の配列を作る。 2.乱数を2つ発生させて、2つの数字の指し示す配列の中身を入れ替える。 3.気が済むまで2を繰り返す。 とかなら簡単じゃないかな
ArrayListに突っ込んでCollections#shuffle()を使えばいいんじゃね
馬鹿には無理
馬鹿にも限度があります><
トランプの性質上、ジョーカーは例外として 同じものがないのだよ java.utilで使えそうなインタフェースがSet こんな感じで、作るものの本質を知ることからはじめるのがプログラミング 制御したい物をどのように組み立てるのか、よく考えるところからはじめよう これは言語云々の話じゃないけど、心の片隅にでもとりあえず置いてほしい フィールドとしてSet<Card> cardSet = new 何とかSet<Card>(); cardSetから取り出されたものもさらに別のSetにぶち込む そのときにコレクション.ソート機能をつかってコンパレートする イメージは伝わったかな
ちなみにCardは int number enum Type { スペード("スペードマーク")、ダイヤ("ダイヤ"); final String マーク; Type (String マーク) { 初期化 } } 必要があればenumコンストラクタのフィールドをどんどん追加すればいいのかな enum内にstatic なメソッドも持たせられるのでいろいろ使い道があると思う
Listを2つ用意(A,Bとする)してAに1〜52を格納,Bは空 0〜51の乱数を発生させ得られた数番目の要素をAから削除しBに追加 乱数の範囲を1減らして↑を繰り返す
ふーん
>>197 >>200 の方法をとるのは後ろからになってるけどざっと実装してみた。参考にどうぞ。
import java.util.Random;
import java.util.Arrays;
public class RandomSet{
public static void main(String[] args){
//0 〜 LIMIT-1 の重複しないint配列を用意
int LIMIT = 52;
int[] rand = new int[LIMIT];
for(int i=0;i<LIMIT;i++){
rand[i] = i;
}
//配列をシャッフルする
Random r = new Random();
int temp = -1;
for(int i=LIMIT;i>0;i--){
int index = r.nextInt(i);
temp = rand[index];
rand[index] = rand[i-1];
rand[i-1] = temp;
}
//出力
System.out.println("0 〜 "+(LIMIT-1)+" までの重複しない乱数列");
for(int i=1;i<=LIMIT;i++){
System.out.printf("%3d",rand[i-1]);
if(i%10==0){
System.out.println();
}
}
System.out.println();
}
}
なんだこの役に立たないサンプルは
配列の添え字が0になるのがそんなに嫌か
何言ってんだコイツw
なにこのドヤ顔ww
重複しない乱数をどうやって実装するかによって性格が分かりそうだなww
意味不明
あいかわらずアホなスレですな
すみません、用語についての質問です。 セッター、ゲッターについては以下のような解釈であってますでしょうか。 セッター:異なるクラスのprivateな変数に対し値をセットするためのメソッド ゲッター:異なるクラスのprivateな変数の値を取得するためのメソッド
>>227 ゲッター:主人公側のロボット
セッター:敵のロボット、実は主人公のオヤジが乗ってた
>>227 そう。
フィールド自身は private 宣言で、
フィールドアクセス用のメソッド は public 宣言だよ。
>>229 必ずしもそうとは限らんけどな
Set/Getはprotectedかもしれないし、
Set/Getのあるクラス内にフィールドが存在しないかもしれない。
屁理屈乙
>>230 >Set/Getはprotectedかもしれない
例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?
>Set/Getのあるクラス内にフィールドが存在しないかもしれない
これについては良くわからないのですが、フィールドが存在しないクラスにSet/Getを用意する必要性が出てくることもあるということでしょうか>
常に単純にフィールドの読み書きをするだけだったらpublicフィールドでいい。 わざわざメソッドを通すなんて面倒なことをするのは、 後で実装を変更するため。 直接フィールドを持たないような実装に変更することもありうる。
例えば日時を管理するクラスに曜日フィールドはなくてもいいが、 日時から曜日を計算して返す曜日ゲッターがあってもいい。
>>234 Set/Getがメソッドである本質は、物理的なコードの書き換えというより
継承での実行時書き換えのためだろ。
>>233 下についてだが、どこまで素人かしらんけど、
Javaがある程度解るならこんな感じ。
DelivedBはExampleBaseを使える様に
getValue()を用意してるけど、DelivedBとしては
100以外返す必要がないないんで、フィールドをもたない。
interface ExampleBase
{
int getValue();
}
class DelivedA implements ExampleBase
{
private int value;
public int getValue()
{
return value;
}
}
class DelivedB implements ExampleBase
{
public int getValue()
{
return 100;
}
}
>>233 >例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?
いや、アクセス権限は関係ないというはなし。別にprivateにしたってset〜()/get〜という形でメソッド定義してりゃ
セッター、ゲッターと呼ばれる。アクセッサーと呼ばれるかどうかは知らんけどな。
皆さんたくさんのご意見ありがとうございます。 私はVC、VBの経験はありますがJAVA(オブジェクト指向)はまだ記述方法等を順に学んでいる段階のため理解が浅く、 ご教授頂いた内容を理解しきれない部分があります。 とりあえず今の段階ではset〜()、get〜()とネーミングされた、値を設定・取得するためのメソッドという理解に留めておこうと思います。
>>239 蛇足だが、現実でVCの経験があると言うのは控えた方がいい。
VCでC言語をやっていたぐらいにしておかないと
ハイレベルな作業頼まれてトラブる事が有るぞ
初心者にドヤ顔www
そんなにマイクロソフトに染まっちゃているならいっそのことドットネットの方をやったらどうですか?
だよなぁ 普通VCやってたって言ったら日本では最高レベルのプログラマの称号だし。 VCを本当にやってた人間ならJavaなんて学ぶことなく使えるし
日本で最高に苦労していたプログラマって意味ですよね?
C++つかってる様な仕事で締切りに追われて苦労してるようなとこあんの? うちとか約1年ぐらい掛けてゆっくり1つの製品作ってたりするけど。 C++で製品開発はあっても、受注なんてほとんど無くね?
VC++とC++(gcc)はまったく別物ですよ。
>VC++とC++(gcc) そもそも、この書き方がおかしい Microsoft (R) C/C++ Optimizing Compilerとgccを比較してるのか? 統合開発環境全体とgccというコンパイラ比較してんのか?
ツマラン
>>245 C++ のベテランには、C$ は使うが Java は意地でも使わないって人もいるね。
× C$ ○ C#
ところでC++のベテランさんは得意のC++で何ができるんですか?
ハンガーwwww どう見てもブーメランだろwwww
MMDが作れる
>>249 俺逆にC#の方をあんまり使わないわ
仕様が頻繁に変わる言語は追従するのが面倒といより、
今まで書いたコードがゴミになりそうで嫌。
そういういみで、PerlとかPHPも苦手。
使い捨て用にしか使わん。
>>255 C#はC++が03から11になる間に4もバージョン上がったろ
ついでだがPerlは、Perl5からPerl6になって互換性なくなった
PHPはclassが予約語になった
サンクス!
どの言語でもだが予約語の追加は勘弁して欲しい 予約語ついかする言語とは深い付き合いしたくない
>>256 javaだと2003あたりから2011(java7)まででいくつ上がったんでしたっけ?
>>259 ライブラリや言語外はそれなりに更新されたけど、
言語自体はそんなに頻繁に更新されたか?
Java2からJava7の間で目立った変更があったのって
5のあたりぐらいじゃないか?
実質は、1.2 〜 1.7 だし・・・
推奨されないメソッドを使わなければそんなに困らないよね
>>260 こんなチンコすれでドヤ顔なんかしてないで、もうちょっといろいろ勉強した方がいいと思いますよ。
もうちょっといろいろ勉強した方がいいと思いますよ(ドヤ
>>258 C#はコンテキストキーワード上等だからキーワード増えても予約語は増えず基本的に互換性は保たれる
Javaは予約語の追加をやった前例がある
enumくらいだろ
C++ のベテラン必死w
assert
enumとassertって実装前はconstと同じ予約じゃなかったんだっけ?
新しいキーワードを無効にするコンパイラーオプションとかあったよな 新規追加だよ
予約語なんてパッケージや名前空間に入れてしまえばいいのにな どの言語もしないな java.import java.import; import java.int; import java.class; とか。
assertが追加された予約語と感じる奴が いったいどれだけいるのか
名前空間とか考えず使えるから予約語なんだろ
事実として予約語だからな 何と言おうが思いっきりbreaking changeだ
>>275 別にそこに拘る必要ないだろ
予約語と表現するのが嫌なら別の名前でかまわないだろうし
そういやキーワードという言い方があったな
今日のキーワードは…
予約語!
おまえらassert使ってる?
assertって何がしたかったんだろうな 融通利かなすぎだろ 結局のところ条件コンパイルなんだからC#のConditionalみたいなのにすればよかったのに
>>282 アサーションを使わないというのは、ちょっと考えにくいのですけれどもね
アサーションする=assert使う とは限らないだろ
開発環境やプロジェクトのポリシーと密接に関連してるからな ライブラリでやるべきだった
ライブラリじゃ不可能だから言語構文に入ったんでしょ
いつか来た道
enumの話しならともかく assertはライブラリでも出来るだろ
>>288 どうやって?
if文使ったりしたらデバッグモードじゃなくても判定が入るよ。
>>273 javaだとannotationとして似たようなものは既に実装されています。
浅学なおまえが思いつく程度に不十分な仕様なら、ネットにも大量に苦情が上がっている。 だから、おまえの不満はネットでは既に語り尽くされているか、全くの見当違いでしかない。
苦情が上がらないだけなら 単に見向きもされてないだけの可能性もあるから 論理的な解釈とはいえないな
assertをlibraryって、えっと議論する必要あるの?
馬鹿には無理
意味はあるだろ そもそも外す必要なんか出るのかっていう根本からして
外す必要が無いならassertなんて要らないだろ
C#はライブラリでやってるぞ アノテーション使ってコンパイルオプションで外せるメソッドが定義できる あれパクればいいんだよ
assertだけ着脱できても正直小回り効かないよね で、どうせ着脱しないしオーバロードたくさんある方が便利だよね ってことでcommonsライブラリとかのassert使われちゃうっていう
C#でDirectX(とOpenGLも)がまともに使えるならC#がいくらキモくてもまだ活路があるんです
話それるがApache CommonsってJavaで書いててもC臭いから苦手。
条件コンパイルは絶対やらないっていうんならそれを貫いてVMレベルで実装すればよかったのにな あっさり覆して中途半端に条件コンパイルに手を出したからおかしくなった どうせ条件コンパイルやるんならC#のようなやり方した方がずっと綺麗で有用
commonsがC臭いってどの辺りだろ?
java8でmodule仕様が入るので改善されますよ。
>>303 Log4jやらCommons Validatorやら全般的に。
例えばLog4jならこんな感じ。メソッドでエラーレベルを変えてる。
Logger logger = Logger.getInstance(Sample.class.getName());
logger.info("This is info.");
logger.warn("This is warn.");
logger.error("This is error.");
メソッド固定なら、構造体と関数で書いたCのロガーと変わらないじゃん。
Javaでやるんだから、メソッドじゃなくオブジェクトでエラーレベルを変えてほしい。
オブジェクトを切り替えるだけでログレベルを一括で置き換えられるようになるでしょ。
Logger logger = InfoLogger.getInstance(Sample.class.getName());
logger.write("This is info.");
Logger logger = WarnLogger.getInstance(Sample.class.getName());
logger.write("This is warn.");
Logger logger = ErrorLogger.getInstance(Sample.class.getName());
logger.write("This is error.");
Validatorも似たような話で、mailValidate、tellValidateとかメソッドで別けるんじゃなく、
validateメソッドを持ったMailValidatorクラス、TellValidatorクラスという形で別ける方がJavaらしいと思う。
でざぱた
馬鹿には無理w
>>305 Loggerが何を抽象化してるか考えると、そのままでいいと思う
sayHelloとsayGoodbyを持つPersonクラスの代わりに
HelloPersonとGoodbyPersonを用意しよう
っていう位には奇妙に感じるんだが。。
javaではsingletonとstaticって相性が悪いんですか?
>>308 ちょっと例が良くないなsayHello、sayGoodbyだったらhelloとgoodbyを引数に回すもの。
>>305 Validatorはそうなってなかったっけ?
>>310 sayHelloであってるよ
インスタンスが日本人なら「こんにちわ」
インスタンスがアメリカ人なら「やあマイキー」
ってら言わせるんだから
>>308 java2d関係を使ったことがあるなら奇妙というほどでもない
>>312 man.sey( new Hello() );
man.sey( new Goodby() );
これでも行けるでしょ。
>>312 そこは"hello"と"goodbye"をキーにしてi18nだろjk…
sayをうちまちがえたハズカチ
>>314 それじゃ国際化するときに、HelloFactoryとGoodbyFactoryが必要になる
なにより凝集性がよろしくない
>>315 ああいいね。
それ見てこんなの思い出したわ
man.say( Hello.getInstance() );
man.say( Goodby.getInstance() );
台詞が決まってるなら
man.say( Words.HELLO );
man.say( Words.GOODBY );
>>317 台詞を言うのはmanのオブジェクトで、HelloやGoodbyは識別用だよ。
>>315 そっちでもいいかも。
ただ、
声だすついでに身体バンバンたたいたり
ハグ♥ってしたりが表現できないよね
>>319 sayメソッドの中身が悲惨なことにならないか?
バグ♥
定期的に脈絡なくC++にアンカー春奴は何かコンプレックスでもあるのかな?
>HelloPersonとGoodbyPersonを用意しよう 別にこれもいいと思うけどね。sayで何を言うか本人しだいじゃん。 単にPersonでもsayHelloやsayGoodbyじゃなくて、say持たせて、 meet、breakupメソッドを用意し、meet、breakupどっちが呼ばれたかで sayの挙動を変えて上げた方が取り回しが効いていいと思う。 さらにinterfaceにsayを持たせておけば、meet、breakupを持ってる事が必須じゃなくなるしね。 他のメソッドでsayの挙動を変えてあげてもいい。
どうでもいいが要求次第 現実をシミュレートなんてしなくてええんやで
>>324 interfaceにsayもたせたら、直接呼ばれちゃうぞ
Interfaceの型でうけたら、meetとbreckupがよべない 個別の型でうけたら、meetとbreackupが呼べるかわりに、sayまでみえちゃう sayが外に見えてる以上は自分の都合だけでは書き換えられない つまりmeetとbreakupの取り回しがしにくい
あぶすとらくと
public final void say(){ System.out.println("馬鹿には無理"); }
Japanese japanese = new Japanese(); japanese.meet(); Irish irish = new Irish(); irish.breakup(): Person person; person = japanese; person.say(); person = irish; person.say(); 実用上こまりはしないと思うけど。
ん?設計意図がわからん breakup→sayの順で呼んで初めて話してくれるのか? どうなんだろう
>>333 そうよ。breakupを呼ばなくても何らかの振る舞いはするでしょうけど。
Command japaneseSayHello = new JapaneseSayHello(); japaneseSayHello.execute(); ( ・´ー・`)どや? executeの実装だけ入れ替えれば何だって実行できる。 これがオブジェクト指向や! などと使い方を想定せずに抽象化するのは 複雑さを助長するだけで百害あって一利なし
>>331 System.setOut(new PrintStream(new ByteArrayOutputStream()) {
public void println(String x) {
System. console().printf("誰でもできるよ(^−^)" );
}
});
ゆとり乙
finalつけたのに残念だったね
勉強になるわー
ゆとり乙
ゆとりにはjavaしか無理
馬鹿がんがれ
JOptionPane.showMessageDialog(null, "\"馬鹿\"って言った奴が馬鹿", "", JOptionPane.ERROR_MESSAGE);
>>335 ラムダとかそんな感じだよね。
用途は、使用する側次第。
Project Lambdaって結局クロージャ使えるの?クロージャもどきなの?
クロージャ使いたくなるのってほんとたまになんだよな そのたまににできないと「糞がぁ」と思っちまうんだけど…
クロージャもどきってなんね
exceptionって イグゼプション? エグゼプション? エクスセプション?
いっくしょんぺ
エクセプションっぽ
いまゲームを作ってるのですが、 ちょっとうまくいかないことがありまして、、、 質問させていただきます。 x軸方向y軸方向にそれぞれ異なった速度を持ったイメージがあって それが画面左から出現してきて右に消えていくというのを作りました。 これを無限に行いたく、配列を使ってやってみたのですが、 配列には限りがありますよね??うーん、、、うまくいきません。 どうにかうまくいく方法はないですかね??
何がしたいのかよくわからんけど、右に消えていったイメージをまた左から出すようにすればいいんじゃないの?
>>353 すいません、説明不足でした!
シューティングゲームで自分が打った弾がイメージに当たったら消える
といった風にやりたいのです!
配列を使わずにArrayListなどを使いましょう
なぜListなんだ なぜ
javaでopengl3(glsl3)以上とshade programmingを使いたいんですがどうすればいいのでしょうか?
これからjavaを勉強するにあたりさ(他言語経験があり)あどうするかと調べたところ javaサーブレットjavaアプレットやら色々あるようなんですが、 巷の業務系javaプログラマ募集の求人でjava出来る人ってのは java = javaサーブレットって事で良いのでしょうか? Java出来ますと言えば:Javaサーブレット? 業務系:Javaサーブレット? Web系:Javaサーブレット&Android? 会計やら物流やらもJavaサーブレットによるWebアプリって事になるのでしょうか?
>シューティングゲームで自分が打った弾がイメージに当たったら消える >といった風にやりたいのです! 最終的にこれをしたいんだろうが・・・ >x軸方向y軸方向にそれぞれ異なった速度を持ったイメージがあって >それが画面左から出現してきて右に消えていくというのを作りました。 ここは今理解できてる事だと解る >これを無限に行いたく、配列を使ってやってみたのですが、 >配列には限りがありますよね??うーん、、、うまくいきません でもこの一文で何がしたいのか解らん 玉を複数画面上に出したいが、配列に格納しきれないと言ってるのか? ゲームなら普通上限決めて、一括で確保するぞ。
土方さんはもっと簡単なマイクロソフト・ドットネットやウインドウズ・メトロを勉強した方がいいと思います。
>>358 アプレットかサーブレットかと言えばサーブレット。
ただ、まんまサーブレット使うことは少ないと思うが。
あと、商用ならサービスとか、バッチ処理とか、
Webサーバー使わないものも結構有る。
最近の話かもしれないけど。
>>359 伝わりにくくてすいません
永遠と画面左から敵が出続けるんです。
そいつらを画面手前にいる自機から発射される攻撃でやっつけ続けるというゲームです。
そして攻撃されなかった敵は画面右へと消えていきます。
無限とはいったものの
制限時間をつけるなり、敵から攻撃を受けてゲームオーバーにするなりしようとおもうんです。
敵の数だけ配列をつくると大変なことになるのではないかと、、、
>>346 クロージャは使えない。ラムダ式は使える。
あくまでもSAMタイプのインタフェース(ひょっとしたら抽象クラスもOKかも)のインスタンスを作る時に
ラムダ式な書き方ができるようになるだけ。
相変わらず、親スコープの変数はfinalで読み込まないとイケない。
ちなみに文法はほぼC#のラムダ式だな。
364 :
デフォルトの名無しさん :2012/04/30(月) 03:39:20.31
初心者なんだが、実際どんなのが作れるんだ? 目標を立てるのに知りたい。
日経ソフトウェア、アクセスランキング2012年04月28日
@ [1]JVM,API,言語仕様---Javaは三...
A [2]Java SE 7の新機能を読み解く
B [4]クロージャやモジュール機構など,Java ...
Java新時代へ
日経ソフトウェア
http://itpro.nikkeibp.co.jp/NSW/
369 :
デフォルトの名無しさん :2012/04/30(月) 04:30:03.14
>>368 どこでもそう言われる。
具体的にどんなのだか教えてくれ
>>367 そこ、登録しないと読めないし日経は有料サイトでウザいからリンク張るな
itは読んでるとイラッとするからgoogle 検索でもblack listに入れてる。
Java でちょっと前に話題になったARとか作れます. で作られたWebサーバとかめっちゃ使われてます. だけで作られたOSも、昔ちょっと話題になりました. はどこでも動きます.PCや携帯電話,Android,車載機器など.WindowsやLinux(組み込み系Linux),MacOSが動いていれば動かせます.もちろんWindowsで開発してMacで動かせます. は少し遅いです.遅い部分はJavaの利点から生まれるので,どうしても遅いと感じるならC畑へ行ってください. は様々なアドオンを自由に組み合わせられます.ちょっと複雑ですがパッケージやJNIを使えば何も恐れることはありません.Jnodeがそれを実証しています.
373 :
デフォルトの名無しさん :2012/04/30(月) 04:47:25.30
>>372 ほうほう。
なかなか便利ですなぁ。
ありです。
>櫻庭 祐一=Java in the Box 主筆 さんもitpro.nikkeibp.co.jp(日経)やatmarkit.co.jp(itmedia)に群がっているit土方相手にしないとやってけないなんて落ちたな windows it土方に対してjavafxやswingなどjava se clientをいくら訴求しても理解できるはずないのにw
>>372 昔のSUN vs MS訴訟の結果と同じで、AndroidはJavaではありません。
しかも旧SUN(Oracle)からJavaのライセンスも得てません。
[すこし遅い]んじゃなくて「とんでもなく遅い」な SQLとなんかフレームワーク合わせただけのドカタ仕事なら問題にならないけど
Javaは最速に近い
問題にならないならそれでじゃないですか
問題にならないならそれでいいじゃないですか
遅いって何と比べてんだろ。 同等の機能を持った他の言語と比べないと意味ないよね。 マルチプラットフォームでOOPで、一定以上の普及率を持った とんでもなく遅くはない言語知りたいな
言語?
AndroidはJavaではありません(キリッ
Java APIのサイトに繋がらないのは自分だけですか?
あ、SE7のページなら繋がりました。お騒がせしました。
Sunのページ死んでるのにGoogle先生いつまでも引用するんだぜ ボケちゃったのかな・・・
>>382 有名どころだとC++か
NativeClient上で動かすかVM上で動かすかで
パフォーマンスが結構変わるけど
C++(RTTI付き)でコンパイルしたプログラムってそんなに早いんですか?
ベンチマーク嫁
RTTIはサイズが肥大するだけで速度関係ないだろ 速度的に言えば、SIMDが使えるのとハンドルを使わず直アクセスしてる点、 広域に最適化される点と、最初から最適化されてる分早い 仮想関数でJavaに負ける時もあるが、オブジェクトの実際の型が変わらないなら 親クラスで渡された時でも、派生クラスの持つ実際の関数をインライン展開する コンパイラーが増えたんでそういうケースが問題になる事も減った。
現実問題として、大規模で速度が必要だったり複雑な処理して重いプログラムはだいたいC++で作られてるだろ。 それが答えだ。
ネイティブとの速度差の議論は、jvmではjitコンパイルを導入してc++にある程度追いつき、次にllvmのようなネイティブで利用可能なリソースに最適化したスマート・コンパイルがなされて、 今のjvm技術ではc++とほぼ同等、再コンパイルしてない古いc++プログラムなら追い越してるって聞いてますよ。
>>394 聞くのは勝手だが自分で試せ
あと、VMかNativeかは言語関係ない
VM用に吐いたバイナリーとネイティブ用に吐いたバイナリーを比較するなら
同じ言語で書いたVMコードと、ネイティブコードを比較しろ
お前がなwww
C++に取り付かれると人格だけじゃなく頭まで壊れちゃうって本当のことなんですかぁっ?!
たぶんそうです Javaも例外ではありません
それならC#に行っちゃった人はどうですか? C#はドットネット戦略の中心でありマイクロソフトの虎の子ですよ?!
スレチ
C++よりCの方が速えー速えー言うけど、実際はCの標準ライブラリと<algorithm>つかって 書いただけならC++の方が速いしな。型情報を元に最適化出来る場合は10倍以上速くなったりする。 実測有るのみだ。
コンパイラーの出来しだいだな。
ジャバでは、プログラムの速度がクリティカル・イシューな時はあまり使わず他の方法を検討します。
だな
ないな。 それはともかく、ページの広告がウザすぎて開いた瞬間閉じようかと思った
406 すんません、理由をそえておながいします
まず必要な理由を言ってみてもらわないと
排他掛けるなら座標クラスを扱ってる箇所に掛ける必要が有るだろ x, yを返すだけってレベルじゃ要らん。xとyの2つの値を設定してるような 不可分な操作にはつける必要が有るけど。
そのメソッドの処理中に他のスレッドから呼び出されたら困るならsynchronizedつければいい
>>406 を見るとsetXY()している間にgetX()が呼べたりするから設計から間違ってる気がする
呼べたりはしないでしょ
synchronizedは異なるブロックでも同期するんだね あまり使わないから知らなかった でもgetX()してgetY()する前にsetXY()が呼ばれる可能性はあるね
俺ならZahyoクラスにsynchronizedなんて付けない。 そのかわり同期はZahyoクラスを使う側に任せる。 synchronized(zahyo){ zahyo.set(x,y); } synchronized(zahyo){ x = zahyo.getX(); y = zahyo.getY(); }
415 :
デフォルトの名無しさん :2012/04/30(月) 17:33:16.09
みんなinterfaceってどう定義してんの? 自分はhoge1のように定義してるけど、皆さんの意見を聞いてみたいです。 interface test { public abstract void hoge1(); public void hoge2(); abstract void hoge3(); void hoge4(); }
hoge4 無駄なものを書く必要はない
>>415 public abstract ここ非推奨な書き方だろ
うむ
>>415 一番上だな。
public abstract が暗黙かどうかいちいち頭切り替えて読み書きするの面倒だし。
一番下に決まってるだろ
句読点省略するような奴は省略するって事か。
ちがうよ 推奨が一番下なんだよ
コーディング規約による とにかく書けるものは書け派(1)と書かなくても良いものは書くな派(2)にわかれる 駆け出しプログラマなら(1)の方が読みやすいかもしれない それなりに訓練されたプログラマなら(1)は冗長で目障りだという 良く訓練されたプログラマなら(1)でも(2)でもどうでも良くなる
そんなとこで個性化してガラパゴス化する意味なんてないぞw ほら本家から引用だ The Java Language Specification Java SE 7 Edition 9.4. Abstract Method Declarations It is permitted, but discouraged as a matter of style, to redundantly specify the public and/or abstract modifier for a method declared in an interface.
redundantly specify っちゅうこっちゃ!
そんなに権威がありがたいならSunのコーディング規約に則って8タブ4インデントにしてろ
googleさんのコード見たらhoge4だった
エディタと勘違いしてるアホがいますなw
public abstract interfaceのこれってそのうち廃止になるんじゃないの?
ピントずれた意見だな
挟まったか
っ It is permitted, but …
<div class="btns"><a href="#" class="button">Clear</a><a href="#" class="button" onClick="document.getElementById('form').submit()">送信</a></div> 上のタグでメールフォームの送信、クリアを作成しているが、#の位置には何を入れるとメールがWEB上から上手く送信できるようになるのでしょうか? そもそもこのスレで良いのかも判らないですが…、お教えいただけると助かります。
Javaスクリプトさんが現れました
>>435 ないよ。ただ他の言語じゃよくやってるじゃん。
interfaceで修飾子が無くなれば、interfaceブロックに入ってから
修飾子除去プロセスが不要になって若干速くなる。
あとコンパイラのinterfaceに対する特殊化部分も簡略化できるよね。
OpenJDK見ると無駄そうで仕方ない。
>>439 普通にコンパイラ書いていれば、interfaceのメソッドに付けられる修飾子から
public と abstract のフラグを消すだけだから大した簡略化にはならないよ。
interfaceのメソッドに付けられる修飾子にはアノテーションが残っているから って付け忘れた。まぁ、わざわざ書かなくても判ると思うけど。
OpenJDK見てみれば? 一部クラスと同じ処理呼び出してるけどアレ無駄だよ。 そのうえ、privateとか他のキーワードを弾く処理まで入ってんだから。
それ単にリファクタリングした方がいいってだけじゃね? ぶっちゃけ簡略化しても焼け石に水でしょ。
そんなことよりSAMタイプについて語ろう
そうは言っても残しておくメリットなんて全然ないし。 JBossみたいな新しくコンパイラ作る際に¥は、クラスと同じ修飾子処理の部分外して、 全部public abstract属性固定にし、 privateとかのキーワードチェックだけにできる理由じゃん。
¥はうち間違い。無視して。
自分の狭い用途や視野でしか見えないから 互換性なんて思いつかないんだろ。
>>424 そもそも、これ何で非推奨にしたんだろ?
implements @protected InterfaceName とかすると
protectedなメソッドの実装義務が発生するとかやりたかったのだろうか?
やっぱり違うな。
JLS2ndの時には既に非推奨だったな。
JLS1stからすでに非推奨だったりする。
>>448 だからもう非推奨なんだから無駄だし捨ててもいいんじゃねと言ってるだけ。
互換性なくなるのは解ってるよ。それでも既存のキーワードを廃止する言語はあるんだから。
互換性を上回るメリットを提示できないと廃止は難しいんじゃね?
>>453 非推奨って言っても全然守られてない非推奨だからなぁ。
JDKのソースにすら public つけてるコードが大量にあるし。
新しく作るなら、だからJDKの古いこーは問題ない
コードは
ダメな記事引用するな
不可分じゃなけりゃ理屈上要らんけどな
これ真似したらダメな悪例の典型だぞ
406 すんません、なぜダメなのか理由をそえておながいします
synchronizedは必要だぜ マルチスレッド プログラミングの常識だろ 複数のコアをもつプロセッサでは、あるプロセッサが変更した値を 別のプロセッサからも見えるようにする必要があるわけ javaではsynchronizedブロックがこの役割を果たしている 「java メモリーの可視性」 でググればたくさん出てくるぜ
AtomicReference
>>462 不可分操作でなく無駄だから
同期プリミティブを理解してないバカに見えるから
ぬるぽ → ガッ ってあるじゃん 俺ついこないだまで「ガッ」ってようするにcatchすることだと思ってたんだけど wikiみたら 「殴る」だったため」という説と「Javaの例外(エラー)なので見つけたら叩くのはあたりまえ」という説の2つが挙げられている なんだとさ みんな知ってた?
C++のベテランさん(unmaneged windows,linux,gnome,kde)たちはGUI Tool Kitは何使ってるのかはいくら調べても出てこないので、C++さんはモーダンなUser InterfaceつまりUI作ったことないしUXに関心もなければMVCなどGUI設計の方法論も知らないのかなって思ってます。
ナニイッテンダ?
最近C++のベテランさんがよく出没するのでTKは何使ってるのか聞いてみたかっただけです。
自分のポンコツ脳だと理解できない事態なので助力をお願いしたいです。 hoge1.java public class hoge1 main String st = "hogehoge"; hoge2 hoge2 = new hoge2(st); hoge2.run(); hoge2.java public class hoge2 implements Runnable BufferedReader reader; public hoge2(String st) reader = new BufferedReader(new StringReader(st)); try { System.out.println(reader.readLine()); } catch (IOException e) {} public void run() try { String line = reader.readLine();//lineがNullになる System.out.println(reader.readLine()); } catch (IOException e) {} runメソッドでlineにreaderを代入?したいのですが、nullになってしまいます。 hoge2メソッドの方でのSystem.out.println(reader.readLine())は stの内容が出力されるので書き方はあっているような気がするのですがそれ以上の事が解りません。 恐らく無知故の基本的な間違いだと思うのですが、どうすればいいでしょうか。
だなw
わざと読みにくいようにして貼り付けたのか? BufferedReader#readLine()はそれが正しい動作だからちゃんと勉強しろ
>>465 「なぜ無駄なのか」
そこがいちばん知りたいんです。
理由をおしえてくださいませんか。
お金持ってないようなのでお断りします
ホントは知らないんでしょw
>>475 無駄じゃないよ。synchronized必要
setterにsynchronizedを付けるならgetterにも付けないと不釣合いだろ
カッコ悪いだろ
ここを嫁
http://gee.cs.oswego.edu/dl/cpj/jmm.html final class VFloat {
private float value;
final synchronized void set(float f) { value = f; }
final synchronized float get() { return value; }
}
上記getメソッドにsynchronizedが無い場合、setメソッドでセットされたはずのvalueの値が
別コアで実行される別スレッドから読み出せないことが有りうるんだよ
なぜなら、高度に最適化された優秀で賢いコンパイラは変数をメモリーではなく
CPUのレジスターに割り当てたりすることもあるからだ
synchronizedの入口と出口でマルチコアCPUのコア間の不整合が解消されるしくみだ
synchronizedつけさえすればいいと思ってるのはアホ
別コアとかレジスターとか、C++なら気にする必要はあるでしょうけど・・・
>>471 最初のsystem.outをコメントアウトすればわかる
>>478 かっこいいなぁ 俺英語読めん
synchronizedの使い方もよくわからん
いつまでたっても初心者から抜けれんわ
「synchronized」とか解説してる入門書なくない?
>>485 ありがとうございましゅ
結城さんの本はデザインパターンの本しか持ってなくて
それも5パターンぐらいまでしかまだ理解できてないや……
知識レベルがカスなことは自覚してるんだが上達したいなー
馬鹿には無理
>>475 何度も言うがgetの中身が不可分操作じゃないからつける必要がない
つけてしまえば速度が下がる
>>475 の話は、そもそもvolatileつけてたら関係ない
JavaのvolatileはC++のvolatileと違ってアトミック性を保証するためのものだ
×
>>475 の話は、そもそもvolatileつけてたら関係ない
○
>>478 の話は、そもそもvolatileつけてたら関係ない
『Java並行処理プログラミング』わかりやすいからら読んどけ
volatileはアトミックじゃないぞ。xとyが関連するならvolatileじゃ足りん。 それよりZahyoにsynchronized付けるんじゃなくてZahyoを使う方にsynchronized付けたほうがいいんじゃないの?
>>491 xかyいずれかのset/getでアトミックが保たれてるから、話の流れとしては間違ってないんだよ。
結局Zahyoを使う側で同期をとるってのが正解。
不変クラスにしよう
>>406 は実行環境のver次第でJMMが変わるから環境書け。
古いJMMならvolatileをsynchronizedするのは正しい。
お前ら、稀なケースばかり考えるんじゃなく常識の範囲で考えろよ。 相手はどう考えても初心者だぞ。古いVMつかってるかどうかとか考える必要ないだろ。
俺はこのネタついては既にスルーしてるw
どっちにしてもZahyoインスタンスがリオーダーされたら意味ないから使う方のソースも見てみないと
たしか使う方のソースも付いてた
>>474 >>482 半角スペース使ったため見難くなってしまって申し訳ないです。
bufferreader周りを勉強し直してみます。
ありがとうございました
synchronizedを付けようがつけまいがどのみち間違っているから好きな方でどうぞ
カバにはリーム―
メソッドの頭にシンクロつけるようなソース書くケースってあるのかな? 少なくともセッターゲッターにシンクロ宣言はつけないと思える これはロックオブジェクトの概念を知れば理解できる 使う側から見た視点でタイミングを考えるべきに同意 それと同期、平行この2語を真に理解することはとても大事だと思う。 くどいけど セッターゲッター両方にシンクロ宣言つけたら そのインスタンスに同時操作しようとするスレッドが、順序のない行列作っていろいろ面倒なことになる
java.util.concurrent この下にあるやつ API眺めるだけで大体理解できると思うよ
実際get/setみたいな粒度の同期化なんてほとんど意味無いよ 利用する側は大抵もっと大きい単位でロックする必要がある
使う側で同期で答えでたやん
スレッドAで sync(o){ o.ijiiji } スレッドBで o.ijiiji ってするとスレッドAがoをいじいじしている間は スレッドBはoをいじいじできないの?
スレッドBの方で排他制御してないなら自由に触れる。
なにかを自作しようと思うとほとんどサンプルコードの改変になって悩んでます 自分で作った気がしないのですが……
サンプルコードの改変で作れるようなものなんて、今更君が作らなくても既に遥かに優れたものが世の中にある っていうか、普通にPC使っててこういうのが欲しいと思ったときに まだ誰もそれを作ってないなんてことはまずありえないから、はっきり言って時間の無駄
そうですよね ではプログラミングはどのように勉強していけばいいのでしょうか?
趣味ならAndroidでもやれば GUIなら.NETやC++の方がいいしちょっとした作業の自動化ならスクリプト言語の方がいい
何言ってんだ、コイツw
>>511 このいいかたでは、
サンプルコードの改変がダメのようにきこえてしまうが、
ライブラリをべんきょうするとき、サンプルがあればたすかるね
スマホアプリいいよ PCではサンプルコードの改変レベルの糞アプリでもスマホで出せば評価される
こういうのが欲しい!と思って無かったから作った人がここに
public class Tc { public Tc() { } } Tc tc1; //@ クラスについて初歩的な質問なんですが こういうふうにクラス宣言して主クラスの最初で@のように定義すると通るのですが 他の場所 onCreate()内 等で@の定義をすると ’ローカル変数 tc1 は読み取られません’とEclipseに怒られてしまい実際実行されません。 その他の場所で@の定義をするにはどうすればいいですか?
それは意味ないローカル変数を宣言した時に出る
>>518 言語仕様的なエラーじゃなくて、
プログラムミスの可能性が高いから警告にしたりエラーにしたりできるようになってる。
Window->Preferences->Java->Compiler->Errors/Warnings->Unnecessary code->Value of local variable isnot used
Project->Properties->Java Compiler->Errors/Warnings->Unnecessary code->Value of local variable isnot used
を ignore にすれば警告かエラーは消える。上はワークスペース全体の設定で下はプロジェクト固有の設定。
ignore にするのは推奨しないけど。
>>518 ローカル変数を宣言しても、それを使っていなければ宣言した意味がないので、親切にも注意してくれているんだ
ちゃんと使えば文句言われない
522 :
518 :2012/05/02(水) 18:33:02.52
ローカル変数でなく class と宣言してるはずなんですが。 あと上の記述だとスルーだけになるのですが Tc tc1 = new Tc(); こう書くとエラーになってしまいます。 これはどういうことでしょうか?
だから、そのローカル変数 tc1 を、使ってないだろう?
ああ、最初にグローバルで@の記述を必ずやらないと 途中から書いてもクラスとみなされないということですかね。 public 書いてるからどこからでも参照できると思ってました。
あとローカル変数ならば Tc tc1; じゃなくて int tc1; とかじゃないでしょうか? コンパイラはそういう判断かと思ったんですが。
classを囲う{}の外に書いたら怒られるのは当たり前
>>525 それは変数の型が違うだけだ (プリミティブ型 or クラス型)
ローカル変数かクラス変数かインスタンス変数かという変数の種類は変わらない
変数とスコープを勉強しなおしてこい
>>526 class内のmainで定義すればいいですかね。やってみます。
530 :
518 :2012/05/02(水) 19:07:06.63
ここまでで冒頭でやればいいとわかったのですが 最初にグローバルにクラス作るのでなく 途中から自由にクラスインスタンス作ったり外したりする方法はないのでしょうか?
Tc tc1 = null; tc1 = new Tc(); tc1 = null; とか
Javaを初めて勉強するのにお勧めの教本とかってありますか? プログラミング未経験です
今までファイル読み込みが面倒なのでファイルをクラスに変換するマクロで、 クラス内にファイルの内容を直接埋め込んでいたのですが、 今日、少し大きなファイルを埋め込んでみたところ。 「static イニシャライザーのコードが 65535 バイトの制限を超えています」 まさかJava自体にこんな制限があったなんて…orz うわーどうしよう。
コード自動生成してるんなら適当にメソッド分けるようにすればいいだけじゃね
もしものすごく膨大な定数を使いたかったら、ファイルにまとめて読み込まなければならないってこと?
今はどんな言語でも、膨大な定数を自前で保持しないだろ。 昔はBASICのDATAにマシンコード持たせてたけどさ。
ロードに時間かかるしなあ Javaじゃ用途的にあんまり問題にならないだろうけど クライアントアプリだととりあえず起動してなんか表示してからロードするほうが ストレスを感じさせにくい
539 :
534 :2012/05/02(水) 22:37:53.08
画像ファイルをクラスにするくらい分けないと思ったのですが…。 とりあえずメソッドを分割してみます。お騒がせしました。
ファイル添付できない上にコード量の制限があるBTSにバグ報告するとき gzip + base64 で文字列化とかはやったな。
日経ソフトウェア買って読んでみたら半分いや5分の1ぐらいしか理解できなかった みんなこんな本ふむふむと読んで活用できるんでしょ? 尊敬させていただきます 入門書のあとみんなどうやって成長していってるの?
あなたのレベルではまだ早いってことですよ。 そのレベルで紙情報に対して毎月1000円だすつもりなら、オール日本語アイテー情報紙のPCfan(マイナビ)がいいんじゃないですか。
レベルにあってないことがわかりました 自分では活用できそうにありません 1000円は勉強代ですね ただPCfanはさすがに読んでてもつまらんです それにあれ休刊になったんじゃ?
1000円の勉強代金を支払えば即すべてのスキルが得られるわけではありません。
ゆとり(笑)
日経ソフトウェアって、そもそも技術者が読むよーなのだっけ? 技術者じゃない人が読んで、理解した気になるための雑誌じゃなかった?
あほやな 自分よりレベルの高い本を買ってわからなくても適当に読んでれば 知らないうちにレベルアップしてるのに 自分と同レベルの情報見ててどうすんだよw
ステマ乙
間違って日経NETWORKというのを定期購読してしまって なんとなく眺めてたらいつのまにかネスペが取得できてしまった。 ネスペ取得者にはこういう人が多い。
日経ソフトウェアは中学生くらいが読むもんだけど本当に初歩の初歩から書いてあるから専門外の言語の雰囲気掴むにはいいよ。
コードが書いてある雑誌って減っちゃったからなー 特にJavaとか紙面に乗せると文字数食うせいで 解説とかめちゃくちゃはしょってあるから分かりにくいとは思う
分厚い技術書も大概だろ コードで水増ししまくって内容がほとんどない
内容がないよう・・・ぷぷっ
日本の本はそうだな。海外のはコードはwebかCDに収めて解説がずらずらと書いてあって1000Pとかある
日本語では簡潔に説明できることが英語では単語でものすごく水増しされたような文章になるからね。
英語の本読んだことねーなら無理するな
どうでもいい質問すみません クラスの変数とメソッドの引数が同じ意味の場合、どう書き分けたら便利でしょう? たとえば class Human{ int weight_1; public setTall(int weight_2){ weight_1 = weight_2; } その他メソッド色々 } というクラスを作ると、eclipseだとHuman#setTall()を呼び出すときの自動補完で human.setTall(weight_2) と勝手にweight_2も含めて入力してくれるので、引数を一般的な単語にしたいんですが そうするとクラスの変数をそうじゃない名前にしなきゃいけなくて 今度はHumanクラスを書く際にその変数名が面倒になってしまいます。 ネットを検索するとm_weightとかmWeightとか_Weightにするといいというのもありますが それだとHumanクラスを書く際に補完機能が使いづらくなってしまいます (たとえばm_tallとm_weightがあると、mで補完させると両方引っかかってしまう)
>>558 this
あと、クラスの変数じゃないから。オレオレ定義で呼ぶな
public setTall(int weight){ this.weight = weight; } でいいじゃない
フィールドを"_"で始まる名前にしておけばローカル変数と混同しなくて便利なのに
スレッドをローカル変数だけに持ったままメソッドを抜けたらバグってワロタw
日本語でおk
564 :
デフォルトの名無しさん :2012/05/03(木) 22:15:25.77
テキストボックス(textBox)に値が入力されたらボタン(searchButton)を有効にする ということをしたくて以下のように書いてみました。 this.textBox.addChangeHandler(new ChangeHandler(){ @Override public void onChange(ChangeEvent event) { if(!textBox.getValue().equals("")){ searchButton.setEnabled(true); } else{ searchButton.setEnabled(false); } } }); これでも動作することはするのですが、テキストボックスからフォーカスを外さないとイベントが発生しません。 そうではなくテキストボックス入力中にボタンの有効・無効切り替えをできるようにしたいです。 KeyDownハンドラを使おうかとも思いましたが、一番キレイに実装するにはどうすればいいでしょうか?
そんなサンプルそこらに落ちてるだろ。あほか
チョンうぜぇ
567 :
デフォルトの名無しさん :2012/05/04(金) 05:16:24.46
private static final なメンバは普通実行時に変わらないけど GWTとかでJSからオブジェクトを受け取る場合は変える事も出来るんだろうか?
568 :
567 :2012/05/04(金) 05:26:05.20
transientとfinalのキーワードを持つフィールドは送受信されない。 という記述が見つかった。 finalなフィールドを外部から書き換える事は出来ないようだ
ヒント: const
Stringをbyte配列に変換するときに、 下記のように文字コードが指定できますが、 >byte charArray[] = target.getBytes("MS932"); byteって1バイトなので、文字コード指定したところで帰ってくる配列って変わらないんじゃないですか? intなら各文字コードのマルチバイト文字の区切りで切り取るとかもできそうですが。 shift-jis読み取りのために一応つけてるんですが、これって意味がありますか?
データ列だからバイト配列なだけだ 1byte=1文字ではない
>>570 String s = "あ";
byte[] a = s.getBytes("MS932");
byte[] b = s.getBytes("EUC-JP");
byte[] c = s.getBytes("UTF-8");
System.out.println(Arrays.toString(a)); // → [-126, -96]
System.out.println(Arrays.toString(b)); // → [-92, -94]
System.out.println(Arrays.toString(c)); // → [-29, -127, -126]
指定した文字コードによって返ってくる配列ちゃんと変わるぞ
>>572 サンクスです。ファイルから読み込んだ場合と混同してました。
そうか、Stringから変換した場合、内部で文字コード変換が走るんですね、納得です。
たぶんわかってないなこれ
質問です。インターネットアクセスするコードの
01 URL url = new URL("
http:// 〜〜〜〜");
02 HttpURLConnection connection = (HttpURLConnection)url.openConnection(); ※throws IOException
03 InputStream is = conn.getInputStream(); ※throws IOException
04 InputStreamReader isr = new InputStreamReader(is, "MS932"); ※throws UnsupportedEncodingException
05 BufferedReader br = new BufferedReader(isr);
06 String s = br.readLine(); ※throws IOException
07 conn.disconnect();
08 br.close(); ※throws IOException
という流れで
(1)
03のconn.getInputStream()にてIOExceptionが投げられた場合、conn.disconnect()の必要はありますか?
(2)
06のbr.readLine()にてIOExceptionが投げられた場合、
(A)conn.disconnect()の必要はありますか?
(B)br.close()の必要はありますか?
(1)はHttpURLConnectionのメソッドがエラー出してるんだしdisconnectされてて当然だろうと思うし
(2)はBufferedReaderのメソッドがエラー出してるんだしcloseされてて当然だろうと思ってしまいます。
特に(2)で仮にbr.closeしようと思ったらIOExceptionのcatch中さらにIOExceptionのcatchをするわけで
すごく変なコードになる気がします。
disconnect はそもそもまったく呼ばなくてもいいものなので必要あるかといわれればない close は呼ぶべき 例外は回復不能なエラーばかりとは限らないから自動的に close されたりはしない・・・例えば SocketTimeoutException とか 変なコードは Java 7 からの新しい try-with-resources を使えば解決
全部をcatchせずにcloseするか判断するところまでthrowして、 そこでcatchしたらfinally内でcloseの方がすっきりしそう。 ライブラリやAPIの類が例外だしたらインスタンスの再利用はできないことが多いしw
>>576-
>>577 ありがとうございます
作ってるアプリのいくつかの機能で共通点が多かったので
サブルーチンのようなprivateメソッドを作って
メソッド1〜3はできるだけシンプルになるようA〜D内で完結させようとしてたんですが
アドバイス読んで、まとめて受けるようにしてみました。
昔ちょっとC言語で遊んだだけだったので「例外出さずにfalseやnullで返してくれたら楽なのに」って思ってたんだけど
逆にそうされたらそこで毎回チェックしてクローズ処理しなきゃいけないわけで、まとめて受けられる例外の方が便利ですよね
でもgotoっぽい性質もあって怖そうですね
クラス修正前{
機能1(){A;C;}
機能2(){A;B;}
private サブルーチンA(){処理、例外処理}
private サブルーチンB(){処理、例外処理}
private サブルーチンC(){処理、例外処理}
}
クラス修正後{
機能1(){try{ A;C; }catch(){ どこかでエラー発生 }finally{ クローズ処理 } }
機能2(){try{ A;B; }catch(){ どこかでエラー発生 }finally{ クローズ処理 } }
private サブルーチンA()throw e{処理}
private サブルーチンB()throw e{処理}
private サブルーチンC()throw e{処理}
private クローズ処理(){try{close()}catch{}}
}
>>578 キャッチなしのtry{}finally{}を一つ入れるとキレイになりそう。
JDK 1.7 がインストールできません。 @Windows7(x64) Ultimate jdk-7u4-windows-x64.exe をD/L してダブルクリックしても インストーラのダイアログが表示されません。 jdk-6u31-windows-x64.exe だと、問題なくインストールされます。 jre-7u4-windows-x64.exe をインストールしてパスを通したりしてますが 状況は変わりません。 どなたかお助けを。
もう一回ダウンロード
>>581 ありがとうございます。
ダウンロードし直してみましたが、ダメでした。
※1回目と2回目のファイルは同一でした。
困りました。
あきらめないで!
質問です。以下の文をもっとスマートに書く方法ってありますか? swich文のcaseごとに同じメソッドを重複して書くのがちょっと微妙な気がするのです。 private void doWork(int stage) { switch (stage) { case 0 : break; case 1 : method_1(); break; case 2 : method_1(); method_2(); break; case 3 : method_1(); method_2(); method_3(); break; case 4 : method_1(); method_2(); method_4(); break; default : break; } }
>>584 なんか設計からして変な気がする。
のはさておき、重複して書くのは常に悪というわけではない。
読み易さのためなら有る程度の重複は許される。
スマートってのは読み易いということだ。
君がこれからやろうとしている事はコードゴルフの類いなので、
僕のスマートの定義ではこれ以上のスマートな書き方は無い。
むしろ設計を見直す。
他に思いついたのは以下ですが、これも微妙な気がして。 private void doWork(int stage) { if (stage == 0) break; if (stage > 0) method_1(); if (stage > 1) method_2(); if (stage == 3) method_3(); if (stage == 4) method_4(); }
>>585 設計が変ですかね。確かに読みやすい気はしますが
記述的に無駄が多い気がして。
ほうら、スマートだろう? private void doWork(int stage) throws Exception { getClass().getMethod("method_" + stage).invoke(this); }
>>588 うーん、見た目スマートですけど
コレジャナイ感がします。
設計が変というのはint stageごとにmethod()作れってことですかね
>>586 の方が良いだろ。
あと、ここに書くときは半角スペース2個を、全角スペース1個に置換しといて!
private void doWork(int stage) {
switch (stage) {
case 0 :
break;
case 1 :
method_1();
break;
case 2 :
method_1();
method_2();
break;
case 3 :
method_1();
method_2();
method_3();
break;
case 4 :
method_1();
method_2();
method_4();
break;
default :
break;
}
}
頭の中でのイメージは、代入させるint stageの値によって doWork()内での処理ブロックの通過のさせ方を変えるような書き方をしたいんです。 たとえば、stageに4が代入されれば、method_1()を通過、method_2()を通過、 method_3()を飛ばしてmethod_4()を通過という処理をさせたいんですが、 これを視覚的にわかりやすく書けないものかとおもいまして。
ステートマシンだろ? どうせ複雑になったらわかんなくなるからステートマシン図をちゃんと描いて保存しておいて ソースの見やすさなんて無視でいいよ
>>591 どぅ?
private void doWork(int stage) {
if (stage == 0) break;
if (stage > 0) method_1();
if (stage > 1) method_2();
if (stage >= 3){
if (stage == 3) {
method_3();
} else {
method_4();
}
}
}
int[] t = { 0, 1, 3, 7, 11 }; int x = t[stage]; if ((x & 1) != 0) method_1(); if ((x & 2) != 0) method_2(); if ((x & 4) != 0) method_3(); if ((x & 8) != 0) method_4();
ナに言ってんだかw
Javaは
>>594 みたいなことをする言語じゃないなとは思った。
>>592 画像のレイヤー表示的なことをしたいんです。でも同じようなもんですよね。
>>593 ああ、これは見やすいかもです。
>>594 う、頭から煙が。苦手な分野です。
またひとつ思いつきましたけど、いけてない気がします。
private void doWork(boolean flag_1, boolean flag_2, boolean flag_3, boolean flag_4) {
if (flag_1) method_1();
if (flag_2) method_2();
if (flag_3) method_3();
if (flag_4) method_4();
}
そんなんならbooleanの配列でいいじゃん
>あと、ここに書くときは半角スペース2個を、全角スペース1個に置換しといて! なんで?
>>599 こうですか?わかりません。
private static boolean[][] stage =
{ //mth1 //mth2 //mth3 //mth4
{ false, false, false, false },//stage 0
{ true, false, false, false },//stage 1
{ true, true, false, false },//stage 2
{ true, true, true, false },//stage 3
{ true, true, false, true } //stage 4
};
private void doWork(boolean[] flag_) {
if (flag_[0]) method_1();
if (flag_[1]) method_2();
if (flag_[2]) method_3();
if (flag_[3]) method_4();
}
クズコード化プロジェクト?
どんな案が出てきたところで
>>584 がメモリを少々食いつつも
もっとも高速で実行できるということで良いですか?
高速? 求めてたのはスマートな書き方じゃなかった?
そうだな。
コードゴルフではなく、
>>591 は 「視覚的にわかりやすく書けないものか」 と言っている。
>>604 は私ではないですが、
見た目重複が少なく、視覚的にわかりやすい書き方を求めてます。
かつ、できれば処理的にも軽いほうがいいです。
馬鹿には無理
>>608 そうでしょうか。
では
>>585 でFAということにしようと思います。
お付き合いありがとうございました。
610 :
デフォルトの名無しさん :2012/05/06(日) 20:57:23.54
\u3010 の形式を普通の文字にしたいのですが、 どうやるのが一般的なんでしょうか? \u除いてparseIntで文字コードに変換まではできたのですが、 そこからStringに戻すとこで躓いてます。 そもそもそんなめんどくさいことしなくても、 一発で変換できるような関数があるのでしょうか?
>>590 の条件はともかくステートマシンならこんな感じで作るわ
// State間の情報は、Contextのオブジェクトで管理
Context context = new Context();
Stage1 stage1 = new Stage1( context );
Stage2 stage2 = new Stage2( context );
Stage3 stage3 = new Stage3( context );
// 各Stateが、doを実行した際返すStateを指定する。
// 例えば、doの結果が成功した場合の次のStateは、SuccessStateで指定し、
// doの結果がゲームオーバーした場合の次のStateは、GameOverStateで指定する。
stage1.setSuccessState( stage2 );
stage1.setGameOverState( stage3 ):
// クラスによってどんなset〜Stateを持ってるかはバラバラ。この場合だと、実行完了後に必ずstate1に戻る
stage2.setNextState( state1 );
stage3.setNextState( state1 );
// ステートの実行は、こんなループやら、イベントを使って実行する。
State state = stage1;
while( null != state )
{
state = state.do();
}
そういや、doって予約語だったな。うかつだった。
ステートをオブジェクトとして扱う必要あるか? それならもうストラテジーやコマンド使って設計したほうが綺麗だと思う。 ていうかなんのコードだっけ?ゲーム?
オブジェクトにする理由はこんな感じか 1.ステートの中にもステートが存在するし、ステート自体にも固有状態が存在する。 2.典型的なステートの再利用が可能になる。また、クラス追加による拡張が可能になる。 あと、基本構造はコマンドパターンだな。
>>613 匿名クラスが追加されてからは、メソッド内に
処理を埋め込めたりするんで記述がやや楽。
private State state1;
private State state2;
private State state3;
state1 = new State{ public State action(){ return state2; } };
state2 = new State{ public State action(){ return state3; } };
state3 = new State{ public State action(){ return state1; } };
何が求められているコードなのかにもよる メモリなのか速度なのか
そういうのはコードそのものの美しさなんかより文書や図と機械的に対応してるほうが重要だと思う
>>616 パフォーマンスなんて作ってからでいいだろ
(ノ∀`) アチャー
え?
パフォーマンスなんて作ってからでいい (キリッ
>>619 =622 ?
>>620 do you know "premature optimization is the root of all evil" ?
>>623 一年生かなんかだろ。そういう時期もあるさ
>>601 ↓
private void doWork(int stage) {
boolean[][] flag_ = {
{ false, false, false, false },
{ true, false, false, false },
{ true, true, false, false },
{ true, true, true, false },
{ true, true, false, true }
};
if (flag_[stage][0]) method_1();
if (flag_[stage][1]) method_2();
if (flag_[stage][2]) method_3();
if (flag_[stage][3]) method_4();
}
↓
>>594
>>624 無駄に速度に拘ってプログラム完成させられないやつって初心者〜中級者に多いよな
ありがちだわな
パフォーマンス改善しました! →ほとんど誰も使わない機能でした パフォーマンス改善しました! →計画が変わってリリースされませんでした パフォーマンス改善しました! →「どの位速くなったの?」「さあ、わかりません」
パフォーマンス改善しました! →コードが汚すぎてメンテ出来ません
プログラミング言語 Java のコンセプトを考えれば分かる罠
最初から最適化意識しなきゃならん状況ならC++つかうわな サーバーサイドだってサーブレットなんて使わずfcgi使うだろうし
速度にこだわるならjava使うのやめましょう
Javaは充分速いだろ たしかに最速じゃないけど確実に上位だ。
言語レベルの問題じゃなくて、ライブラリモデル(アルゴリズム)の問題なんだけどな C++と大体似たコード書いて、newとか動的確保を最小限に抑えれば、C++に近い速度は出る ただ、普通に使うとStringを始めライブラリがnewした領域に値をコピーするスタイルを取ってるもんで、 文字列やコンテナの一部をイテレーターで保持しとけばいいだけというケースでは大きく速度を引き離される 極力無駄なコピーを減らせばいいが、そんな事をすればJavaの標準ライブラリが逆に足かせになってしまう
635 :
デフォルトの名無しさん :2012/05/07(月) 00:41:59.70
private <A, B, java.lang.String> void test(List<java.lang.String> l){ } なんでメソッドの定義でだけjava.lang.Stringって書けないんですか? 引数のList<java.lang.String>はエラーが出ません private <A, B, String extends java.lang.String> void test(List<String> l){ } とかしておけばいいんですか?
型パラメータにクラス使われたらワケワカメだろ
ステートマシンの実装ならinvokeDynamic使うのもいいぜ
638 :
デフォルトの名無しさん :2012/05/07(月) 15:45:18.41
Forte for Java ってどうなったんですか? フリーの統合開発環境でこれDLしなさいと言われたのですが、名称が変わったのでしょうか?
639 :
638 :2012/05/07(月) 15:47:16.93
ちなみにWindows7 Enterprise 32ビット版です 他にお勧めなのとかあったら教えてください
他にじゃなくてeclipse一択
Javaでエンジニアやってる派遣です。 某自動車メーカーに派遣切りされて生きていく希望がありません。 派遣会社からも全然新しい配属先を紹介していただけません。 どうすればいいでしょうか?
さあ おれに質問されてもなあ…
いたちがい
>>640 NetBeansもあるだろ。
ま、ここで質問する奴にはEclipseの方が向いてそうだからいいけど。
>>643 ,644
質問じゃなくて相談してるのです!スレタイに相談ってかいてあるじゃないですか!
ttp://sunjava.seesaa.net/category/3648259-1.html ここを参考に勉強中なのですが以下のようなエラーが出て行き詰っています。
自分なりにぐぐってみたりはしてるのですが解決策が見つからず困っています。
AccessのODBCドライバが32bitしかないようでしたので、odbcad32.exeからデータソースは登録されています。
どなたかご助言を頂けないでしょうか。
別スレで質問したのですがこちらのスレの方が適切だと思いましたので、改めて宜しくお願いします。
環境:Win7 64bit Java SE6
エラー内容:[Microsoft][ODBC Driver Manager] 指定された DSNには、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています
ウインドーズ環境なのでマイクロソフトの有料サポートに電話をすれば解決します。
口周りは青くて顎鬚は濃かったよ
Windows2000のマシンにJava runtimeを入れたいのですが、Version 6 Update 32 は サポート対象から外れたのか、インストールに失敗してしまいます。 Version6 の最初の方のUpdateはインストール出来たと思うのですが、Windows2000を サポートしている最後のJava runtimeのUpdateは何でしょうか?
Windows 2000マシンは結局ウインドーズ環境ですよね? マイクロソフトのジャバ部門に電話して有料サポートを受けましたか?
653 :
デフォルトの名無しさん :2012/05/07(月) 21:26:13.26
654 :
デフォルトの名無しさん :2012/05/07(月) 21:47:23.98
655 :
デフォルトの名無しさん :2012/05/07(月) 23:49:02.49
初心者ですが、失礼します。 データベースからデータ読み込むためにSQL文で select*from テーブル名 where 主キーの列名 ? and ?; として、バインド変数の?の部分には主キーの最初の行の値と最後の値を 入れて、すべての行を順に取り出すことは可能ですか? 可能だとしたら、どのように?の値を設定すればよいのでしょうか? 最初の行と最後の行が特定できる状況で、その値をそのまま指定するのはなしで お願いします。
select * from テーブル名 where 主キー between ? and ? order by 主キー こんな感じ?
PreparedStatementでググれ 最近これ使ってるの見ないけど
テーブル内のすべての行を条件無しで取りたいっていう意味なら select * from テーブル名 だけでおk
質問嫁
660 :
デフォルトの名無しさん :2012/05/08(火) 00:07:18.24
>>658 select*fromテーブル名
だと、一気にすべての行が取り出されるということはないでしょうか?
1行ずつ取り出すたびに処理を行ってから次の行という感じで回したいのですが・・・。
条件を指定する例や挿入の例はググると多いのですが、無条件の例が見当たりません。
最初の行と最後の行の値を(変数のような方法?で)指定できないでしょうか?
whereで全範囲を指定しても同じだぞ だって意味的に同じだし
どんなググり方したのかお兄さんに教えてごらん
663 :
デフォルトの名無しさん :2012/05/08(火) 01:21:37.45
なるほど。
言われてみれば意味的には同じですね…。
手元にデータないんで明日試してみます!
>>662 バインド変数 条件値 パラメータ 値の設定 PreparedStatement.set
などでググってたんですけど力及ばずでした。
664 :
デフォルトの名無しさん :2012/05/08(火) 10:57:26.80
グーグルが関わって作ったサービス(グーグルアプリ)って結構終了しちゃったよね。 ワールドワイドで優秀なプログラマー集めていた割には、三年以上持ちこたえてるサービスってグーグルマップかユーチューブとか買収したのだけになっちゃったね。
j++(だったか?)が駄目ならandroidも当然駄目でしょ
いろいろな意味でグーグルはそのうちフェイスブックに買収されるんじゃないのかなぁ。 せっかく手に入れたのにモトローラーどうするんだろう・・・
Dalvik仮想マシン(VM)も Java も改変しちゃったらアウトだろw
>>664 そのすれ、ソニー(psp, ps vita, ps3(mono))のステマがいるみたいだけど、最近のソニーの開発部門はc# monoのマーケチングに力入れることにしたの?
ちゃんと金払ってJVM版のAndroid作ればいいんじゃね。 Googleにその金があるか分からんけど
document.write('<param name="movie" value="index.swf' + n + '" />'); きれいなスライドショーサイトのソースを見たらこうなってたんですが index.swf' + n + '" 'ってどういう意味ですか
WindowsでSwingでマウスを使ったゲームを作りたいのですが、 マウスカーソルを指定位置に移動させるにはどうすればいいでしょうか?
java.awt.Robotクラスを調べろ
>>671 それjavascript
しかも、nはソース書いた奴に聞け。
そうですか ありがとうございます
>>669 vita以降の開発環境がmonoで対応プラットフォームがvitaとPlayStation Suiteだから営業が頑張ってるんだよ。
PSSはせっかくdalvik捨てたのにH/W制限して遅いしAPIもUIもAndroidと大差ないよ。
mono自体HotSpot比べられるもんじゃないし。あとマルチバイト文字通らない。
vitaの市販ゲームはC#ネイティブだから別の話だけど。
ていうかAIPが問題なんじゃなくてVMに互換性がないことが問題なのになんでoracleはそこ主張しないんだ。
使用料をケチるより、もっとあくどいコト考えてそうだな > Google
>>678 そのすれにポツンと書いてあるからもう知ってる人多いんじゃないの?
>>677 APIに著作権があるかとかのこと?
というかそれ、知らない人向けのIT,WEB技術系向けのネタだし、もっと騒いでもらって新聞やテレビなど一般人向けでもっともっと取り上げられて
「オラクル」「ジャバ」の商標とか(クライアント・グーイ向け)プラットフォームを一般人に広く公知できれば十分○○のもとがとれる。
>>680 Google 「API は著作権保護対象ではない」
↓
「Google製の Java互換言語!」 と主張できて、Google(゚д゚)ウマー!!
J++ってのは、++がさらに増えてJ#に進化して今じゃ.NETの一つなんですよね?
>>681 oracle:APIはプロプラエタリでsunから買ったからgoogleが侵害してる。
google:javaの商標や権利は買い取ったけどAPI買ったわけじゃないだろ。
googleの証人sunの元CEO:javaはオープンソースだからAPIはプロプラエタリじゃない。GPLコードだ。
oracle:TimSort.javaの配列の範囲チェックする9行が一致してる。特許侵害だ。
Timsort書いた人:PythonのTimSort移植してOpenJDKに寄与した後にandroidに関わったから範囲チェックも似てるかもしれない
oracle:ほら認めたぞ。金払え。
googleの弁護士:特許侵害だとするAPI作ったのはJCPだけどJCPはどこにも対価要求してないよね?
8週間かけてこういう事やってる。
>>683 J++が進化したのはC#
J#は独自拡張の多いJ++とは全く違って.NET上にほぼ純粋なJavaを実装したもの
>>684 DOCOMO(テレホン大手), SONY(コンテンツ大手), IBM(インテグレート大手)などは、サン(元オラクル)にジャバのライセンスを支払ってるけど、グーグル(広告大手)は支払ってないでしょ。それについて両者は何ていってるの?
>>684 APIを実装したライブラリなら著作権が働くのは解るが、
API自体に著作権って効果あったのか?
Wineとか、GPLによるAPI実装がマズくならね?
688 :
デフォルトの名無しさん :2012/05/08(火) 22:43:58.27
>>686 元々javaの商標を商用利用して実行環境提供する時に商標使う金と互換テスト用のTCK使用料があって、
商業として実行環境に対しjavaの名とコーヒカップとDuke使うのに金払う必要があったんであってjavaの実装と
Dukeはオープン化したから実装使うことに問題はないしsunは有料サポートと組み込みに載せることで収益化してたから
Sunがjava持ってた頃は何も言わなかった。
そもそもandroid自体harmonyベースだしdalvik VMは仕様も実装も自前でコードはApacheとGPLでカーネルはlinuxだから問題ないんだけど、
goslingが言語はjavaでもTCK通ってないから実行環境に互換性がなくてSEもMEも動かないことに怒ってたくらい。
これがoracleはライセンス料をスルーする手段だと主張したけど、googleは自分たちがjavaを持つ手段を模索してandroid買収したから
ライセンス云々のためじゃない。(gPhoneにjava載せるためにクリーン実装してライセンス料払うか考えたけど丁度androidがあった)
oracleはJavaFX phoneがコケたから特許を主張して金取ろうとしてるだけだと平行線。(当時はNokiaがトップでnokia端末にFX載せてた)
だからgoogleがフェアユースかどうかがまだ決まってない。
それに加えてoracleはjavaを買い取った時に全てを買い取ったからAPIも含まれて、それは特許に守られてるから金払えと主張してる。
それに対してAPIはoracleが持ってる特許に含まれないとgoogleが主張して平行線。
今の論点はオープンソースコードがプロプラエタリで独占的で特許も発生するか揉めてるところ。
そこでドキュメンテーションにコピーライトが書いてあるからAPIも特許に含まれると主張してるのがoracleなんだけど、
仕様と実装を挿げ替えてるわけだから論点が噛み合ってないまま持ち越し。
>>687 んでこれを踏まえてAPIは特許で守られてるのか陪審員が決めかねてるからそれをこれから決める。
要するにOSI認証ライセンスが特許で覆されるかどうかの争いになってるからいま騒ぎになってる。
javaのAPI使って実装されてるJVM言語が全部ダメにからそっち界外じゃ脅威だよ。OpenJDKのクラスパス例外も根本から破堤する。
googleが負けたらOSI認証ライセンスが役に立たなくなるからWineとか訴えられて全部ダメになる可能性もあってそっち方面も騒いでるよ。
改行ヘタ杉
javaが本当に出始めたときに心配したことが、まさに今問題になってるってことか。
692 :
195 :2012/05/08(火) 23:06:06.64
>>207 ありがとうございます。!
staticブロックは目からうろこでした。
いえいえ
>>673 ありがとうございます。
FPSみたいなもの作っているのですが、もしかしてJavaには無いんじゃないかとヒヤヒヤしてました。
>>689 著作権と特許権は別物ですよ。
とくに創作・著作物についての権利と侵害のクレームのための権原は、特許権と違ってどこかに申請してレジストするようなものではありません。
長文をグダグダ書いてみても、法律をしっかりと勉強したこともない一般人と同じくあなた自身もよく分かってないようなので、このネタを追いかけるとしてもこれ以上の議論に踏み込むのはあなたの知的レベルじゃちょっと難しいんじゃないですかね。
この一連の訴訟と APIは特許じゃないのが業界の共通認識 って話がどう関わってるか今ひとつわからん。 そんなんをOracleが訴えても負けるの明らかだろうから 本質はもっと別のところにあるんだよね?
グダグダそのまま行くとグーグル弁護団の術中にまんまとはまっちゃうと思いますよ。
>>696 著作権侵害の方は一部認められたけど特許侵害が認められなくて応戦してるってのもあるんじゃないの?
API仕様が技術盗用と言ってるから特許ってことにしたいんだろうし7件特許侵害で攻めるところを2件で攻めることになったし。
その共通認識に関わる裁判で著作権で喧嘩売ったことはあっても特許で喧嘩売ったことはなかったからネタにされてるのもあると思う。
GoogleとOracleがいつまでも喧嘩していると、 Java以外の陣営に塩送っているようなもんだと思うけど… どっちも協力しようなんて気はないんだろうな。
>>699 Oracleも十分儲かってるのに、ちょいとがめつい感じするな。
質問。packageは、開いているか閉じているか? どっちよ? ・開いている・・・既存のpackageにいくらでもclassやらinterfaceを追加してよい ・閉じている・・・一度リリースしたpackageには何も追加してはいけない どっちでとらえるかによってpackageスコープの意味が変わるよねぇ。
誤解を招きそうなので訂正 ・開いている・・・既存のpackageにいくらでもclassやらinterfaceを追加してよい ・閉じている・・・既存のpackageには何も追加してはいけない
packageにクラス追加していいか否か決めるのはJARファイル提供者でなかったっけ。 確かMANIFESTファイルで指定する。 それとは別の倫理的な面で、package利用のライセンスの確認は必要。
「既存のpackage」 って言ってるのに・・・
既存パッケージのJARファイルのManifestにシールが張ってなければ、 既存のパッケージの名前空間にあとからユニットテストクラスとか追加し放題だったような
最近勉強始めて、やさしいJava3版が中古で売ってたんで買おうと思うんですが、あんまり古い教材だとよろしくないですか?
入門書なら古い新しいはどうでもいいだろ 知識がつけばググって最新版の機能を補完できるようになる それより、入門書としてまともかどうかが大事 最新でも嘘だらけのクソ本じゃ意味ない むしろJavaが無名だった頃の方がしっかりしてる事もある 当時のパイオニアが書いてるからな
>>707 シール機能があること初めて知った。
なるほどね。逆を言えば、シールしてなければ追加しても構わない
という意思表示もできるわけか。(シール使ってる人ほとんど居なそうだけど)
社内で複数jar作る場合とか、分散可能なパッケージか
分散しちゃいけないパッケージかって管理できるわけだ。
711 :
デフォルトの名無しさん :2012/05/10(木) 01:25:29.57
>>710 泥棒に入られたくないために鍵があるのか、
なら鍵がかかっていなければ泥棒されてもいいって意思表示なんだな。
飛躍してね?
native2asciiの質問なんですが、あれってサロゲート領域の文字に対して何か 気をつけることってありましたっけ? 中国のU+21300の文字をUTF-8で埋め込んでnative2asciiすると\ud844\udf00と処理 されて、サロゲートに変換しているようなんですが これにnative2ascii -reverseをすると、そのまま\ud844\udf00が返ってきてしまいます。
そもそも、自分のパッケージじゃないのに追加する意味がわからん。
ウェブサイトに掲載されているプログラムで解らないことがあるのですが、ここで質問してもいいですか?
まかせろ
簡単なことなら誰かが答えてくれる 難しいことはスルーされる
718 :
715 :2012/05/10(木) 14:27:58.12
class Kanzen { public static void main(String args[]) { int n; for(n=2; n<1000; n++) if (Test(n)) ・・・@ System.out.println("完全数 : " + n); } static boolean Test(int n)・・・A { int i,k; for(k=0,i=n/2; i>0; i--) if (n%i==0) k+= i; if (n==k) return true;・・・B return false; ・・・C //else return false; } } プログラム超初心者です。 2〜1000までの完全数を計算するプログラムで 計算内容は理解できるのですが、プログラムの構造と流れが理解できません。 @〜Cがどういった役割をするのかと処理の流れを教えてください。
関数とかメソッドでググれ どうでもいいけどC脳すぎるだろあんまり当てにしないほうがいいぞそれ Cにしたってkをforの中で初期化する意味がわからん
s=0; for(k=0; k<10; ++k) s+=k+1; assert s==55; 最新のjdk(java7)の言語機能や提供ライブラリを使っても、1から10までの和(有限個数のsum)はこの古典的なfor loopの方法しかないのでしょうか?
小学校か中学校、 最悪でも高校では数列の和について何か習うんじゃね?
完全数ってなんだ?
公式が使えるならわざわざプログラムなんかしません。 本当は内積(級数)や加算集合、外部イテレーションの論点なんですけど簡単に書きすぎたので逆に何の分からないですね。 本当はfuncの定義は任意で、例えば簡単にx+1とすると1..10の和と同等ですが。 func=(int x)->x+1; s=0; for (k=0; k<10; ++k) s+=func(k); assert s==55; 最新のjdk(java7)の言語機能や提供ライブラリを使っても、1から10までの和(有限個数のsum)はこの古典的なfor loopの方法しかないのでしょうか?
>自然数nの約数の和S(n)が2nとなるとき、nは完全数であるといわれる。たとえば、6や28は完全数である。なぜなら > > 2・6=1+2+3+6 > > 2・28=1+2+4+7+14+28 > >だからである。S(n)が2nより大きいときは過剰数、S(n)がnより小さいときは不足数とよばれる。
>>723 "珠玉のプログラミング"と言う本の最初のエピソードを読め。
Programming Pearls, Second Edition by Jon Bentley. Addison-Wesley, Inc., 2000. [new] What's new on this web site? From The Book Table of Contents Preface Part I: Preliminaries Column 1: Cracking the Oyster Column 2: Aha! Algorithms [Sketch] Column 4: Writing Correct Programs [Sketch] Column 5: A Small Matter of Programming [Sketch] Part II: Performance Column 7: The Back of the Envelope Column 8: Algorithm Design Techniques [Sketch] Part III: The Product Column 14: Heaps [Sketch] Column 15: Strings of Pearls Epilog to the First Edition Epilog to the Second Edition Appendix 2: An Estimation Quiz Appendix 3: Cost Models for Time and Space Appendix 4: Rules for Code Tuning Solutions for Column 1 Column 5 Column 7 Column 15 Index
日本でアルゴの第一人者(著名人)の一人言えば奥村先生だから、奥村先生あたりがこういうたぐいのムック本やアルゴ・チップス記事や連載コラムを執筆してくると、日本語のままで安心して知識を吸収できるんだけどな。 読者が現場やプロレベルだと、新聞・雑誌コラム感覚で書いてみても数学の月刊誌とちがってわざわざ毎月お金だしてまで情報を得ようと思わないから、広告付きブログとか、書籍・ムック本しかないんじゃないかな。 著名カリスマな「フォトショップ達人が伝授する○○」のテクニック本みたいなのとおなじ。 それよりも、奥村先生のJavaによるアルゴは本がボロボロになるほど読んだので、次というか続編はJavaによるパラレルアルゴの現代的計算方法とトポロジーやグラフ・多重化など比較的新しいデータ紹介や海外論文手法(辞典)をそろそろ読んでみたいなあなんて思います。
>>722 奥村先生。2chで宣伝してないで仕事してください
>>712 他人のパッケージに追加って話じゃなくて、
俺のシールしてないパッケージは拡張していいよって
自分で拡張許可を示すのに使えるって言ってるの
>>714 赤の他人じゃなくて、社内とか自分一人とかの範囲の話。
配布するとき、自分が持ってるライブラリをフルセットで
配布する理由じゃなく、必要な分だけ小分けして配布するじゃん。
その時、jar毎にパッケージが閉じてたら、同じパッケージにあるべき
クラスやインターフェースを別のパッケージに置かなきゃいけないでしょ。
例えば、Model用のパッケージを用意するとして、
com.example.x.model、com.example.y.modelとjar毎に分けるより
Modelは全部com.example.modelの下に配置した方が
パッケージスコープも生かせるし便利でしょ。
>>718 わかりづらいのは括弧を使わない書き方だからなのかと思って、冗長かもしれないけど中括弧と適宜追加した。
計算内容は理解できるってことだからコメントもいらなさそうだけど書いといた。
入門編がクリア出来ればいつの間にかサクサクできるようになってるさ。
ttp://ideone.com/9O3pd
731 :
デフォルトの名無しさん :2012/05/11(金) 00:02:48.36
>>730 質問者ではないのですがhttp://ideone.com/9O3pdを見させてもらいました。
なるほどと思いました。
初心者にも優しい方がいて嬉しいです。
>>730 マイクロソフトでびんぐれば誰でも六十秒以内に答えにたどりつけるので、あなた自身がコーディングやアップロードなどそういうどうでもいいことに六十秒以上の時間を掛けることは親切というよりもむしろ余計なお世話だと思いますよ。
PatternとMatcherの動作についてわからないことがあるので質問させてください public static void main(String[] args) { Pattern pattern = Pattern.compile("^・"); Matcher matcher; matcher = pattern.matcher("・あ"); boolean m = matcher.matches(); System.out.println(m); } これでfalseが出力されるのは何故なんでしょうか?
自己解決しました
736 :
デフォルトの名無しさん :2012/05/11(金) 13:59:27.58
素直に思いやりの心を尊しと思う
素直に馬鹿だと思う
hoge.paint(g) このhoge.ってとこの仕組み等が詳しく知りたいんだけど何て単語でググればいいですか?
ドット演算子?
ありがとう
クラスの実体とクラスメソッドの呼び出しを接続してるんじゃね?
またお前か
言語仕様にしか書いてない
ねえねえ /* ~ */と/** ~ **/の違いってなんじゃらほい?
javadoc でぐぐれ
おお、ありがと。 記号でぐぐっても出ないしどうしたもんかと思ってたが名称あったのね
HashMapを使っていて、その変数からgetした情報を別のクラスに引数で渡したとき、別クラス内で値を変更すると、元のHashMap変数の中も変わるのは仕様なんですしょうか? たとえば、 static HashMap<String, String> test = new HashMap<String, String>(); test.put("AA", "BBB"); としたとき、 static void func(String line)という関数を作って、func(test.get("AA"))と引数に渡したとき func()の中でごちゃごちゃline変数をいじっても、あくまでfuncの中でしか関係ないはずなんですが、 調べてみると、ポインタが渡ってるようで元のtest.get("AA")の値が変わっています。 String hoge = test.get("AA");としてfunc(hoge)にしても同様に元のhashMap内の変数が書き換わります。 func内でごにょごにょしても、オリジナルに影響を与えないようにするのにどのような解決策がありますか?
749 :
748 :2012/05/12(土) 04:35:45.68
いま簡単なサンプルでテストしてみたら、オリジナルの変数に変更はなかった… 勘違いだったんでしょうか… 原因はどこに…
750 :
748 :2012/05/12(土) 05:30:29.39
原因がちょっとわかりました 使っていたのが、HashMap<String, String[]>だったのが原因のようで、String[]配列を関数に渡すと、そのままポインタが渡されるようです。 なので、関数のなかでごにょごにょしたやつが、そのまま反映されると… 関数の中の処理の影響を受けないスマートな方法はありますか? 一応、別の変数配列を用意して1つずつごりごりコピーするのが有効みたいですが、もうちょっとなにかスマートな方法があれば ご教示ください。 ごりごりパターン String[] test = {"AA", "BB"}; String[] test2 = new String[test.length]; for (int c = 0; c < test2.length; ++c) { test2[c] = test[c]; }
もし配列を使うなら、根本的にスマートな方法はない。 改善するなら、for文で1つずつコピーするんじゃなく、 System.arraycopyメソッドでまとめてコピーした方が(たいていは)速い、って程度。 例えばStringクラスは、内部ではchar配列で文字列を保持してる。 で、文字列をchar配列で取得するメソッドtoCharArray()を実行すると、 内部配列をそのまま返すのではなく、新しい配列を作ってコピーして返す。 内部配列をいじくられたら困るから。 あと、配列の代わりにListを使うと、少しだけスマートになる、かも。
>>750 Arrays.copyOf(map.get("key")) でも (String[])map.get("key").clone() でも好きなの使え。
Listにしても基本は同じ。
影響受けたくないなら関数内でコピー作るとかしないとダメ。
>>752 読んで、
>>751 に書いた文章も読み直して思ったんだけど、
こんなこといちいち気にしてるのって、Javaだけだよね。
CもLL系も参照ダダ漏れだけど、普通に動いてるよね。
754 :
748 :2012/05/12(土) 10:29:35.90
ありがとうございます。 教えてもらった内容を元に、極力影響を受けない実装に変更しようと思います。 おかしくなる原因がわかっただけでもよかった…
>>753 そりゃお前が同じような処理をCやLL系で書いたことないだけだろ。
同じ問題は普通に起こる。
>>755 Java → 書き換え可能な実装をしてしまった悪いライブラリ
C系やLL系 → 悪い呼び出し元が勝手に書き換えてしまった
極端かもしれないが、同じ問題が起こったときにどう考えるかが違う。
Stringみたいなクリティカルなクラスではやめて欲しいが、
Javaでも普通のライブラリなら、「書き換えてはいけない」と
一筆ドキュメント書くだけでも、別にいいんじゃないかと。
印刷で質問です。 テキストを複数のページにまたがる形で 印刷するサンプルを探しています。 出来れば、2頁縮小のレイアウトにしたい です。 JFrameにJTextAreaを2つ置いて、テキスト を流し込むイメージです。 参考になるリンクを教えてください。
>>757 そういう実装に依存したトリックはやめて、
カラム幅に足りないぶん空白を追加して検索すればいいだけじゃない
JTextAreaを独自にカスタマイズして自分UI Componentを作るって道もある
>>759 カラムのサイズを持たなきゃいけないからパス。
>>758 単一JTextAreaにGraphics2D渡して
クリップずらしながら「さあ描け」を二回繰り返せば、
二段分のイメージが取れるんじゃないかな。
おまえらの意見なんてどうでもいいから早く参考になるリンクはれや
764 :
758 :2012/05/12(土) 22:46:24.02
いえいえ、お礼は結構です
またお前かw
私は、Strutsが出る直前あたりまでJavaでWebアプリを書いていて、 それから最近まではWebと無関係のものばかり作っていた者です。 (当時は、コントローラはHttpServletを拡張、ビューはJSPで、 モデルはJDBCを直に包んでBeanを出し入れするクラスを作ったり、でした) そんな私が久々にWebアプリを作りたいと思っているのですが、 今だとどんなフレームワークの組み合わせを使うのが定番なんでしょうか?
768 :
767 :2012/05/13(日) 02:15:48.66
自分で調べた時の単なる印象ですが、Struts 2やSpringが定番なんですかねぇ。 最近はSwingをよく使っていたので、個人的にはWicketが気になりますが。
バッファリーダーとライターの対象?にストリング型を設定したいんだけど、 ライター側ってどうすればいいの? 全然解らない。 最初からストリングに書き込んでストリングから読み取れよって言われたらその通りなんだけども。 String str=""; BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream( str.getBytes() ))); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new ByteArrayOutputStream() ));
servletからsessionへsetして、JSPからgetしようとしてもnullが返ります。 サーブレット内でsetしたものをgetするときちんと入ってるんですが。 keyの下記間違いはありません。 環境は SE6 tomcat7 chrome IE9 になります。 どなたかご教示お願いします。
771 :
767 :2012/05/13(日) 02:25:15.51
772 :
767 :2012/05/13(日) 02:27:37.46
effective java みたいなjavaプログラマのバイブルを教えてくれ
>>773 ∧__∧
(`・ω・´) 知らん
.ノ^ yヽ、
ヽ,,ノ==l ノ
/ l |
"""~""""""~"""~"""~""~"""~
775 :
767 :2012/05/13(日) 13:35:17.71
少しずつだけど、分かってきたかも。 HttpServletとコマンドパターンで書いていた部分はStruts 2で置き換え、 JDBCで直接SQLを発行せずにJPA準拠のO/Rマッピング (Hibernate等) を使用する、 SpringはDIコンテナの一種でGoogle Guiceのように各部品をつなぐ役割、 といったところかな?
>>759 OraclePrepareStatementを使いたいのよ。
これ使えばCHAR型での比較の挙動がsql*plusと同じになるから。
O/Rマッピングとかやめとけ
>757 Oracle 側での定義と、SQL でどう書いてるか分からんとなんとも。 参考 URL の通りだとすると、 ・ORACLE は CHAR(n) で定義している(半角空白で後ろが埋まる、固定長文字列型) ・だから iBATIS は「Oracle の定義を考慮して」 String 型(文字列型)のパラメータを受け付ける つもりで準備してる ・なのに char (文字型)渡されたってキャストできないんじゃゴルァ ってなってるように思えるけど。 ※だから「後ろに必要分だけ空白をつけた文字列」にしてあれば動いてるんじゃないのかね 少なくとも iBATIS が渡すパラメータは char じゃなくて String でないと駄目じゃないか? で String だと CHAR との比較は失敗する(後ろの空白が不一致になるから)ので、どうしても というなら >759 か、あるいは遅くなるの承知で trim(列名) = #parameter# にするか。
>>778 「『後ろに必要分だけ空白をつけた文字列』にしてあれば動いてる」のは
>・ORACLE は CHAR(n) で定義している(半角空白で後ろが埋まる、固定長文字列型)
>・だから iBATIS は「Oracle の定義を考慮して」 String 型(文字列型)のパラメータを受け付ける
が理由だと思うけど、
>・なのに char (文字型)渡されたってキャストできないんじゃゴルァ
は違う気がする。
似たようなのを作ってデバッグしたが、
setter.getPreparedStatement()をキャストしているところでExceptionを出してるから
要は$Proxyが何でPrepareStatement以外の実装クラスにダウンキャストできないんだよ。
というところっぽい。
$Proxyの中はPreparedStatementLogProxyでさらにその要素を見ていくとOracleのクラスが出てきた。
ちゃんと最後まで調べてから書き込んでくださいね^^
>>780 後になってわかることもあるだろうから、
何が「最後」なのかはわからんよ。
782 :
デフォルトの名無しさん :2012/05/14(月) 19:51:45.66
セキュリティとかAjaxとかStrutsとか色々多すぎてやってられないんですけど もう、やめてもいいっすかね?
AjaxってJavaなんですか?
いいえ、それはトムです。
ですよね。
JSONICやGSONを使ってJSON→OBJECTを格納するとき、 下記のようなtypeによってtextが変わってしまうデータが返される場合、 応答の格納をひとつのクラスで両パターンに対応させることは可能ですか。 可能な場合、textをクラスとしてどう記述すればよいか教えてください。 ■パターンA {"data":{ "type" : "a", "text" : "hoge" }} ■パターンB {"data":{ "type" : "b", "text" : [ { "name" : "bbb", "value" : "ccc" } ] }} ※どっちが返るかわからない。
rhino埋め込んでJSONをMapとして返したほうが楽そう
教えてください。 応答文字列のチェックで while(sum(pHand,pn)<21){ String s = "n"; if(s!=null && s.equals("n")){ break; }else{ pHand[pn++]=nextCard(); show(); } } と言う様に書いた場合、if文の条件式は 変数sがnullかつnじゃ無い場合(yやその他の文字が入っている場合)はbreak そうじゃ無い場合?はelse以下の処理を行うという事でしょうか? 自分でも何言っているのか分からないのですが、参考書の回答が 上記のようになっているのですが、イマイチ処理の意味が分からず・・・。
>変数sがnullかつnじゃ無い場合(yやその他の文字が入っている場合)はbreak 逆
>>789 逆だと(s==null&&"n")になる訳ではないのですか?
まぁ==にするとエラーになってしまうのですが・・・。
それから、nullかつnって言うのもよく分かりません・・・。
sがnullではなく"n"のときbreakだ s==null&&"n"だと絶対に成り立たないだろ
s.equals("n") でヌルポガッ発生するのを防ぐために 先に s!=null でnullじゃないことを確認してるだけ
あほな質問する人は読んでる本もアホですね
794 :
デフォルトの名無しさん :2012/05/15(火) 14:26:18.09
Ajaxもサーバーの処理部分はJavaだょ。
795 :
デフォルトの名無しさん :2012/05/15(火) 14:33:42.31
あほな質問する人は、難しい本読んでも理解できなぃょ☆
質問です。 public enum Test { A(B), // フィールドは定義前には参照できません B(C), // フィールドは定義前には参照できません C(A); private final Test next; private Test(Test2 next) { this.next = next; } } 静的フィールドを定義前に循環的に参照したいんですけど、 これはできないんでしょうか?
間違えました。 > private Test(Test2 next) { ではなくて、 private Test(Test next) { でした。
インスタンスを作るにはコンストラクタを呼ばないといけない コンストラクタを呼ぶにはインスタンスを渡さないといけない どうしろというのか
っ クラス
Javaをeclipseを使って参考書に沿って勉強していて、今はクラスについて勉強中です。 サンプルコードを入力していたら、クラスは『既に定義されています』と表示されて実行できません。 このあと何度もサンプルコードに出てくるクラス名なので名前をその都度変えたくないのですが、同じクラス名を使ってコードを作成していける方法はありませんか? 回答よろしくお願いします。
IBMのJAVA向け有料サポートに電話して聞いてください。
>>798 特に具体的な目的はないんですが、
メソッドが循環的に呼び出せるんだから、
静的フィールドもどうにかならないかなと思いまして…。
>>799 public class Test {
private final Test next;
private Test(Test next) { this.next = next; }
public static void main(String[] args) throws Exception {
Test a, b, c;
/*
a = new Test(
b = new Test(
c = new Test(
a))); // 変数aが初期化(ry
*/
a = new Test(
b = new Test(
c = new Test(
null)));
Test.class.getDeclaredField("next").set(c, a); // Can not set final field
}
}
クラスで無理矢理挿れようとしたら動的に怒られました
804 :
デフォルトの名無しさん :2012/05/15(火) 18:58:20.15
>>804 サンプルコードを作る度に新しいプロジェクトを作るということですか?
806 :
デフォルトの名無しさん :2012/05/15(火) 19:49:32.47
>>805 はい
別プロジェクトならクラス名同じでもEclipseに怒られない
ソースファイル打ち直さなくてもドラッグ&ドロップでプロジェクトまたいでコピーするとかできます
807 :
デフォルトの名無しさん :2012/05/15(火) 19:58:31.93
808 :
デフォルトの名無しさん :2012/05/15(火) 20:15:30.70
>>806 >>807 なるほど。そうしてみます。
教科書見ながら勉強するときは普通みんなそうやってやるもんなんですか?
米国務省「韓国に戦術核必要なし」 下院可決受け
アメリカの下院軍事委員会が先週、北朝鮮の脅威に備えるため、韓国などを
念頭に戦術核兵器を配備すべきとした法案を可決しましたが、国務省は「必要ない」と明確に否定しました。
ヌーランド報道官:「我々は核のない朝鮮半島を支持していて、その方針を変えない。
戦術核兵器を韓国に置く必要はないし、配備する計画も意図もない」
ヌーランド報道官は、オバマ政権が一貫して目指す核のない朝鮮半島の方針に変わりはないと強調しました。
TV朝日 (05/15 12:35)
http://www.tv-asahi.co.jp/ann/news/web/html/220515020.html 日米同盟強化へ 米は9条改憲歓迎 「反対まったくない」
憲法第9条に基づき、日本は集団的自衛権を行使できないとの解釈が
日米同盟強化への大きな障害になるとする認識はいま米側で広範に強まり、
米国では、現在党派を問わず反対はなく、むしろ暗に歓迎するという姿勢が大勢となった。
92年にはヘリテージ財団が「米国は非公式に日本に改憲を促すべきだ」とする政策提言を発表した。
先代ブッシュ大統領も公式会見で、日本が改憲を求めるならば問題はないと言明した。
民主党リベラル派のトム・ラントス下院外交委員長は「日本が安全保障でも大国にふさわしい役割を
果たすために憲法を改正しようとすることを強く支持する」と述べた。
東京都の石原慎太郎知事が16日にワシントンでの討論会で憲法破棄を提唱したとき、
米側の討論者のリチャード・ローレス元国防副次官は「日本の憲法は確かに米軍占領時代の遺物であり、
日本はそれを変える権利も自由も有している」と述べ、日本の憲法改正にいまの米側には抵抗がないことを明示した。
sankei.jp.msn.com/politics/news/120425/plc12042507090004-n1.htm
米国から提唱する「日本の核武装」
日本が唯一の核兵器被爆国として過去、自国の核武装に強く抵抗する理由は明白だったが、常軌を逸した隣国が
核兵器保有を公式宣言するに至った今、再考が必要になった
sankei.jp.msn.com/politics/news/111009/plc11100920310007-n3.htm
なんでCalandarやDateはnew でインスタンスを作れなくしたの?
サブクラスのインスタンスを返して動作をいろいろ変えるため
813 :
デフォルトの名無しさん :2012/05/15(火) 21:38:53.30
どこで質問すれば良いかわからなくて、とりあえずこちらで質問してみます。 Javaを使って、PDFファイルの中のrotateの値を取得するにはどのような方法があるでしょうか?
そういやGregorianCalendarと普通のCalendarの主な違いって何?
普通のカレンダーって何だよ
>>796 nextは初期化の時に渡さずインスタンスを作った後で渡す
ヒント: メモリ領域の確保
820 :
デフォルトの名無しさん :2012/05/15(火) 23:22:01.12
javaの環境導入してプログラムも実行もできるんだけど コマンドプロンプト管理者実行でしか出来ない。なぜだ。
自分の権限がないところにインストールしたかインストールした時に管理者権限で実行したからだろ
822 :
デフォルトの名無しさん :2012/05/15(火) 23:31:02.82
ノートパソコンなんだけど自分のアカウントでOS開いてるってのも 関係あるかな? コマンドプロンプトでcd:\で移動しても見つからないってなる。 何度もパス設定したのに。
ヒント: メモリ領域の確保
824 :
デフォルトの名無しさん :2012/05/15(火) 23:47:50.40
JapaneseImperialCalendar とかな ロケールによってデフォルトのカレンダが変わる
あれ太陰太陽暦の明治5年12月3日が扱えないから太陽暦の明治6年1月1日が西暦1868年1月1日になるバグとかERAの定数が参照できないバグ直ったっけ?
>>814 何が違うんだ?
staticでnesInstance定義してる類は、ロケールや
プロパティを参照して環境にあった実際のクラスをロードする。
そうで無いものがあるか?
>違くない
どうでもいいが、これって栃木近辺の方言だっけ?
最近静岡出身の人も使う人が増えた気がする
GregorianCalendarは思いっきり大量にメモリリークしてるわけだけど。 JapaneseImperialCalendarはどうなのさ。
>>829 意味が解らん。サブクラスを通常のnewするんじゃなく
HeapAllocしたメモリーをラップしたインスタンスでも返すんかい。
全角文字を数字のコード化(unicode?)するのはこれでできました。 int d="あ".charAt(0); 逆にこの数値から全角文字に戻すにはどうすればいいですか? ファイルを通す手段は使いたくないです。
charにキャストするだけ
おおそれでいいんですか できました。
サーブレットから↓のようなコードでPostgresqlに接続しようとしてるんだけど、 Class.forName("org.postgresql.Driver"); DriverManager.getConnection("jdbc:postgresql://localhost:5432/sampledb","postgres","postgres"); ↓こんなエラーがでて接続できません。 SEVERE: Servlet.service() for servlet [S_Top] in context with path [/sample] threw exception [null] with root cause java.security.AccessControlException: access denied (java.util.PropertyPermission file.encoding read) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPropertyAccess(Unknown Source) at java.lang.System.getProperty(Unknown Source) at com.mysql.jdbc.StringUtils.<clinit>(StringUtils.java:70) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:286) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at D_Manager.getConnection(D_Manager.java:17) at S_Top.doGet(S_Top.java:26) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 同じコードをmainから流すと普通に接続できます。 このスタックトレースの意味がわかる人いませんか?
サーバはtomcat7.0です。宜しくお願いします。
>>836 うお、即答すごい。ありがとうございます。
チョンうぜぇ
あーこれはひどいなー
>>836 ぼくちんも困ってたんですぅ^^
でもたかりました^^
メモリ領域の確保って何ですか?
ここで質問しなくてすむようにJava初心者におすすめの教本を教えてください
初心者でもう2,3冊参考書終わらしたんだけどあんまり頭に入ってこない もっと同じ本を何度も繰り返した方がいいんですか?
頭に入ってないなら、読んどいたら? 流し見したって価値がないだろ。
>>848 章ごとには理解してるはずなんだけど、また違う章で同じ様なコードが来ると忘れてるんです
はずなんてしらねー 暗記しろとは言わないまでも、学習中の教科書くらい、用件がどのあたりに書かれているか覚えるまで読め。
10日で覚える系のものを2冊買ったけ全然書けない
馬鹿には無理。というか馬鹿すぎます
>>851 自分の作りたいやつににているもしくは必要な機能ににているサンプルを修正していったら?
>>851 そういう人は、本より講座受ける方がいいかも。
javaで使えるまともに更新されてる3Dのapiって無いでしょうか? java3dもjoglもまともに更新してなさそうなんです。。
swingでお勧めの本ないですか?
>>855 5/2にjogl 2.0rc8が出たばっかだが?
858 :
デフォルトの名無しさん :2012/05/17(木) 22:51:13.82
>>857 ごめんちょっと前に見たときには全然更新してなかったんだ。。。
すんませんでした
リリースは何ヶ月もかかるに決まってるだろ。リポジトリは1日間隔で動きぱなしだ。
まともに更新してないってどういう意味なんだろうな。
>>850 今まで勉強してた なんか燃えてきた
ありがとうございます
862 :
デフォルトの名無しさん :2012/05/18(金) 02:51:34.74
データベースから値を取得する際なんですが、ResultSetで値を得るとして それを例えば変数aに代入した場合、ResultSet.nextでResultSetが次の値を 読み込むと変数aの値はどうなるのでしょうか? 代入した際の値がそのまま保持されるのか、ResultSet.nextによって得られた 次の値が保持されるのか、どちらになりますか?
865 :
デフォルトの名無しさん :2012/05/18(金) 07:03:35.54
JSPでBeanを使おうとしたところ、 未定義の型:String useBeanのクラス属性 String の値が無効です とエラーが出ます。どこを間違っているでしょうか? JSPファイルは以下の3行のみです。 -------------- <%@ page language="java" contentType="text/html; charset=UTF-8"%> <%@ page import="java.lang.String" %> <jsp:useBean id="test" scope="request" class="String" />
わかりません
867 :
865 :2012/05/18(金) 07:53:15.09
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import="java.lang.*" %> <jsp:useBean id="test" scope="request" class="java.lang.String" /> ---------------------- pageEncoding指定が抜けていたようです。 さらにStringをパッケージ名から完全指定しました。 class="java.lang.String" と記述すれば実行できました。 class="String" と記述した場合はあいかわらずエラーですが。
>>867 生成されたソース見れば、なぜエラーになるのか理解できると思うよ。
869 :
デフォルトの名無しさん :2012/05/18(金) 09:59:30.82
870 :
デフォルトの名無しさん :2012/05/18(金) 14:46:47.82
rails serverと入力してもwebrick立ち上がらないのですが、どうしたらいいですか。 こういう出力がでます。(抜粋) C:\xampp\rails-apps>rails server Usage: rails new APP_PATH [options] Options: -r, [--ruby=PATH] # Path to the Ruby binary of your choice
スレタイみろや
872 :
デフォルトの名無しさん :2012/05/18(金) 16:30:26.00
jruby ralisの話なんです(><;)
スレタイミロ
xamppは使うなっ!!!!!!!!!!!!!!!
SpringMVC内での処理なんですが、 実験的に手動でリクエストごとにHttpServletRequestからセッションを取得し、 そこからsession idを得て、標準出力にloggerで出すだけの logger.info(request.getSession().getId()); こんなロジックで値を確認してみたのですが、ブラウザからアクセスがあるたびに IDが変わってしまいます。 HTTPはステートレスなのは解ってるつもりなので、それはそうだと思うのですが、 ブラウザを終了しない限り、セッションタイムアウトするまでは同じIDを持ち回るというのは どういう仕組みになるんでしょうか?
876 :
デフォルトの名無しさん :2012/05/18(金) 17:43:10.40
わかりません
Cookie禁止にしてるとか
875ですが、web.xmlの <session-config>の中に、<cookie-config>をいろいろ設定していたのが 悪さをしていたようです。 試しに<session-config>の中は<session-timeout>だけにしてみたら ちゃんとIDが固定されるようになりました。 ありがとうございました。
javaアプレットでゲームを作ろうとしています 128*96の画像ファイルを32*32に分割して2次元配列に入れようとしているのですが Nullがでてしまいうまくいきません どうかご助力お願いします import java.awt.Container;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException; import javax.imageio.ImageIO;import javax.swing.ImageIcon;import javax.swing.JApplet;import javax.swing.JLabel; public class aaa extends JApplet { private void DivideImage(File f, JLabel lb[][]) { int Highnum, Widthnum;// 縦分割,横分割の個数 ImageIcon imgic[][]; int KPixel = 32;// KPixelは画像の縦横のピクセル try { BufferedImage bimg = ImageIO.read(f); Highnum = bimg.getHeight() / KPixel; Widthnum = bimg.getWidth() / KPixel; imgic = new ImageIcon[Highnum][Widthnum]; lb = new JLabel[Highnum][Widthnum]; // 以下分割して配列にいれる for (int i = 0; i < Highnum; i++) { for (int j = 0; j < Widthnum; j++) { imgic[i][j] = new ImageIcon(bimg.getSubimage(j * KPixel, i * KPixel, KPixel, KPixel)); lb[i][j] = new JLabel(imgic[i][j]); } } } catch (IOException ex) {ex.printStackTrace();} } private JLabel Kyara[][]; public void init() { Container cnt = getContentPane(); File f = new File("画像.png"); DivideImage(f, Kyara); cnt.add(Kyara[0][0]); } }
Kyaraに何も代入してないからnull
879です KyaraにはDivideImageメソッドを適用して画像を入れているつもりなのですが、 メソッド内では代入できないのでしょうか?
できますよ。VMのバグかもしれませんね
883 :
デフォルトの名無しさん :2012/05/19(土) 12:10:37.55
junitでweb連携のテストケースを実行する時、これまでは開発PCにWEBサーバを立ちあげてやってたんだけど テストケースの実行中にwebページの内容を変更するという事がやりたくなった。 (これまでは手動でページを編集していた) JVM自体を覆えるweb環境のモックオブジェクトを作れれば可能だろうけど、 (こういうURLにアクセスされたらこういうページを返す、というような事をテストケース中で定義したい) そういう方法はあるんだろうか
日本語でおk
885 :
デフォルトの名無しさん :2012/05/19(土) 13:11:49.48
>>884 こういうURLにアクセスされたらこういうページを返す、というような事をテストケース中で定義したい
HttpUnitでなんとかならんの?
ScalaとJavaってどっち先に覚えたほうがいいの? ScalaやるならJavaからはじめたほうがいいの?
ScalaはライブラリをJavaに頼りっきりだからJavaが分からないと全く使い物にならない ScalaはJava(言語)使いたくないけどJava(プラットフォーム)使わないと仕方がない人のためのもので、 関数型やりたいだけだったら他のにすればいいのに
879です Kyaraの配列の要素数を前もって private JLabel Kyara[][] = new JLabel[4][3]; としておけばうまくいきました メソッド中で配列の要素数を宣言したのがまずかったのかもしれません ありがとうございました
初めに文字を入力しtxtの中の文字と一行ずつ比較し一致したものがあればそれを表示、 無ければ入力した文字をtxtに追記というプログラムを作りたいのですが比較、追記のプログラムを別々に作ることはできたのですが合わせるとうまくいきません。 if文で判定はできないのでしょうか?
馬鹿には無理
合わせるとうまくいかないのなら、別々に処理すればいいじゃないの。 まあ、file ioだかnioがまずいんだろうけど
単に使い方間違ってるだけだな。
894 :
uy :2012/05/19(土) 17:02:25.44
今から勉強する場合1.6と1.7どっちがいいでしょうか?
仕事とかで1.6使う予定があるなら1.6メイン、 そうでなければ1.7メインで。
>>894 javaのライブラリに頼らないとテキストファイルの操作すらまともにできない言語w
javaの起動時に-Dfoo=barとするとプロパティがシステムプロパティにセットされるけど、 これが沢山になると面倒なのでファイルから読み込ませたいんだけど、 Propertiesクラス使って読み込むコードを自分で実装しなきゃだめ?
901 :
デフォルトの名無しさん :2012/05/19(土) 19:36:25.38
glassfishとtomcatの違いは何ですか?
>>901 grassfishはEJBがつかえるよ。TomcatはJSP/サーブレットまで
えん
がわ?
>>900 実装したくないならしないほうがいいですよ
手元に1.6で動くBeansBindingなデスクトップアプリがあるのですが、 1.7でもbeansbindingは動くでしょうか?
ためせ
ことわる
〜終了〜
http://japan.donga.com/srv/service.php3?bicode=020000&biid=2012051904228 米国が韓国から輸入する一部の貝類の流通や小売を禁止させた。韓国は米国向けに
年間2300万ドル(約270億ウォン)分の貝類を輸出している。牡蠣の輸出割合が最も
多く、牡蠣産業界の被害が懸念される。
●米「韓国産牡蠣からノロウイルス検出」
18日、米食品医薬局(FDA)は、「韓国から輸入する貝類の流通を、全国的に禁止する一方、
近いうちに、リコール措置を下す予定だ」とし、消費者らに対し、摂取しないよう呼びかけた。
これに先立って、1日は、貝類を扱う業者らの輸出資格を取り消した。
FDAは、韓国産貝類は、養殖して採取した地域の水や土地が汚染し、食中毒の発生原因
であるノロウイルスが、貝類を通じて人間に移る危険性があると指摘した。ノロウイルスとは
、吐き気や嘔吐、下痢、胃の痙攣を誘発する食中毒菌だ。
米国では昨年末、韓国産牡蠣を食べた1?2人の消費者が、ノロウイルス症状を見せた。
米政府は今年3月に訪韓し、米輸出向け牡蠣を養殖する慶?南道(キョンサンナムド)の統營
(トンヨン)・巨濟(コジェ)地域を調査し、検査の結果、ノロウイルスが検出されたと発表した。
農林水産食品部(農食品部)は、統營・巨濟の牡蠣養殖場などに対するノロウイルス安全
計画をまとめ、米側に伝える一方、ノロウイルスを除去し、近いうちに輸入再開できるよう
努力すると明らかにした。
鯖がどこにあろうとバイナリは同じだぞ
大したアクセスがあるわけでもないWebアプリなんすが 5時間に一回くらいFull GCがおきてるんですけど、この程度なら普通すか? そもそもミッションクリティカルじゃない場合でもFull GCって絶対おきないようにするんもんすか? とくにサーバーに負荷がかかっているわけでもなすけど ネットで調べたところ、Full GCの間は処理がとまってしまうと書いてあったので ちょっとビビッてます。
企業でJavaでwebサイトを構築する場合 JSPとサーブレットどっちが主流でしょうか?
>>915 画面表示はJSP、ビジネスロジックはサーブレットという感じでどっちも使うよ
なるほど、両方覚えておきます
最近はJSP使わなくなった。 画面表示はHTML+jQueryで、Apacheかnginxに任せる。 ビジネスロジックはServlet+Springで、TomcatかJetty。 画面とロジックはajax通信でJSONによる表示情報のやりとりのみの疎結合。 ビジネスロジック出来て無くても、ロジックが返すはずのモックオブジェクトを ローカルにJSONで置けるから、Webデザイナーとプログラマの作業分担もやりやすい。 JSP使うと、作業分担もしにくいしデザインも入れ込みにくい。 おまけにロジック絡まない画面まで全部アプリケーションサーバを通すから Webサーバ無しでいいっちゃいいけど、高負荷時とかで問題が起きたときに切り分けしづらい。
ドカタ仕事すなあ
920 :
デフォルトの名無しさん :2012/05/20(日) 00:55:01.97
ご親切にも日本語で 「Java SE ダウンロードの最新版は、こちら(USサイト)からダウンロードをお願いします。」 って書いてあるよ。
890です。 テキストから行ごとに読み込み完全に一致したものを表示でindexOfを使っていたのですが これだと順番がバラバラでも表示されてしまうことに気が付きequalsを使ったのですが表示され無くなってしまいました。 原因がわからないのですが…
ソースも貼らずに原因が〜とか言われてもな
>>923 お願いします
import java.io.*;
class hikaku {
public static void main(String[] args) {
try {
InputStreamReader is = new InputStreamReader(System.in);
System.out.print("PleaseInputNumber → ");
int str = is.read();
BufferedReader br = new BufferedReader(new FileReader("./InputNumber.txt"));
String line=null;
while ((line = br.readLine()) != null) {
if(line.equals(str))
System.out.println(str);
}
br.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
一致してないからだろ
>>924 > InputStreamReader is = new InputStreamReader(System.in);
> int str = is.read();
→
BufferedReader is = new BufferedReader(
new InputStreamReader(System.in));
String str = is.readLine();
>>590 の「ここに書くときは半角スペース2個を、全角スペース1個に置換しといて!」を守れ
あと、もっと試行錯誤しろ
927 :
924 :2012/05/20(日) 02:46:26.15
何が一致していないのでしょうか? テキストの中に 111 とあってこのプログラムで 111と入力しても表示されないのですが…
928 :
924 :2012/05/20(日) 02:48:57.40
>>926 ありがとうございます!
すいませんやるの忘れてました…
本当にありがとうございます
いえいえ、お礼はいりませんよ
俺にお礼汁
931 :
デフォルトの名無しさん :2012/05/20(日) 07:18:38.15
『朝鮮総連』は色々な企業のホームページからホストコンピューターに進入し、自分達が隠したプログラミングを引き出す…他人の会社のサーバーに『挺陝馗操作』や『改竄red-hat』のクラッカープログラム保管場所にしている。 札幌市立啓北商業高校の野島(横濱)えり Microsoft USA co.tp. 弖十=TEN10(teto)=優多野手頭=野慈蚕=帝跿(徒)=衛鴉朧 笑狸乃雉匯
何で1.7を勧めるの?
>>924 String型とint型を比較して一致するわけないだろ
___________
|| // // |
|| / ̄ ̄ ̄ ̄\. | /  ̄ ̄ ̄ \
|| ( 人____) | ( )
|| |ミ/ ー◎-◎-)| (ヽミ i
|| (6 ゜(_ _) )|. ( 6) !
|| __| ∴ ノ 3 )| (∴ \____ノ__
|| (_/.\_____ノ | .
>>929 (っ___□__)
|| / ( )) ))ヽ| ( )) |三| ヾ
なんでMySQLは文字列型をint型に勝手に変換するんだろうな これバグ埋もれないか?
Java 1.3 + Swing 目的:ボタンを常に無効にしたい。 PropertyChangeイベントで、 JButton button = (JButton)propertyChangeEvent.getSource(); button.setEnabled(false); にしてみたら、ボタンのプロパティ値はfalseだけど、ボタンは押せるおかしな状態になってしまいました。 プロパティが変更される直前にイベントが発生して、変更をキャンセルするようなことはできないのでしょうか?
っ JRE のバージョン
jcursesで日本語が途中でぶった切れるのはなんでだろう
940 :
デフォルトの名無しさん :2012/05/21(月) 01:18:51.76
>>937 1.3・・・
常に無効にしたいなら無効なボタンの画像にしちゃえば?
もしくは表示が普通でも良いならリスナー側でreturnするとか
javax.cryptoの方では何を指定したの
これからJavaの勉強をはじめます ある程度何でも作れるようになるまで何年かかりましたか?
1年もあればできるようになるよ
まあDBからデーター引っ張ってHTML表示するくらいしかできないんですけどね
すみません、コンストラクタに関してなんですが、インスタンス生成時に実行されると書いてあるんですけど、これで実行されないのはなぜですか? testrun.java class testrun{ public static void main(String[] args){ new sleeptest(); } } sleeptest.java class sleeptest{ void sleeptest(){ Runtime rt = Runtime.getRuntime(); try{ rt.exec("sleep 30"); } catch(Exception ex){ System.exit(1); } } } 下記の様にすると実行できはしたのですが、気になっています。 testrun.java class testrun{ public static void main(String[] args){ sleeptest st = new sleeptest(); st.sleeptest(); } }
>>946 > void sleeptest(){
sleeptest() {
voidをつけるとコンストラクタ定義ではなくメソッド定義になる。
sleeptestは明示的にコンストラクタが定義されていないので
引数なしで何もしないコンストラクタが暗黙に追加される。
>>946 > void sleeptest(){
void が付いてるから、それはコンストラクタじゃなくメソッドになる
コンストラクタは戻り値 void ではなく、何も書かないんだ
Javaの世界で最近熱いネタってなに?
ダルビッシュはJavaじゃない!
Java One
>>948 >>949 ありがとうございます、voidはずしたらなりました!
returnしなければいいのかと思ってました。
文字列の結合で、 String s1 = "ABC"; String s2 = "DEF"; String added = s1 + s2; とやるより、 StringBuilder bf = new StringBuilder(); bf.add("ABC"); bf.add("DEF"); String added = bf.toString(); とやるべきだと聞きますが、前者のStringオブジェクトどうしの 結合はなぜ推奨されないのでしょうか?
ヒント:メモリ消費量
>>955 s1、s2が必要でないなら、
String added = "ABC" + "DEF";
が良い。
StringBuilder使うよりも。
なんで?
>>956 >>957 ありがとうございました。勉強になりました。
大量にオブジェクト作って、メモリ消費量も確認してみたいと思います。
どうせコンパイラが勝手にstringbuilder作ってくれるんだから ループでnewしたりする事さえ注意すれば何してもいいじゃん
( ´,_ゝ`) プッ
屁すんなよ
お前がなw
965 :
デフォルトの名無しさん :2012/05/21(月) 23:08:50.91
こういうコード片を見たんですが、この初期化方法?の名前とどのようなときに使われるのかを教えてください。 List<String> fooList = new ArrayList<String>() { { add("foo"); add("baa"); add("hoge"); } };
無名クラスの変な使い方。普通はイベントリスナを実装するときによく使われる。 いちいちクラスが生成されて、たかがコレクションの初期化に使うには激しく無駄の多いやり方なので真似しないほうがいいよ
>>966 レスありがとうございました。無名クラスについて調べてみます。
インタフェースをその場で実装するようなのは見たことがあったんですけど、
具象クラスでこういうのは初めて見たので助かりました。
>>959 メモリー消費はあんまり関係ない
処理速度の問題
for(;;) string = string + "文字";
ループでこういう書き方したとき、変数stringに
格納した文字列は毎回解放される。
また、stringの内容は+演算子によって生成された
メモリー領域に毎回コピーされる
例えばコピーが行われる内容はこんな感じ。
1回目: 文字
2回目: 文字文字
3回目: 文字文字文字
このコピーが凄く無駄。StringBuilderだと、コピーせず内部で
リストに繋いでたりするからループ中でコピーする文字列はこんな感じになる
1回目: 文字
2回目: 文字
3回目: 文字
>>965 double brace initialization
バッドノウハウだから使うな。メリットゼロ
カーリー抜けた まいいや
>>970 読みやすいというメリットは明らかだがデメリットがあんま解からんな
速度カリカリにチューンしなきゃならんのならマズイのは解るが
起動しっぱなしのアプリで高頻度で呼ばない処理なら
大したデメリットないじゃん。
new ArrayList(Arrays.asList(とかでいいだろ さすがにあんまり多用してたらメモリ食うしロードも遅くなるぞ
俺は使わんけど是非皆さんには多用してほしい
>>972 なんで動くか理解したか?
理解できればあり得ないって気づくよ
>>975 staticフィールドの初期化で動いてんだろ
コンストラクターより前に動くはずだから危険な気がするが
みなさんにはぜひおすすめしたい
>>976 ちがう。javapの結果ちら見して答えちゃだめよ。
>>977 ふと疑問に思ったんだがあのコード実行中に一回しか動かなくね?
初学者→半日立っても何故動くか説明出来ないまま 中級者→どっかの解答みて小一時間かけて漸く説明出来るようになる 上級者→コード整形とかしてるうちに、あ、あれ使ってたのかよ!とわかる。で、待てよ・・・と検討に入る。 だいたいこんな感じになると思う。 何で動くか理解出来る奴少な杉!な時点でもうないよね
うん
stringsの操作は実行前にmemcpyされてるみたいだからメモリ喰うのは変わらんな。 その辺はアセンブラから来るともどかしい。 梅。
Java メモリのクラスター C/C++ メモリの数珠繋ぎ、下手したらこま切れw
うむ
ちゃんとmmu載ってるなら大した問題じゃないな。 os上でアプリ何度か起動する時点で、アプリに割り当てられてるメモリは細切れなんだし。
実行時じゃなくって、プログラム作ってる時のイメージじゃね?
>>985
>>970 名称ありがとうございます。おかげさまで関連情報をいろいろと見つけることができました。
中括弧が二重になっているからdouble braceってわかりやすいですね。
これは無名内部クラスの作成と非staticな初期化ブロックの組み合わせで実現しているようです。
確かに普通のクラスでこれを使うのはやりすぎな感じがしますし、getClass()しても無名クラスが返ってくるしでイマイチな感じでした。
static finalで参照専用なCollections.unmodifiableListあたりのの初期化なら使えそうな感じがします。
# コンパイルすると無名クラスファイルができてしまうのはご愛嬌?
今回は一つのちょっと風変わりなコード片からいろいろと学べて良かったです。
ご回答くださったみなさま本当にありがとうございました。
989 :
デフォルトの名無しさん :2012/05/22(火) 13:11:40.22
ちょっと困っているので質問させて下さい。 1) ZIPファイル解凍(中に複数のテキストファイルあり) 2) 解凍した複数のテキストファイルを読込みながらDBへINSERT するjavaプログラムがあるのですが、 ほとんどの場合、正常に動作し、中のテキストファイルが全てDBに取り込まれるのですが、 まったく同じZIPを相手にしているのに、時たま1、2ファイル抜け落ちてしまうことがあります。 ただしその場合でもプログラムは正常終了しています。 ログを仕込んで調査した結果、 1)はちゃんと全ファイル解凍しに行っています。 2)も1)で対象になった全ファイル読込み対象にしに行っています。 なのに1、2ファイル抜け落ちてしまうことがあるのです。 なので、考えられるのは、1)でZIPを解凍する際、 1-1) ZIPファイルのエントリリスト取得(java.util.zip.ZipEntry) 1-2) 1-1)のリストのファイルをBufferedInputStream#readで読込み 1-3) 1-2)をFileOutputStream#writeで解凍先へ書込み のうち、1-3)のFileOutputStream#writeが非同期になっている(書込み完了を待っていない) もしくはOSの遅延書込みが原因かと思っています。 javaで書込み完了を待つ、もしくはOSの遅延書込みを待つ等の制御は可能なのでしょうか? または別の原因でしょうか? このあたりに詳しい方、アドバイスお願いします!m(_ _)m ちなみにOSはWindowsXPで、Java1.4.2です。 ソースが必要でしたら晒すことも可能です!
下のような場合thisがイベントリスナーであってますか?またイベントリスナーとは何なのかというのが調べても今一わかりません。 初歩的な質問ですがわかりやすくご教授頂けないでしょうか。。 btn1.addActionListener(this);
event listener とは、 event を listen する人だ! this が何かのイベントを listen したいなら、 this をイベントリスナーにする
わかりません
993 :
デフォルトの名無しさん :2012/05/22(火) 14:29:36.46
>>990 thisである自分自身にActionListenerがimplementsされてれば有ってるよ
リスナーはイベントが起きたときの処理を記載したクラス
イベントが起きるとリスナーの中の決まったメソッドを実行してくれる
994 :
990 :2012/05/22(火) 14:45:40.15
レス下さった方々ありがとうございます。 btn1.addActionListener(this);を記載したのと同じクラス内にはactionPerformed(ActionEvent e)というメソッドがあります。 btn1がクリックされるなどのイベントが発生した場合に、actionPerformedが呼び出され処理をしますってことでしょうか? 例えばActionListenerがimplementsされた他のクラスで処理させる場合にはどのように記述されるのでしょうか。
JavaをElipse使って書いてるのですが、例えば知り合いなどのJava環境のない人にプログラムを渡してそっちで実行するにはどうすればいいでしょうか? 将来的にはプログラムの配布とかをしたいので気になりました。
JARにする お願いしますJRE入れてくださいって土下座するになるけどなw それが嫌なら.NETにしとくのが吉
>>995 Doppio VM とか言ってみるテスト
test
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。