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


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

☆★Java質問・相談スレッド173★★



1 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 22:35:19.67 ID:XG+QDGZC.net]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

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

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド172★★
peace.2ch.net/test/read.cgi/tech/1419490897/

698 名前:K定しないから []
[ここ壊れてます]

699 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 04:33:38.32 ID:JPuBr0K9.net]
初心者なんだけど、ArrayListとLinkedListって、addやremoveしまくりたいときはLinked使って、getしまくりたいときはArrayを使うって覚えてたんだけど、違ったの?

700 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:09:05.85 ID:GbyQSdJL.net]
>>670
間違い
ほとんど全ての場合でArrayListの方が性能が良いので、基本的にLinkedListは使わず常にArrayListを使う。
どうしてもボトルネックになってるコレクション操作の箇所がある→どうやら途中への挿入or削除が原因のようだ
→LinkedListに変えてみたら解消した
これだけでいい

701 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:13:21.03 ID:g6fbSoL/.net]
>>668
同じ操作になるから意味はあるよ
いくら実装が違うからと言って、モデリングが間違ってたら駄目だって事さ

無理やり共通化するのを良しとすると、極論的に正常動作でなくても、
インターフェースさえ付いてれば良い事になってしまう

702 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 07:24:06.99 ID:GbyQSdJL.net]
単純に、利用者のミスを生みやすい設計はよくないって話だよな
Mapが渡ってきたらgetは直感的にO(1)、遅くてもO(log(N))くらいだと期待するだろ?
Map#getよりも一見処理の軽そうなList#getがO(N)になりうるのは直感に反する

703 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 12:13:40.31 ID:RzAd5Uvp.net]
LinkedListってListIterator使わないなら途中への挿入削除は結局検索のせいでO(N)なので
オーダー的にArrayListより速いといえるのは先頭への追加削除だけという間抜けな設計なんだよね
ListIteratorはリストが変更されると無効になるからカーソルとして保持するのはやりたくないし
ListIteratorのアイデアに固執せず単純にListNodeを公開してくれるだけでよかったのにな

704 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:50:34.41 ID:2KbtQEek.net]
初歩的なことですいません。
import javax.bluetooth.LocalDevice;
これをeclipseで記述すると赤線でエラーになるのですが
何が足りなくてどう記述すればよいのでしょうか?

705 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:14:27.92 ID:2KbtQEek.net]
自己解決しました。

706 名前:デフォルトの名無しさん [2015/05/29(金) 14:16:56.43 ID:AQuaH7cx.net]
synchronizeについて教えてください。下記のコードでメソッドにsynchronizedを行っていますが、
変数mapは排他がかかるでしょうか?それともメソッドにsynchronizedを行ってもダメで変数mapそのものにsynchronizedするべきでしょうか?

※前提条件
 ・getData()は外部のスレッドから一定周期で呼ばれる。
 ・setData()は内部のスレッド(SubThread)から一定周期で呼ばれる。

public class Common{
private HashMap<String,String> map = new HashMap<String,String>();

public static void main(String args[]){
SubThread sub = new SubThread();
}

public synchronized HashMap<String,String> getData() {
return map;
}

private synchronized void setData(String data1, String data2) {
map.put(data1,data2);
}

private class SubThread extends Thread{
String strData1 = "Data1";
String strData2 = "Data2";

public void run(){
setData(strData1,strData2);
}
}
}



707 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:36:16.58 ID:e13wdj/j.net]
>>672
そういうことじゃない。
実装ごとにわけるのなら、抽象化はされず、1実装に1インタフェースとなる。

708 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 14:46:16.67 ID:GbyQSdJL.net]
>>677
getDataがmapを晒すと外から自由に排他なしでアクセスできてしまうからダメ
排他云々以前にコレクションをクラス外にそのまま出すのはpublicフィールド晒してるようなもんだから、
getDataは引数にキーを受け取って値を返す仕様にするべき
それならそのコードの排他は正しく機能する

709 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 16:01:19.97 ID:b5ZezYht.net]
Java初心者です。
jarファイ

710 名前:汲フexe化がうまく行きませんのでお知恵を拝借したいです。

exewrapでjarファイルをexe化しようとすると、
"Native executable java application wrapper.は動作を停止しました"とダイアログが表示されて途中で止まってしまいます。
jsmoothも試してみたのですが、"Saving exe..."のステップから進まなくなります。
jarファイル単体では普通に動作するのですが、これはjarの中身になにか問題があるのでしょうか?

OSはVista、Javaはバージョン8、notepad++で書いております。
[]
[ここ壊れてます]

711 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:11:51.79 ID:RfzJ1xHR.net]
iniファイル解析クラス作ってみました。アドバイスお願いします。
notepad.cc/share/dObqHTeIJ8

712 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:20:52.35 ID:/O9WcZmT.net]
>>681
せっかく正規表現使ってるんだからキャプチャ使えばいい

713 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 20:52:10.88 ID:RfzJ1xHR.net]
キャプチャって何ですか?

714 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:02:39.74 ID:qddcoV7p.net]
そもそもパフォーマンスを保証したいならListでアップキャストせず、ArrayListで受け取ればいいだけの話
そのうちObject型にも文句付けそう

715 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:41:30.09 ID:vNf0wM8U.net]
>>681
iniフィアルなら、セクションに対応する必要があるよ

716 名前: ◆QZaw55cn4c mailto:sage [2015/05/29(金) 21:41:32.94 ID:bTG2Z02M.net]
>>667
C++でイテレータパターンの演習にとトライしてみたが、なかなかうまく形にならない‥



717 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 21:43:27.41 ID:bTG2Z02M.net]
連続領域を必要とする ArrayList は嫌われものだと思っていたのだが、ここでは一択なんだね
今まで間違った感覚を持っていたのかな

718 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 00:02:38.75 ID:IDV5NAFV.net]
ArrayListの全要素を取得するのには、forか簡易forかイテレータを使う方法があると覚えたのですが、実際の場面ではどれを使うのがいいのですか?

719 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 00:38:07.46 ID:86ur7FpL.net]
foreach

720 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 01:43:50.24 ID:+/L2wu74.net]
>>678
どう読み間違えたらそうなるんだよ

例えばインターフェースに期待される要件があるとして、
実装はそれを満たさなくても、言語だけの制限では型にあわせる事だけはできる
けど、それは設計的には間違いでしょ

721 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 07:18:40.89 ID:y5cl7Y1T.net]
>>687
たかが要素数×8バイトの配列が問題になるような状況なら
LinkedListのメモリ使用量の多さやトラバースの遅さや
小さいオブジェクトが大量発生することによるGCへの悪影響の方が先に問題になるだろ

722 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 10:34:51.84 ID:rQC0QNS1.net]
>>690
勝手に期待してるの?

723 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 11:07:57.30 ID:E4+c+dv0.net]
メソッドの戻り値に複数の値を定義したくて
class Ref<T>{
private T val=null;
public void set(T t){val=t;}
public T get(){return val;}
}
このようなクラスを作りました。
メソッドの定義はこんな感じで、intを一つ渡すとstringとobjectがrefStringとrefAnyにセットされます
public hoge(int i,Ref<String> refString,Ref<Object> refAny){}

使うときは
Ref<String> resultStr=new Ref<String>();
Ref<Object> resultObj=new Ref<Object>();
hoge(100,resultStr,resultObj);
で、
resultStr.get();resultObj.get();と値を取得します。

この様なクラスってjavaの標準クラスの中にありますでしょうか?
また、このような書き方に何か問題はありますでしょうか。
c#のref構文が便利すぎて真似したのですが、javaでは需要が少ないのでしょうか

724 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 11:49:23.42 ID:K6Aqd4ey.net]
>>6

725 名前:93
なかったはず。

自前で作るのが面倒ならジェネリクスと相性悪いけど配列使うとか、
目的外使用になっちゃうけどjava.util.concurrent.atomic.AtomicReference<V>使うとか。
[]
[ここ壊れてます]

726 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 15:14:42.98 ID:SAlWoYO0.net]
MP3の長さ取得を簡単にする方法ありませんかね?



727 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 17:34:09.91 ID:aOrY5qKq.net]
>>691
あらかじめ適切な長さがわからない状況で、再配置、再配置が繰り返されるのもどうかと思うが

728 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 17:48:26.36 ID:+/L2wu74.net]
>>692
お前さ否定のためだけにレスするのやめてくれない?
もしかしてマーカーインタフェースとか知らないのか?

729 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:57:58.78 ID:rQC0QNS1.net]
>>697
煽るだけのレスやめてくんない?

730 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 23:02:53.24 ID:+/L2wu74.net]
>>698
いやだからマーカーインタフェースとか知らないの?

731 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 00:58:56.72 ID:Tte5i/+4.net]
>>699
Listと何の関係が

732 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 00:59:41.83 ID:Tte5i/+4.net]
的外れの揚げ足取りが来るんだろうな

733 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 03:06:40.58 ID:gPOjvzR+.net]
>>701
元の人がListIteratorを生成するListじゃ、
一般的なリスト構造を期待するという流れで、こういう主張をしてるの

というかさ、なんでそう被害妄想的なの?
俺別に揚げ足取りしてないでしょ?

734 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 03:44:40.52 ID:gPOjvzR+.net]
>>700-701
勝手に同じ人として話進めるからね

>やり取りできるメッセージ(インタフェース)が一緒でも、性能が違ったら同じインタフェースにするべきでないって話?
>それ、実装が違えば性能違って当たり前なんだから、インタフェースの意味ないね。
>大きく違うからとか、主観の話かな。
これはマーカーインターフェースの存在で否定される

>実装ごとにわけるのなら、抽象化はされず、1実装に1インタフェースとなる。
こちらは実装を誤解のないよう、適切にIFに分離抽象化しろと言ってるだけで、
極端に突き詰めたインターフェースしか必要ない、という主張ではない
反論になっていないと思うよ

>Listと何の関係が
マーカーは言語機能的には名前だけで実装や仕様を縛る物
要するにパフォーマンス要件で分けてる

735 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 03:51:28.41 ID:gPOjvzR+.net]
編集途中で送信してしまった
要するに実装で分けるインターフェースを抽象化したもの
RandomAccessなどはパフォーマンス要件で分けてる

736 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 04:28:59.96 ID:Tte5i/+4.net]
>>703
自分で作れよ



737 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 04:35:01.10 ID:gPOjvzR+.net]
>>705
そうだね自分で作ってもいいね
で内容は同意できたの?

738 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 04:57:06.98 ID:y0vichKB.net]
そういうことをしたければ、インターフェースではなくテンプレートライブラリだよね

739 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 05:20:35.98 ID:gPOjvzR+.net]
>>707
できれば説明を頂きたい
Javaでの実例もあれば是非

740 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 09:05:41.55 ID:y0vichKB.net]
>>708
C++

741 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 09:08:59.44 ID:gPOjvzR+.net]
>>709
C++テンプレートは構造的サブタイピングなだけで
インターフェースはあるよ
というかその程度だとミックスインかブリッジかストラテジパタンーンで十分では

742 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 09:23:00.74 ID:gPOjvzR+.net]
語弊があったので訂正
ここで言ってるインターフェースというのは
Javaとほぼ同等な純粋仮想クラスという意味じゃなく、
テンプレートプログラミングにおいて同等な位置の型クラスというような意味です
あとパターンねパターン

743 名前:デフォルトの名無しさん [2015/05/31(日) 10:43:59.62 ID:XhIDATDmg]
下の実行例のようなプログラムを組みたいんですがエラーが出てコンパイル通りません、Arrays.sort(array);あたりが間違っている、と出ます
*/
import java.util.*;
public class q12146166122 {
 public static void main(String[] args) {
 try {
 if(args.length != 3) {
 throw new IllegalArgumentException();
 }
 int[] array = new int[args.length];
 for(int i = 0; i < array.length; ++i) {
 

744 名前:array[i] = Integer.parseInt(args[i]);
 }
 Arrays.sort(array);
 // System.out.println(Arrays.toString(array));
 System.out.printf("min=%d max=%d\n",
 array[0], array[array.length - 1]);
 } catch(NumberFormatException e) {
 System.err.println("ちゃんと整数を入力してください");
 } catch(IllegalArgumentException e) {
 System.err.println("コマンドライン引数の数は3つにしてください");
 }
 }
 }
[]
[ここ壊れてます]

745 名前:デフォルトの名無しさん [2015/05/31(日) 10:44:27.66 ID:XhIDATDmg]
>>712
 実行例
// javac q12146166122.java&&java $_:r 3 1 2
 // min=1 max=3
 // javac q12146166122.java&&java $_:r 3 1
 // コマンドライン引数の数は3つにしてください
// javac q12146166122.java&&java $_:r 3 1 2 4
 // コマンドライン引数の数は3つにしてください
// javac q12146166122.java&&java $_:r 3 1 a
 // ちゃんと整数を入力してください
// javac q12146166122.java&&java $_:r 3 1 3.4
 // ちゃんと整数を入力してください

746 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 11:24:50.71 ID:rPrQit5P.net]
学生で実務経験がなく本で勉強してるから
理屈はわかるけど存在意義がわからないものがある
インターフェースと抽象クラスって座学で勉強する分には
違いがよくわからないけど実際の案件ではどういうところで使い分けるの?
それがわからないからピンとこないのよな・・・



747 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 11:29:41.49 ID:y0vichKB.net]
>>714
たしかに使い分けや適用はわからないな‥どちらもそのままでは実体をつくれないし
純粋仮想関数のみのクラスと純粋仮想関数・実体が混在したクラスか

748 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 12:26:14.56 ID:bzJLQWqx.net]
java の場合 interface は多重継承できる
結局メモリ効率とかその辺になるんじゃない

749 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:11:26.75 ID:gPOjvzR+.net]
抽象クラスって教科書?的にはテンプレートメソッドパターンで使うけど
インターフェース作って、newの時にその部分だけ委譲したほうが良い設計な気がする
というか本当は要らないんじゃ…

750 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:25:27.97 ID:Tte5i/+4.net]
>>706
自分の設計方針に合わないからと駄々をこねるのは同意できない。

751 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:27:46.68 ID:gPOjvzR+.net]
View関連クラスなど、上書き必須のメソッドAと、
同カテゴリだが必要に応じ使用者に上書きさせたいメソッドBを、
1つのモデル(オブジェクト)に同時に入れたい

この場合インターフェースでAの実装を分けると、
Bも上書きしたい場合に煩雑になるので、抽象クラスを使うべきだろう

というか、そういう物以外で使った覚えがない

752 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:29:21.13 ID:gPOjvzR+.net]
>>718
いえ、別に変える事を強制してるわけじゃなくて、
間違ってるよねと言ってるだけですので…

753 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:46:47.12 ID:Tte5i/+4.net]
>>720
標準的なものが偏った考えのための
濫用を避けるのは間違っていない。

754 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:51:28.34 ID:gPOjvzR+.net]
>>721
先程から具体性が全く無く、おっしゃってる意味がよくわかりませんね

というかレスを真面目に読む気も、まともに反論する気もないようですし、
レスしなくていいですよ?
私は飽くまで納得できる回答が欲しいだけで、同意が欲しい訳じゃないので

755 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 15:59:44.04 ID:gPOjvzR+.net]
一応再度説明しますが、主にインターフェースには適切なモデルが必要という主張
Listも間違ってる例であり、その理由は元の主張の人がおっしゃるように、
ListIteratorとListのgetメソッドの二者で相反する性能です

756 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 16:08:17.11 ID:gPOjvzR+.net]
つか元の人の話は円満に終わってるからもう良いや…
まともな回答用意してくれないだろうし



757 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 16:29:10.77 ID:q5PmTIh8.net]
間違ってるならJavaから削除されてるだろ
Javaにあるということは間違ってないということだ

758 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 18:10:08.48 ID:Tte5i/+4.net]
>>722
理解できない奴に設計どうこう言われるとはw

759 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 18:11:54.87 ID:0vVDnOAL.net]
>>725
・Vector, Hashtable
・java.util.Date
・ジェネリクス
間違ったままになってる例なんていくらでもあるぞ

760 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 20:28:04 ]
[ここ壊れてます]

761 名前:.67 ID:G3SfhU6W.net mailto: Apache HttpComponentsについてなんだけど、全機能の使い方のドキュメントってのは基本的に無いの?

例えばhttpmime-4.4.1.jarについて、ソースコードを落としてパッケージ名でApache HttpComponentsをgrepしてもどこからもimportされていない
じゃあこれはどういう時に使うんだ?とググったらこのページがあって http://qiita.com/tomoima525/items/8e77c4cfe51339974545
処理の流れを追いかけてみたら、httpcore-4.4.1.jarの中にあるHttpEntityクラスを継承したクラスを返しているらしい。
つまりHttpEntityクラスを作るのをサポートしてくれるクラスだと理解したんだけど、この情報はどこから調べればいいのかが分からない。

公式のチュートリアルを見ても https://hc.apache.org/httpcomponents-core-ga/tutorial/html/ https://hc.apache.org/httpcomponents-client-ga/tutorial/html/ 一切の記載が無い(MultipartEntityBuilder でgrepした)
javadocを見ても何も書いてないし、これはソースコードを読んで自力で理解するのが当然という事でしょうか?
[]
[ここ壊れてます]

762 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 21:27:34.05 ID:qPV1YjTV.net]
>>728
httpについて勉強したら

763 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 23:24:03.26 ID:PJ1dRWj9.net]
プロトコルと通信そのものについて理解すればよい
最近のブラウザは通信内容をログで見られるからそれを見ると理解が早まるかも

764 名前:>>690 mailto:sage [2015/06/01(月) 11:51:32.31 ID:f2uABRUu.net]
MP3の長さを取得する方法を教えて下さい。

765 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 14:51:25.42 ID:TPGCWh32.net]
>>731
何で
「Java mp3 長さ」
とかで検索できないの?

766 名前:>>690 mailto:sage [2015/06/01(月) 16:14:38.08 ID:f2uABRUu.net]
>>732
検索したけど分かりませんでした。



767 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:22:51.05 ID:UMivpJmj.net]
>>733
検索語句をいろいろかえてアプローチしてみよう
java mp3 time では出てきたよ

768 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 17:19:02.91 ID:kvym0ZUW.net]
java mp3 再生時間 取得でも一発だった

769 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 20:36:41.31 ID:vvPoWr//.net]
もしかしたらバイト配列の長さかもしれない

770 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 21:40:22.35 ID:11G427ei.net]
常に3かも知れない。

771 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 21:45:29.00 ID:vlY8tlqp.net]
>>737
つまり "mp3".length() ということか

772 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 09:24:07.48 ID:YqHMc328.net]
例外の勉強を始めました
NullPointerExceptionをわざと発生させるために

String s = null;
System.out.println(s);

と書きましたが、実行結果は

null

と表示されてしまいました。
今度は

String s = null;
System.out.println(s.toString());

と書くと、ちゃんとNullPointerExceptionと表示されました。
System.out.println(s);で表示されたnullは、"null"という文字列が表示されたんですか?
何故toString()を付けないとNullPointerExceptionは発生しないんですか?

773 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 09:31:15.60 ID:TiVQHj6x.net]
>>739 ガッ
上の場合 System.out.printlnの中でnullチェックしていて、nullの場合"null"を出力している。
下の場合 s.toString()を呼び出した段階でぬるぽが発生している。

774 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 10:09:05.64 ID:fY8oKJUs.net]
>>740
ありがとうございます
引数に指定するだけなら問題ないけど、nullが入っている参照型変数のメソッドを呼び出そうとするとまずいんですね

775 名前:デフォルトの名無しさん [2015/06/02(火) 14:18:28.86 ID:ielQg8IH.net]
>>741
いや、そのメソッドがnullのときに文字列に変換するロジックが入っているだけ。

Javaの標準ライブラリの仕様かどうかは知らん。

776 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 14:47:38.88 ID:TCITNRhQ.net]
>>741
メソッドの



777 名前:引数にnullを許すかはメソッド毎に違う
多くのメソッドはnullが入るとヌルポになるし、ならないものはnullが入ったときの振る舞いの規定が書かれている
[]
[ここ壊れてます]

778 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 16:11:44.60 ID:OqEOh02c.net]
いやまあ言いたい事は合ってる
nullそのものに罪はないから引数で渡すのは問題ない
問題あるのはその引数がnullである事をチェックせずにメソッド呼び出しとかしようとした場合
nullってのは実態が無い事を意味するから実態の無い物のメソッドなんて呼び出せないからね

779 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 20:04:20.98 ID:33LBbjfE.net]
ところがC++では null でメソッドが呼び出せるのであった‥

780 名前:デフォルトの名無しさん [2015/06/02(火) 20:05:47.28 ID:FpmGmufg.net]
インターフェイスと抽象クラスの違いが分からん
誰か教えて

781 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 20:51:25.92 ID:0JJIk5xr.net]
>>744
チェックして throw new NullPointerException することもあるけど。
IllegalArgumentか何かの方が適切という意見はあるだろう。

782 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 20:52:35.67 ID:0JJIk5xr.net]
>>746
インタフェース 設計図
抽象クラス 作りかけ

783 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 20:55:09.79 ID:YQCK7f5I.net]
>>746
インターフェースとクラス

784 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 21:58:07.96 ID:f+1+rqjd.net]
>>746
インターフェース:「ある特定のメソッド名・引数を持つメソッドを持っていること」しか保証できない。多重継承可能
抽象クラス:new出来ないことを除けば普通のクラスとほぼ同じ。メソッドを実装することができるしフィールドも持つことができる。クラスなので多重継承はできない

たとえば、呼び出すと標準出力に"a"と表示するprintA()メソッドをインターフェースと抽象クラスに持たせるとすると、
インターフェースでは本当に"a"が表示されるかどうかは実装者任せにするのしかないのに対して、
抽象クラスなら"a"を表示するような実装を書いてfinalを付ければ"a"を表示することを保証できる。
機能拡張を許したいならfinalを付けることはできなくなるから、結局実装者任せになってしまうが

785 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 00:23:54.45 ID:QMuypoEX.net]
よくわかんないなら常にインターフェースでいいよ
オーバーライドは一切使わなくていい
抽象クラスはクラスの実装を楽にするためのテンプレートみたいなもんと思えばいい
デザイン的にはインターフェイスほど重要なものではない

786 名前:デフォルトの名無しさん [2015/06/03(水) 00:54:53.65 ID:JJjq3/2D.net]
>>748
>>749
>>750
>>751
サンクス
ID変わったけど739



787 名前:デフォルトの名無しさん [2015/06/03(水) 18:31:40.92 ID:Ak9FiYn5.net]
springを勉強しようと思います。
spring Frameworkの本を買いたいと思うのですが
SpringFramework4プログラミング入門
Spring MVC/Roo プログラミング入門
どちらがいいでしょうか?
教えてください。
よろしくお願いします。

788 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 21:50:52.69 ID:t5oyJCvB.net]
s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi

phpの宿題よろしくお願いしますm(__)m

789 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 21:56:04.18 ID:irHiNqHV.net]
めちゃくちゃ

790 名前:!ichigo mailto:sage [2015/06/04(木) 00:06:02.65 ID:6MSMPfiJ.net]
>>754
C/C++の掲示板に投げた上にマルチポストってことか
お前が行ってる学校は義務教育じゃないだろうからわかんないなら辞めればいい
親の金をドブに捨てる必要もないだろう

791 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 00:06:34.54 ID:6MSMPfiJ.net]
名前欄ミスって恥ずかしい

792 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 20:28:54.64 ID:Uxwo/UOa.net]
正規表現で
その行が「文字列=文字列」かを調べるのは
[.[^=]]+=[.[^=]]*
であっていますか?

793 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 20:33:42.61 ID:xuWz3vjX.net]
^[^=]+=[^=]+$

794 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 20:41:11.26 ID:Uxwo/UOa.net]
>>759
「文字列=」もtrueにしたいので
^[^=]+=[^=]*$
でいいです

795 名前:ゥね? []
[ここ壊れてます]

796 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 22:25:03.04 ID:++ODO9QU.net]
初心者の俺には悪ふざけ顔文字にしか見えない



797 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 22:37:26.51 ID:eZ6vZki5.net]
久しぶりにコマンドラインからJavaをやろうとしたら
うまくいかないので、以下のHello.javaを作って
コンパイル、実行すると以下の通りでした。
2号機のほうにもJavaを入れ(SE8-45)
コンパイル、実行するとうまくいきます。
思い当たるのは1号機の方にNetBeansと
GlassFishを入れたことです。
NetBeansなどが入ったマシンで
cmd.exeから実行するにはどうすればいいですか。
----------------------------
Hello.java
class Hello{
public static void main(String[] args) {
System.out.println("Hello");
}}

798 名前:デフォルトの名無しさん mailto:sage [2015/06/04(木) 22:41:35.02 ID:eZ6vZki5.net]
以下、1号機(Windows7-pro)でのコンパイル、実行です。
C:\dev\java\study>javac Hello.java

C:\dev\java\study>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 10D2-49BD です

C:\dev\java\study のディレクトリ

2015/06/04 22:17 <DIR> .
2015/06/04 22:17 <DIR> ..
2015/06/04 22:17 401 Hello.class
2015/06/04 22:07 226 Hello.java
6 個のファイル 1,945 バイト
2 個のディレクトリ 335,030,054,912 バイトの空き領域

C:\dev\java\study>java Hello
エラー: メイン・クラスHelloが見つからなかったかロードできませんでした

C:\dev\java\study>






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

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

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