【初心者】Java質問・相談スレッド123【歓迎】at TECH
【初心者】Java質問・相談スレッド123【歓迎】 - 暇つぶし2ch737:デフォルトの名無しさん
09/02/13 03:43:44
「Javaの鉄則」を読んでると
javaの仮想マシンの最適はかなりアホみたいに書いてたました.
例えば
private void a() {
int d = 0;
b(d);
}
private void b(int d) {
// 空
}
の場合,メソッドbは無意味にもかかわらず実行時に削らず,空のメソッドを呼び出すみたいなことかいてるんだけど.

ほかには
class A {
private var1;
public A() {
// コンストラクタ
var1 = 0;
}
の場合var1はフィールドで0で初期化されコンストラクタでもう一度0に初期化されるから
二回初期かさえれるのでコンストラクタ内のvar1 = 0は削除すべし見たいに書いてる.

でこの本が書かれたのは2000年になってるんだけどいまだにアホなままなんでしょうか?
アホのままだとするとsunは何らかの意図があって直す気が無いんでしょうか?
あと「Javaの鉄則」の最適化の話って今のコンパイラにも適応すべき鉄則なんでしょうか?

738:デフォルトの名無しさん
09/02/13 04:44:42
なんで自分でテストコードを書いて確認しないの?

739:デフォルトの名無しさん
09/02/13 09:36:31
javapとかでバイトコードを読めば分かると思うが、javac自体は一切の最適化をやらない
どこまで最適化を行うかはJVMの実装任せ

740:デフォルトの名無しさん
09/02/13 10:20:25
ここを100回嫁
URLリンク(ja.wikipedia.org)

741:デフォルトの名無しさん
09/02/13 12:34:56
>>739
よめよ

742:デフォルトの名無しさん
09/02/13 14:56:19
>javac自体は一切の最適化をやらない
多重ループ展開しまくってるんだが?

743:デフォルトの名無しさん
09/02/13 15:16:52
1 + 2 + a は 3 + a に最適化する。
1 + a + 2 は最適化してくれない。

744:デフォルトの名無しさん
09/02/13 16:26:56
いいリファレンスブックってないかね?

745:デフォルトの名無しさん
09/02/13 18:26:55
javadoc最強

746:デフォルトの名無しさん
09/02/13 18:42:39
日本語のjavadocを信じてはならぬ!

747:デフォルトの名無しさん
09/02/13 18:46:12
本がいいんだけど

748:デフォルトの名無しさん
09/02/13 19:05:14
javadocを印刷

749:デフォルトの名無しさん
09/02/13 21:36:46
>>737
その本、どこのアホが書いたの?

750:デフォルトの名無しさん
09/02/14 00:02:01
文字列連結とか例外処理も。

751:デフォルトの名無しさん
09/02/14 06:35:06
javaでwebshopのソフトを作りたいのですが
XREA&CORESERVERでの共有SSLサーバー対応できるのでしょうか?
それとクレジットカード決算についてなのですが
暗号化(?)みたいにしないとデフォじゃまずいですよね?
そこら辺の事を書いてあるサイト教えて頂けませんでしょうか?

よろしくお願いします。

752:デフォルトの名無しさん
09/02/14 06:55:58
web板行った方がよくね

753:デフォルトの名無しさん
09/02/14 07:25:34
>>752
ありがとうです。web板行きます。

754:デフォルトの名無しさん
09/02/14 12:05:22
素朴な疑問なんだがJDK6u10以降のアプレットのドラッグアウトってどうやるんだ?
javaコンソールから次世代java-pluginを使うようにしてIEにjava-pluginを有効にしてもドラッグアウトできないんだが。

755:デフォルトの名無しさん
09/02/14 13:07:30
<param name="draggable" value="true"> してないとか?

756:デフォルトの名無しさん
09/02/14 14:31:47
これ、実際使いどころあるのかねぇ

757:デフォルトの名無しさん
09/02/14 15:07:24
>>756
ブラウザが、うざくて閉じたいときにどうか?

758:赤西仁
09/02/14 16:33:30
2年間悩んでます。お力をお貸しください。

PSのアークザラッドⅡというタイトルのゲームの、ゲーム画像(歩行画像など)を抽出したいのですが、
かれこれ1年ほど経ちますが、なかなかうまくいきません。
*もちろん抽出した画像は個人範囲内で利用するつもりです。

◆試してダメだったこと

 ネット上からダウンロードできる、ありとあらゆる抽出系ツールを試した。
 (ちなみに他のゲームはほとんど抽出可能)

◆教わったこと

 ・アークザラッドⅡは独自の画像形式を使っているから抽出できない。
 ・PS上で表示されてるということは絶対に摘出はできるはず。
 ・URLリンク(www.gradius2.com)

◆抽出は不可能ではないということを知ったとき

 2ちゃんねるで質問したところ、
 ある方が実際にキャラクターの歩行画像を抽出して
 私が立てたスレにアップしてくださいました。

スクリーンショットじゃダメなんです。どうか皆さん、お力をお貸しください。お礼は絶対にします。

759:デフォルトの名無しさん
09/02/14 16:36:02
ボキュは馬鹿なコピペ君です、まで読んだ。

760:デフォルトの名無しさん
09/02/14 16:44:23
>>754
>>755 のとおりHTMLタグを書いて、
Alt を押しながらアプレットをドラッグする。
HTMLタグを書く必要があるので、
既存のアプレットを何でもドラッグできるわけではない。


761:デフォルトの名無しさん
09/02/14 20:20:45
>>758
マルチは低学歴w

762:デフォルトの名無しさん
09/02/16 00:15:18
すいませんが質問させてください。

文字列を入力して「Blowfish」で暗号化。
暗号化した文字列を一度ファイルに出力。
そして、出力したファイルの文字列を読み込んで復号するというプログラムを作っているのですが、
読み込みの時点でjavax.crypto.BadPaddingExceptionというエラーが出てしまいます。
おそらくブロックサイズが合っていないか何かのエラーだと思うのですが、
解決方法がわかりませんでした。

申し訳ありませんが、よろしくお願いします。

763:デフォルトの名無しさん
09/02/16 01:35:00
>>762
何が聞きたいのかすら分からない。
例外の意味を知りたいならググればいいし、
書いたプログラムが間違っているかどうかなら、間違っているんだろう。

それ以上の何が言えると思っているんだ?

764:デフォルトの名無しさん
09/02/16 01:43:05
あなたには聞いてません

765:デフォルトの名無しさん
09/02/16 01:44:05
では、誰に聞いたのかはっきり示して下さい

766:デフォルトの名無しさん
09/02/16 01:47:15
>>762
その場合、解決方法は机の脇のテディベアに聞くといいよ

767:デフォルトの名無しさん
09/02/16 01:47:31
おぃぃぃぃぃ

誰に聞いたんだよ!

768:デフォルトの名無しさん
09/02/16 02:08:58
すいません、私が誰に聞いたのかまったくわかりません。
私は誰に質問したのでしょうか?初心者ですがよろしくお願いします。

769:デフォルトの名無しさん
09/02/16 11:27:42
>>762
一般論だけど、
Blowfishはブロック暗号なので、ある特定サイズ(×n)のデータしか暗号
化&複合できず、足りない部分にパディングを入れる必要がある。そのへ
んで何かミスをするとBadPaddingExceptionが起きる。


770:デフォルトの名無しさん
09/02/16 12:27:55
>>763
知ったかぶりさん、恥かいちゃったねw

771:デフォルトの名無しさん
09/02/16 12:41:24
>>770


772:デフォルトの名無しさん
09/02/16 12:46:26
>>770
読んでも意味が分からないなら、無理してレスするなよ

773:デフォルトの名無しさん
09/02/16 14:12:50
>>763
知らないならでしゃばらないでください。

774:デフォルトの名無しさん
09/02/16 14:29:39
よほど悔しかったんだろうな

775:デフォルトの名無しさん
09/02/16 15:14:45
>>763 は何がしたいの?
ふつ、匿名掲示板で質問するのは、「知ってる人がいたら教えてください」ってことだろ?
なんで、何が聞きたいのかすら分からないヤツがわざわざ出てくるの?
あまいに聞いたんじゃ無いぞ~~www。脳みそカラッポだな。
それとも夜中の1時に寝ぼけて、ここを自分のブログと勘違いしたのか?
アフォすぎる。知らないなら出てくるなよ。

776:デフォルトの名無しさん
09/02/16 15:15:49
>>763は恥さらし。以後、このスレ立ち入り禁止。追放しました。

777:デフォルトの名無しさん
09/02/16 15:48:07
>>775-776
まぁ落ち着けや。

778:デフォルトの名無しさん
09/02/16 17:05:03
>>775
>>769が中身無いって分かってんだよね?

779:デフォルトの名無しさん
09/02/16 17:10:18
>>763から>>779まで全員アホって事でいいじゃん

780:デフォルトの名無しさん
09/02/16 17:12:59
ついでに俺も

781:762
09/02/16 17:23:16
>>763
>>769
ありがとうございます。
パディングなどについて重点的に調べていきたいと思います。

782:デフォルトの名無しさん
09/02/16 20:38:48
ばかばっか

783:デフォルトの名無しさん
09/02/16 20:46:11
バカは>>763ただひとり

784:がちゃがちゃ
09/02/16 20:56:24
HashMap<Integer, List<String>> strMap = new HashMap<Integer, List<String>>();

このような HashMap を作ることは可能でしょうか?
だれか優しい人おおしえください。

785:デフォルトの名無しさん
09/02/16 21:02:34
コンパイルしてみりゃいいじゃない

786:デフォルトの名無しさん
09/02/16 21:20:59
知らないならレスしないでください

787:デフォルトの名無しさん
09/02/16 21:35:11
知っているから答えるけど、コンパイルしてみりゃいいんじゃね?

788:がちゃがちゃ
09/02/16 21:48:58
コンパイルは通りました。 -> javaプログラムとしてもちゃんとできていました。

しかし、JSP/Servretにて、
「org.apache.jasper.JasperException: An exception occurred processing JSP page」
というエラーがでる。

789:デフォルトの名無しさん
09/02/16 22:06:02
WebSphereでやったら動いたよ

790:デフォルトの名無しさん
09/02/16 22:09:40
>>788
じゃぁ最初っからそう書けよ。
なんで情報を小出しにする?まだ他に何か隠してることがあるんじゃないのか?

791:デフォルトの名無しさん
09/02/16 22:18:03
名前、年齢、勤務先/学校名とかだな

792:デフォルトの名無しさん
09/02/16 22:36:08
>>784
可能です。

でいいだろ。ごちゃごちゃ言わずに答えれば良いんだよ。

793:デフォルトの名無しさん
09/02/16 22:39:59
今更答えてもな

794:デフォルトの名無しさん
09/02/16 22:58:59
>>792
もう遅いよ

795:デフォルトの名無しさん
09/02/16 23:45:27
>>792
お前が来るのが遅いのが悪いんだ

俺は俺の好きにする

796:デフォルトの名無しさん
09/02/17 00:09:29
mainメソッド内において、
メニューを選択させてそれに対応する処理を行いたい時に、
switch (menu) {
case 0: method0(); break;
case 1: method1(); break;
みたいにスイッチ文を使うとしますよね?
その際、一つ一つの処理が長いから再利用性はないけど、
それぞれのメソッドに独立させたいとする。
そういう時って、同じクラスのprivate staticメソッドで実現させるんですか?
オブジェクト指向って関数がクラスと関係してるから、
何か不自然に感じてしまうんですけれど・・・。
Cのような手続き言語でそのようなことをしても
全く違和感はないのですが・・・。

797:デフォルトの名無しさん
09/02/17 00:11:16
そういうときのデザインパターンがあった気がするけどそこらへん詳しい人頼む。

798:デフォルトの名無しさん
09/02/17 00:43:44
移譲使うかな
menu0.addAction(new Action0());
menu1.addAction(new Action1());

getSelectedMenu().doAction();
みたいに書ける

799:デフォルトの名無しさん
09/02/17 01:09:34
>>797
知らないならレスしなくていいです。

800:デフォルトの名無しさん
09/02/17 01:09:47
全体をMVCに分けた上でCの実装にStrategyパターンを使う。

801:デフォルトの名無しさん
09/02/17 01:18:12
Command(Action)パターンだろ

802:デフォルトの名無しさん
09/02/17 01:28:40
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

803:デフォルトの名無しさん
09/02/17 02:13:05
釣られないならレスしなくていいです。

804:デフォルトの名無しさん
09/02/17 02:15:41
>>802
Strategyパターンはアルゴリズムを選択的に実行するためのもので
Commandパターンは手続きとデータをカプセル化するためのものだぞ?
>>798はCmanndパターンだぞ。

805:デフォルトの名無しさん
09/02/17 02:22:33
いやべつに>>800>>798を指していないし。

806:デフォルトの名無しさん
09/02/17 03:06:59
JAVAの勉強を始めたいんですが、初心者にお勧めの参考書ってありますか?

807:デフォルトの名無しさん
09/02/17 04:45:41
>>806
URLリンク(java.sun.com)
オンライン文書だけどここらへんのチュートリアルとか

808:デフォルトの名無しさん
09/02/17 10:59:11
ant使ってzipファイル触ってるんだけど、
書庫内書庫ってtmpディレクトリ作って解凍してやるしかないよね?

809:デフォルトの名無しさん
09/02/17 20:51:21
知らないならきくなよ

810:デフォルトの名無しさん
09/02/17 20:54:15
ごめんなさい(ノД`)

811:デフォルトの名無しさん
09/02/17 21:03:48
すみません。dojaスレで聞いてビット積について調べてこいと言われて調べたのですが、
本当に基本的なことなんですが、
以下のような式があります。
B_ = (B_ & 0xFE) & 0xFF;

これは結果的にこの式と同じではないでしょうか?
B_ = (B_ & 0xFE) ;
もっというと
B_&=0xFEとはなりませんでしょうか?


812:デフォルトの名無しさん
09/02/17 21:28:17
ggrks
調べて来いって言われたんだろ

813:デフォルトの名無しさん
09/02/17 21:31:57
>>811
B_の型って何だ?dojaでは何かの型なのか?

814:デフォルトの名無しさん
09/02/17 21:31:58
>>812
知らないならレスしないでください

815:デフォルトの名無しさん
09/02/17 21:45:41
あの・・・気軽に質問しないでくれませんか?

816:デフォルトの名無しさん
09/02/17 21:56:32
>>811
実際に動かしてから聞いてください。

817:デフォルトの名無しさん
09/02/17 22:15:11
>>813
int です。
どう計算しても値が違うものにならないような気がして…

818:デフォルトの名無しさん
09/02/17 22:21:53
URLリンク(www.hellohiro.com)
のコンパイルを使用としたら、無検査どうこうと怒られたんで下記のようにしてみたんだけど問題無いでしょうか?


import java.util.*;

public class HelloWorldSet {
public static void main(String[] args) {
try {
// LinkedHashSet
Set<Integer> linkedHashSet = new LinkedHashSet<Integer>();
addData(linkedHashSet);
System.out.println("LinkedHashSet : " + linkedHashSet);
} catch (Exception e) {
e.printStackTrace();
}
}

static void addData(Set<Integer> set) {
for (int i = 10;i >= 1;i--) {
set.add(new Integer(i));
}
}
}

819:818
09/02/17 22:23:15
>>818
いまいち総称型の位置が正しいか不安で・・

特に
static void addData(Set<Integer> set) {
あたりの使い方が気になっています。

他の解決方法もあればお願いします。

820:813
09/02/17 22:49:32
>>811
B_がintなら同じじゃねーのかな…。
ていうかよく考えたらB_がbyteだったらエラー出まくりだよな…。

iモードなんたらってスレみたら、
たしかに69の奴が「ぜんぜん違う」と断定してるな。
ほんとに違うのか???
Java上級者の方、意見求む。

821:デフォルトの名無しさん
09/02/17 22:56:43
>>820
intとbyteのビット数はどうなん?

byteは最大値FF
intは最大値FFFFFFFF

>ていうかよく考えたらB_がbyteだったらエラー出まくりだよな…。

byteとintをビット演算してエラーでるっけ?

822:デフォルトの名無しさん
09/02/17 22:59:10
式展開してみて、これを同じと見るかどうかじゃないですか。
その人が何を言ってるのか意味不明ですが、ていうか同じですけどw

(B_ & 0xFE) & 0xFF
B_& 0xFF & 0xFE & 0xFF


823:デフォルトの名無しさん
09/02/17 23:14:55
public class BitTest {
public static void main(String[] args) {
long i = 0;

for (i = Byte.MIN_VALUE; i <= Byte.MAX_VALUE ; i ++) {
bittest((byte)i);
}

for (i = Integer.MIN_VALUE; i <= Integer.MAX_VALUE ; i ++) {
bittest((int)i);
}
}
public static void bittest(byte B_) {
byte c1 = (byte)((B_ & 0xFE) & 0xFF);
byte c2 = (byte)((B_ & 0xFE));

if (c1 != c2) {
System.out.println("error byte " + B_);
throw new RuntimeException();
}
}
public static void bittest(int B_) {
int c1 = (B_ & 0xFE) & 0xFF;
int c2 = (B_ & 0xFE);

if (c1 != c2) {
System.out.println("error int " + B_);
throw new RuntimeException();
}
}
}

824:823
09/02/17 23:16:23
2つのビット演算の結果が違ったら例外投げて終了するコードを書いてみた

動かしてみれば一発じゃんって事で動かしたが、エラーでないまま最後まで通ったよ

825:823
09/02/17 23:17:35
dojaが何か分かってないんで、見当違いのことしてたらごめんだぜ

826:813
09/02/17 23:49:34
>>821
スマソ、適切にキャストしたらエラー出んかった…
エラーが出たのはキャストしてなかったからだった…
B_がbyteの場合は、

B_=(byte)((B_&0xFE)&0xFF);
B_=(byte)(B_&0xFE);

ダッタ。で、&0xFEの時点ですでに8~31までの上位ビットは切り捨てられているわけだから、
&0xFEの後に&0xFFしても意味ないはず…。
ていうか>>823スゲェな…。

すべてはiモード携帯電話用~スレの69の発言がおかしいんじゃねーかw
69め…ブツブツ。

827:デフォルトの名無しさん
09/02/17 23:56:40
0xFFってint型に突っ込むと
-1として解釈されるパターンと255として解釈されるパターンがあるから……

ってどっちでもビット演算的には同じか。

828:デフォルトの名無しさん
09/02/18 00:29:13
ところで、>>823の何がすごいのか書き残してから巣に帰ってくれないか?

829:823
09/02/18 00:42:53
お世辞だよね

830:デフォルトの名無しさん
09/02/18 00:46:06
どなたか>>818の答えをお願いします・・・

831:811
09/02/18 00:46:41
おお皆様ありがとうございます。
やっぱり結果的には一緒っぽいですよね…


832:デフォルトの名無しさん
09/02/18 01:55:17
>>830
キャスト

833:デフォルトの名無しさん
09/02/18 09:21:18
サーブレットでログ出力関数を作ろうと思うのですが
同期させるには以下のコードでよいですか?

public class Util {

 private static Object lock = new Object();

 public static void outputLog(String msg) {

  synchronized (lock) {
   System.out.println(msg);
  }

 }
}


834:デフォルトの名無しさん
09/02/18 09:48:02
printlnを一切ほかのところに書かずに全部それで統一できるならね

835:デフォルトの名無しさん
09/02/18 09:51:57
>>834
なるほど!

836:デフォルトの名無しさん
09/02/18 12:21:08
>>833
自分で作らないで java.util.logging を使ってあげてください。


837:デフォルトの名無しさん
09/02/18 13:13:28
自分の銀行口座に振り込まれたログをJAVAを用いて管理したいのですがそのようなAPIを公開している銀行又はライブラリはありますか?
分かる方がいらっしゃったら返答お願いします

838:デフォルトの名無しさん
09/02/18 13:22:01
透明なJFrame,もしくはJWindowを作成したいと思っています。
java6から利用可能と聞きました。
JAVA FXは利用しないやり方を知りたいです。
よろしくお願いします。

839:デフォルトの名無しさん
09/02/18 13:36:00
>>837
危険だから公開はしないと思うぞ。
でもMicrosoftMoneyに取り込める所はあるから、
同じプロトコルを使えば可能なのかも。

840:デフォルトの名無しさん
09/02/18 13:41:51
>>838
update10以降とかじゃなかったっけ?
AWTUtilties#setWindowOpacity(Window,float)とかだったと思う。

841:デフォルトの名無しさん
09/02/18 13:55:09
>>832
総称型を使ってるからキャストはいらないんじゃね?
>>818のソースで動いてるし、問題あるか知りたいんだろ。

842:デフォルトの名無しさん
09/02/18 14:09:43
>>841
大丈夫っぽいね

無検査~はジェネリック使わないとバシバシ警告だしてきてウザイやね

843:830
09/02/18 15:29:47
>>832
馬鹿は回答しないでください><

844:デフォルトの名無しさん
09/02/18 16:00:25
プログラミング自体はじめたばかりの初心者です

      BBSをListで作る練習をしていて、例題に

      public Writing[] list() throws BbsException{
              ~~~~~~~~~~~~~~~
      }

      という記述があったのですが、波線のところはどういうことをしているのでしょうか?
      Writingクラスは別にあります。


845:デフォルトの名無しさん
09/02/18 16:05:44
何かしてるわけじゃないです
戻り値はWriting[]型で引数なしのlistという名前のメソッドを定義しますよと伝えてるだけです

846:884
09/02/18 16:27:00
なるほど

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

847:デフォルトの名無しさん
09/02/18 17:13:37
java教科書くらい読めよ

848:デフォルトの名無しさん
09/02/18 21:55:11
浮動小数点演算について質問です。
例えば単純な引き算で、1.0 - 0.8 = 0.19999・・ となってしまいますが
これを解決するのに BigDecimalを使うというのをネットで見つけました。
でも単純な引き算を行うのにも以下のようにどのような演算をしてるのがわかり難くなってしまいました。
new BigDecimal(String.valueOf(1.0)).subtract(・・・)

浮動小数点演算で丸めがおこらないようにするには
このようなわかり難いコーディングがデフォなのでしょうか?
何か良い方法がありましたら教えてくださいm(_ _)m

849:デフォルトの名無しさん
09/02/18 23:15:32
>>848
多数派:誤差があっても気にしない。
神経質な業界:言語自体、十進演算をする実装のものを選ぶ。
科学技術:誤差込みで計算した上で、きちんと誤差管理する。
ってところかなあ。

850:デフォルトの名無しさん
09/02/18 23:18:13
>>843
質問しといておまえは何様のつもりだ?

851:デフォルトの名無しさん
09/02/18 23:40:25
>>848
あくまでJavaだけしか使えないなら
URLリンク(eval.dev.java.net)
みたいに計算式をパースしてやる手法ぐらいしか知らん。

852:デフォルトの名無しさん
09/02/18 23:45:46
つかったことないけど
new BigDecimal("1.0").subtract(・・・)
てすればいいんじゃないのかな?

853:デフォルトの名無しさん
09/02/18 23:46:19
普通はDecimalFormatかFormatterを使う。

854:デフォルトの名無しさん
09/02/18 23:53:54
>>848
必要な桁で丸めるとか、
あらかじめゲタを履かせる(10倍して演算後、10で割る)とか。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch