【初心者】Java質問・相談スレッド111【大歓迎】at TECH
【初心者】Java質問・相談スレッド111【大歓迎】 - 暇つぶし2ch755:デフォルトの名無しさん
08/02/05 03:27:55
>>752
String型を返すコンストラクタはString以外には存在しない。

文字列の結合が目的ではないと思うが、
あまりにも簡単なことをこなす為に、拘る内容があまりにも初歩的。

・クラスの継承、型と代入について
・コンストラクタの仕組み、メソッドとの違いについて

756:デフォルトの名無しさん
08/02/05 03:32:32
>>754
コンストラクタは自分のクラス型しか返せないということですね。
>>753
できました。ありがとうございます。メソッドをstaticにしないとうまくいきませんね。
 public String d(String c){
  static String s = new String("f" + c);
  return s;
 }
これだとコンパイルエラーでした。

757:デフォルトの名無しさん
08/02/05 03:43:05
コンストラクタは何も返さない
newオペレータが指定されたクラスのインスタンスを構築してその参照を返す
その構築の際にコンストラクタが使用される

758:デフォルトの名無しさん
08/02/05 03:54:53
>>757
Javaではnewは演算子扱いではなくてクラスインスタンス生成式や配列生成式を示すだけのキーワード扱いじゃなかったかな。

759:デフォルトの名無しさん
08/02/05 04:01:42
あ、いや、すまん。演算子扱いだったのかもしれない。気にしたことないのであやふやだ。
JLS見てみる。

760:デフォルトの名無しさん
08/02/05 04:53:50
Stringの質問です。前者は後者の記述の略として解釈され、
前者と後者の振る舞いは等しいものでしょうか?
String s = "1";
String s = new String("1");

761:デフォルトの名無しさん
08/02/05 04:55:06
ちがいます

762:デフォルトの名無しさん
08/02/05 05:12:42
カノニカライゼーション
URLリンク(www.nextindex.net)

763:デフォルトの名無しさん
08/02/05 05:26:33
>>762
ありがとうございます。
普通は
String s = new String("1");
s = "6";
だと思いますが、
String s = new String("1");
s = new String("6");
こうしてもよいのでしょうか?

764:デフォルトの名無しさん
08/02/05 05:28:52
すみません
jarファイルをダブルクリックするとラプラスが起動して解凍してしまいます
拡張子を何に関連づけすれば解決するでしょうか

765:デフォルトの名無しさん
08/02/05 05:53:29
javaw

766:デフォルトの名無しさん
08/02/05 08:12:02
通常は new String("")は使用しない。

767:デフォルトの名無しさん
08/02/05 12:04:47
new String(".....") は使わないように。
Stringは不変オブジェクトだから、無駄なインスタンスができるだけ。
"...." だけでよい。

768:デフォルトの名無しさん
08/02/05 12:08:00
SimpleDateFormat のスレッドセーフ化されたものとして
FastDateFormat(format() のみ) がありますが、
parse() に関しては jakarta の DateUtils.parseDate() を
使用すればスレッドセーフになるんでしょうか?


769:デフォルトの名無しさん
08/02/05 12:39:48
Stringは参照先で弄っても元が破壊されないけど、StringBufferは壊れるからちょっとややこしい。

770:デフォルトの名無しさん
08/02/05 12:43:51
>768
メソッド内でSimpleDateFormatのインスタンスを生成してparseすれば済む話だろ

771:デフォルトの名無しさん
08/02/05 12:54:08
>>769
それは設計の問題で StringBuffer の問題ではないと思う。
一応、StringBuffer は同期化されてるので、「壊れる」ことはない。
意図しない結果をもたらす事はあるとしても。

772:デフォルトの名無しさん
08/02/05 12:58:37
>>770
SimpleDateFormatって複数インスタンス作っても
内部で同一オブジェクトを使いまわすのでスレッドセーフじゃないって話だったような。

773:デフォルトの名無しさん
08/02/05 12:59:09
new String()は文字コード変換ぐらいしか利用価値が無いと思え

774:デフォルトの名無しさん
08/02/05 13:02:10
>> 770
URLリンク(www.geocities.co.jp)
この辺みてるんですけど、それで解決する問題なのかどうかが
イマイチよくわからないんですよ、、、


775:デフォルトの名無しさん
08/02/05 13:07:49
SimpleDateFormatってスレッドセーフじゃないの?
Servletで使いまくってるけどやばい?

776:デフォルトの名無しさん
08/02/05 13:31:40
>>775
参照を他のスレッドに晒さなければ大丈夫。
staticで持ってたりしたら危ない。

777:デフォルトの名無しさん
08/02/05 13:40:50
>> 776

つまり、
>> 774 にある
>SunのBug Paradeを、"+SimpleDateFormat +thread"で検索してもらうと
>すぐわかるように、SimpleDateFormatクラスは、
>複数のインスタンスで同じオブジェクトを共有して持っており、
>スレッドセーフではありません。

という記述が間違いなんでしょうか?
複数インスタンスと言ってる時点で static では無いと思うんですが。


778:デフォルトの名無しさん
08/02/05 13:45:10
SimpleDateFormatが内部でstaticなデータを保持してんだろ?
それくらいわかれカス

779:775
08/02/05 13:52:22
ということはやばいということですね。
どうしよう

780:775
08/02/05 13:55:30
どなたかスレッドセーフな
SimpleDateFormat
を作ってくれませんか?

781:デフォルトの名無しさん
08/02/05 13:57:01
synchronized使えカス

782:デフォルトの名無しさん
08/02/05 13:59:43
synchronized (SimpleDateFormat.class) {
  // SimpleDateFormatを使うコード
}

こうすれば中でstaticなデータ持ってようと、
同時に読み書きされることはない・・・はず。

マルチスレッドよぅわからん。

783:775
08/02/05 14:09:24
FastDateFormatに置き換えようかと思いますが

FastDateFormat hms = FastDateFormat.getInstance("HH:mm:ss");
FastDateFormat ymd = FastDateFormat.getInstance("yyyy/MM/dd");

hms.format(....
ymd.format(....

こういうコードだとどっちみちダメなのでしょうか



784:デフォルトの名無しさん
08/02/05 14:14:16
なにがどうダメなんだ?

785:デフォルトの名無しさん
08/02/05 14:16:05
つうかローカル変数で使うのに何か具体的な不具合でも出てるわけ?
マルチスレッドで使わなきゃ良いだけじゃん。

786:775
08/02/05 14:16:35
getInstanceでもnewのようにまったく別のインスタンスを作って
くれるのでしょうか?


787:デフォルトの名無しさん
08/02/05 14:18:03
とりあえず、マルチスレッドの勉強を一からやり直せ。
URLリンク(www.amazon.co.jp)

788:デフォルトの名無しさん
08/02/05 14:21:42
>>785
ローカル変数かどうかは問題じゃない。
インスタンスへのアクセスが閉じているかどうかだ。
>>783
おまえはスレッドセーフの意味が分かってなさそうだから。
まずはシングルスレッドで頑張れ。

789:デフォルトの名無しさん
08/02/05 14:23:38
つうかちょっとまて。ソース見たが SimpleDateFormat に関してはスレッドセーフでないことと
内部で static なオブジェクト使ってることとは関係ない。複数インスタンスで共有してるのは
ロケールごとの静的なリソースだ。だから >>777 で引用部分の表現は明らかにおかしい。

790:デフォルトの名無しさん
08/02/05 14:25:11
>>788
ローカル変数ってのは表現間違えたがマルチスレッドで意味ぐらい汲めよ。

791:775
08/02/05 14:26:55
ではサーブレットでSimpleDateFormatをローカル変数で
都度newしているなら問題ないってことですね?

792:デフォルトの名無しさん
08/02/05 14:29:51
>>791
そのローカル変数が他スレッドに漏れてなければ、ね

793:775
08/02/05 14:31:44
>>792
それは大丈夫です。漏れていません。

794:デフォルトの名無しさん
08/02/05 14:32:53
>>791
そういうこと。スレッドごとに別インスタンスで使っていれば問題ない。
でなければ JSTL の日付フォーマットも使えない。
「処理中で不整合」 の内部状態を持つのは DocumentBuilder、Transformer、XPath、Matcher なんかも同じ。

795:デフォルトの名無しさん
08/02/05 14:44:42
>>794
そこで ThreadLocal の出番だな

796:デフォルトの名無しさん
08/02/05 14:57:04
また来ますた。お世話になっておりますw

数字を入力してください: 120←入力

と入力された数字を "1" "2" "0" と分けて取り出す方法を教えてください。
宜しくお願いしますm(_ _)m

797:デフォルトの名無しさん
08/02/05 15:05:38
toCharArrayでもcharAtでも好きなほうをどうぞ。

798:デフォルトの名無しさん
08/02/05 15:08:17
メソッド呼び出しについて勉強しているのですが
行き詰ってしまってしましました。

メソッド名:getProfile
引数: String name , int age
処理:「○○さんは△歳です」という文字列を返す
戻り値:String

このソースの書き方を教えてください。
よろしくお願い致します。

799:デフォルトの名無しさん
08/02/05 15:08:55
宿題スレに池

800:デフォルトの名無しさん
08/02/05 15:10:24
return String.format("%sさんは%d歳です", name, age);

801:デフォルトの名無しさん
08/02/05 15:10:29
>>797
ありがとうございますw
もう一つすみません。
入力された数字intで取り出したいのですが、charAtでもintを取り出せるのでしょうか?

802:デフォルトの名無しさん
08/02/05 15:12:18
変換くらい自分でやれ。
Characterクラスのjavadocをみるよろし。

803:デフォルトの名無しさん
08/02/05 15:19:10
そういえば String#format() のフォーマットに対する、解析済みで再利用可能な
クラスがないようなのが気になってたんだけど、これって毎度 String.format()
しなきゃいけないのかな?

804:デフォルトの名無しさん
08/02/05 15:27:31
>>802
あ、そうか変換すれば良いんですね。
ありがとうございます。

805:デフォルトの名無しさん
08/02/05 15:27:56
>>803
ちょっと何言ってるかわからない。
解析済みで再利用可能って・・・戻り値のStringを保持しとけばいいじゃん、
とかそういうことじゃなくて?

806:デフォルトの名無しさん
08/02/05 15:32:03
>>803
String.format の内部は、return new Formatter().format(String, Object...).toString()
Formatter 内部でキャッシュできそうな部分もあるが、private クラスの配列になってるし。
まぁ強いてキャッシュにするなら、Formatter のインスタンス辺りかな

807:デフォルトの名無しさん
08/02/05 15:34:25
>>803
java.util.regex.Pattern みたいなものを期待してるなら、ないね。

java.util.Formatter は出力先を持ってるだけで、
書式文字列を固定で持ってるわけじゃないし。

808:806
08/02/05 15:41:29
自己レス。自分で書いておいてなんだが、
Formatterの生成時には出力先を用意するだけなので、キャッシュの意味なし。
しかも、toString時に出力先をクリアするわけでもないので、再利用自体も不可に近い。

809:デフォルトの名無しさん
08/02/05 15:51:38
やっぱりそうか、俺の勘違いとかでないならまぁいいや。
Logging API の Formatter とか膨大な呼び出しされそうなところで使われそうなものだから
なんかもったいないなぁと思っただけで。

810:デフォルトの名無しさん
08/02/05 15:54:55
Jakarta Lucene って Perl が必要っぽいけど、これって Pure Java じゃないの?
それとも日本語用分かち書きの sen とか言うのが使ってるの?

811:デフォルトの名無しさん
08/02/05 15:57:19
3日前から初めてプログラミング、JAVAの勉強を始めた者です。
今読んでいる「やさしいJava 第3版」って本の練習問題なのですが
16進数を使って、6、20、13を画面に出力しろという問題があります。

答えを見ると

public static void main (String args[])
{
System.out.println(0x6);
System.out.println(0x14); ←
System.out.println(0xD);
}

と書いてありました。

←をつけた行の、(0x14)を(0xE)として間違ったのですが、
なぜ16進数でA~Fで表される数の14がEでは
間違い・エラーになってしまうのかわからないです。

試しにFなどを入れて出力などしましたが、Eだけエラーになってしまいます。

わかる方教えてください。。

812:デフォルトの名無しさん
08/02/05 15:59:35
セミコロンがないとか、そういうオチ?
とりあえず、どんなエラーが出るんだ?

813:デフォルトの名無しさん
08/02/05 16:01:30
>>811
0x14は0xが頭についてるので、10進数じゃなくて16進数として解釈される。
16進数の0x14を10進数になおすと20になる。

10進数の14が必要なら0xを頭につけちゃだめ。

814:デフォルトの名無しさん
08/02/05 16:05:20
>>811
0x14 を 0xE と間違えた後、14 にして、さらに E としたところでエラーが出たに1票。

815:デフォルトの名無しさん
08/02/05 16:10:40
14は16進数でE、20は16進数で14・・・
なるほど、814が正解かもしれない。
なんか16進数自体わかってなさそうだ。

816:811
08/02/05 16:12:27
ありがとうございます。
(0xE)ではじめに書いたら

Exception in thread "main" java lang.NoClassDefFoundError

といった表示が出てしまいました
>>811に書いたようなテキストの答えを見て
0x14にしたらちゃんと表示されます。

まだ頭がごっちゃでわかってません。。すみません。


817:811
08/02/05 16:14:24
あ、わかりましたorz

ありがとうございますorz

818:デフォルトの名無しさん
08/02/05 16:18:20
で、理由はなんだったんだ?
エラーを見るに、何か他のクラスを実行しようとしたみたいだけど。

819:デフォルトの名無しさん
08/02/05 16:26:26
NoClassDefFoundErrorなら typoかなんかでしょ。たぶん。

820:デフォルトの名無しさん
08/02/05 17:40:13
また、やさしいjavaか

821:デフォルトの名無しさん
08/02/05 19:04:58
最初に読む本でずいぶん変ってくるよね
実践的な本で勉強した方が後々いいと思うんだけど

822:デフォルトの名無しさん
08/02/05 21:32:02
仕事で使うのか趣味なのかでも違ってくるしね
趣味なら
自分だけのメーラー作成を通して学ぶ
EclipseによるJava

とかを打ち込みながら実行してWebで分からない所を調べる
とかだと面白く学べる。

仕事だとフレームワークが絡んでくるから個々のフレームワーク・言語の入門本がいいかと思う。

823:デフォルトの名無しさん
08/02/05 21:41:03
1.4.2のjavaにJDK6のAPIを追加してみた。
動かないんだけどそれだけじゃ意味ない?

824:デフォルトの名無しさん
08/02/05 21:58:34
初級本ならHeadFirstがおすすめ。
超初心者ならわかりずらいかもしれんがまともなこと書いてある。
SJC-Pとかうけるのにもこの本読んどくとかなり試験勉強の助けになる。

825:デフォルトの名無しさん
08/02/05 22:12:06
でも本の厚さと値段で尻込みしちゃうのが初心者

826:デフォルトの名無しさん
08/02/05 22:30:42
あの厚さは普通だと思うが、分厚いのはオライリーのSwing本あたりだろ。

827:デフォルトの名無しさん
08/02/05 22:37:11
分厚いのは割れてかなわん

828:デフォルトの名無しさん
08/02/05 22:46:30
また宣伝厨かよ

829:デフォルトの名無しさん
08/02/05 22:48:40
>>823
何がしたいんだ?
target が 1.6 のクラスファイルは、どう頑張っても1.4のJVMじゃ動かんよ。

830:デフォルトの名無しさん
08/02/05 23:26:01
URLリンク(up2.viploader.net)

831:デフォルトの名無しさん
08/02/05 23:28:57
かわいいこ多いな

832:デフォルトの名無しさん
08/02/05 23:32:12
>>829
じゃあ無理みたいだorz
無視でよろしこ

833:デフォルトの名無しさん
08/02/06 01:52:01
デスクトップにあるフォルダaをカレンとにしてMS-DOSプロンプトを起動しました。
aの中に*.classがあります。
jarを作りたいです。
>jar cv
エラーでした。
jar.exeの使い方を教えてください。
普通のアーカイバでzip圧縮して拡張子変更したものではだめですか?

834:デフォルトの名無しさん
08/02/06 02:04:32
>>833
JDKのドキュメントに「ツールとユーティリティ」の項目があり、
そこにjarのマニュアルもある。
というか、jar cvでヘルプが出て使用例も表示されるだろ?

835:デフォルトの名無しさん
08/02/06 02:16:08
>>834
jar でヘルプが出るけどヘルプが糞だ。
例文が2つほど出るけど例文は少なとも30ぐらいは出してくれないと理解不能。
たぶん834もjar使えないんじゃねーの?ヘルプが糞だから。

836:デフォルトの名無しさん
08/02/06 02:20:50
くそくそうるさいなw
ドキュメントの場所を教えてるんだから分からなければそっちを読め
ってか普通はオプションの意味さえとれれば使用例は要らない

837:デフォルトの名無しさん
08/02/06 02:38:15
>>836
無理しないでえらい人の回答を待てよ。
少なくとも漏れよりえらい人以外にはレスしてほしくない。
あえて書くなら漏れも知らないのでえらい人教えてください、だろ。

838:デフォルトの名無しさん
08/02/06 02:39:06
アニョハセヨ

839:デフォルトの名無しさん
08/02/06 02:44:05
スーゴハセヨ

840:デフォルトの名無しさん
08/02/06 02:54:43
グッテンターク

841:デフォルトの名無しさん
08/02/06 03:21:13
漏れとか…何時振りだろう、見たの

842:デフォルトの名無しさん
08/02/06 08:58:49
URLリンク(journal.mycom.co.jp)
>かつての電化製品がそうだったように、日本人の作るサービスはデザインやユーザビリティの面で優れていると感じている。

Nationalのオーブンレンジを触ったことがないんだろうか。
最低3つの操作手順を踏まないと、食パン1枚焼けない。余計な機能詰め込みすぎ。

「(多くの)日本人(のみ)にとって使いやすい」だけであり、それを「優れている」とは言わない。
Vista使いにくいだろ? 要は日本の家電メーカーはアレをやってる。
ご当地の人には使いやすいんだろうけどな。
それをJEITAの連中は「日本の消費者は先進的」といまだに勘違いしてる。だから国際競争で負ける。
異なるだけであって感性に「先進」とか「後進」はない。家が小さい日本は「後進的」か? 違うだろ。

日本の家電(PC含む)は既に世界からそっぽを向かれている。
車やカメラは熱いけどな(ただし、カメラも同じようにそっぽを向かれるのは時間の問題)。
日本発のWebアプリが普及しないのは二番煎じばかりだからだろ。

むしろそういうデザインとか下らないところに注力しているから、いつまでたっても独創性が開けない。
ふぅーなんか朝から熱くなっちまったぜ。

843:デフォルトの名無しさん
08/02/06 09:47:47
日本人にとっての使いやすさと
アメリカはじめ他国の人間にとっての使いやすさが違うだけ。

国内で高い評価を得ても世界ではそれほどでもない。

逆に使いやすさの面で国際競争力を付けようと思ったら
日本ではあまり高く評価されないかもね。



844:デフォルトの名無しさん
08/02/06 10:18:54
今のオーブンレンジって一発で閉まらないんだよな
でもあれ日本製なのかよくわからん

845:たらちゃん
08/02/06 12:52:02
System.err.println("エラー")を変数に代入する事って出来ますか?もし出来るのであればやり方教えてください。
宜しくお願いします。


846:デフォルトの名無しさん
08/02/06 12:53:16
javacのコンパイルが遅いと思うんですが
常駐するタイプありませんかね?
メモリ食うけど何回もコンパイルするなら速いよ!みたいな

847:デフォルトの名無しさん
08/02/06 12:55:03
>>845
意味がよくわからんが、代入してどうしたいんだ?
何をしたいのか書くといいかもしんない

>>846
eclipseみたいなIDEは嫌かね?

848:デフォルトの名無しさん
08/02/06 13:01:59
>847
使ってみましたけど、ちょい重かったです。
コンパイルするたびにjavac.exeを読み込むのが
無駄だよなぁって思ってたんですが。

新しいマシン買えよ、ってことなんでしょうけど
キャッシュが沢山載ってるやつ買えばいいのかな。


849:デフォルトの名無しさん
08/02/06 13:09:34
phpからjavaへの乗り換えを検討しているのですが
javaでphpのsymfonyに一番近めなフレームワークってどれでしょう?


850:デフォルトの名無しさん
08/02/06 13:31:46
Method println = System.err.getClass().getMethod(...);

851:デフォルトの名無しさん
08/02/06 19:12:16
>>848
…javac.exe を読み込むのが遅いならRAMディスクは如何でしょう。
可能性のある要因は幾つも挙げられますが、何れにしろ、
ハードウェアかOSの問題で、Javaだから、という問題では無いように思えます。

852:デフォルトの名無しさん
08/02/06 19:51:33
10万も出せばDualCoreでメモリ2Gのマシン、ディスプレイ付で買えるだろうよ
Eclipseが重いってのは何時の話だ

853:デフォルトの名無しさん
08/02/06 20:29:37
ちょっと自作PC板に来てもらおうか・・・

854:846
08/02/06 21:21:44
自己解決しました。
空きメモリを仮想ドライブにするソフトなんかあるのね、今は。
いや、ほんとに
「RAMディスクなんて言葉聞いたの98note以来だぜ、
確かに滅茶っ速だったけどなァァァァ」
とか思いましたけど、皆さんありがとうございました。

855:デフォルトの名無しさん
08/02/06 23:04:34
それ、自己解決か・・・?

856:デフォルトの名無しさん
08/02/06 23:24:16
JDKの環境変数設定などの後はOSの再起動をすると本で読んだのですが、
どうも環境変数の設定をした時は
そのままで反映されている時とOS再起動しないと反映されない時があるみたいです。
OSの再起動以外に何か関係するものがあるんでしょうか

857:デフォルトの名無しさん
08/02/06 23:36:18
>>856
そんな糞本捨ててしまえ。環境変数は基本的に親プロセスから引き継がれるので、環境変数を設定したプロセスから起動すれば即座に反映されるが、読み直しはしないので既に動いている他のプロセスには影響しない。
Windowsの場合なら、
・コマンドプロンプト/バッチファイルで環境変数を設定してそこからプログラムを起動した場合→即時反映
・システムのプロパティから環境変数を設定→設定後に起動したプロセスにのみ変更が反映。例えば設定前から動いているコマンドプロンプトからJavaプログラムを起動しても変更は反映されない。


858:856
08/02/06 23:50:23
>>857
なるほど~すごく分かりやすい説明ありがとうございます!
こういうズバリな説明聞くとwindowsに浸ってないでUNIXの勉強するべきなのかなぁって思いますね…


859:デフォルトの名無しさん
08/02/07 00:01:42
PC のピの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

860:デフォルトの名無しさん
08/02/07 00:04:13
Windows9x時代のautoexec.bat編集して再起動
みたいな記述がそのまま残ってるだけじゃないかと。

861:デフォルトの名無しさん
08/02/07 00:13:27
PCに"ピ"の字はどこにも無いと思うんだが

862:デフォルトの名無しさん
08/02/07 00:17:43
サイトに snoop アプレット仕込んでクライアントの JVM バージョン統計取ってみたんだが見る?

863:デフォルトの名無しさん
08/02/07 00:29:25
ピーシーのピの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

864:デフォルトの名無しさん
08/02/07 00:35:14
やるおかよ

865:デフォルトの名無しさん
08/02/07 03:41:13
java.util.regex.Pattern の lookingAt() って find(0) と同じという理解で良いのかな?

866:デフォルトの名無しさん
08/02/07 03:51:41
PCのパの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

867:デフォルトの名無しさん
08/02/07 03:57:20
PCに"パ"の字はどこにも無いと思うんだが

868:デフォルトの名無しさん
08/02/07 04:01:54
パトカーのパの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

869:デフォルトの名無しさん
08/02/07 04:04:43
パトカーに"パ"の字はあると思うんだが


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