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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 23:09:24.14 ID:sB1GrBUA.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質問・相談スレッド174★★ [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1435295532/

862 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 16:45:19.32 ID:+KwJNg6k.net]
推奨のコーディング規約見るとか
エフェクティブjava読むとか

863 名前:デフォルトの名無しさん [2016/01/16(土) 17:34:21.35 ID:R82nwwqc.net]
>>850
デザインパターンの本がいいかも。

たいていプログラミングの入門書のサンプルはクソだよな。

864 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 17:38:54.25 ID:bfx9cpPa.net]
デザインパターンは役に立たない

865 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 20:40:26.42 ID:CsTfXFKv.net]
命名規則の良い本ある?

866 名前:デフォルトの名無しさん mailto:sage [2016/01/16(土) 22:01:30.37 ID:+KwJNg6k.net]
オラクルのコーディング規約
www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html
Googleのコーディング規約
https://google.github.io/styleguide/javaguide.html
命名規則とかはこれ守ってれば間違いない

867 名前:デフォルトの名無しさん [2016/01/17(日) 01:04:58.28 ID:Hz/zelCD.net]
>>859
実はまったく守られていない規約w

868 名前:デフォルトの名無しさん [2016/01/17(日) 01:23:56.95 ID:fAjnxN7u.net]
精度落ちに関する質問なんですが
double型にdouble型のリテラルを代入するだけの場合は
もちろんですが精度は落ちなくて
double型とdouble型同士の計算では精度が落ちる場合がある
という認識で宜しいでしょうか?

869 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 01:29:24.51 ID:Jnt5hNCi.net]
>>861
final double d = 0.9;

これの誤差が無いわけないだろう

870 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 01:31:07.68 ID:fAjnxN7u.net]
>>862
finalじゃなければ、代入時点では精度は落ちないということでしょうか?



871 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 02:38:23.40 ID:Fc/iK1Xw.net]
>>863
2進数で 0.9 はどう表わされるか考えてみ?

872 名前:デフォルトの名無しさん [2016/01/17(日) 02:53:01.68 ID:/48Or1RK.net]
0.1001。
誤差ゼロ。

873 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:03:51.08 ID:Fc/iK1Xw.net]
>>865
小学生からやり直せ

874 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:14:02.10 ID:sTT4KsYO.net]
0.11100110以下110が循環?

875 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:15:33.73 ID:Fc/iK1Xw.net]
>>867
お前は中学生くらいからやり直せ

876 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:17:50.08 ID:sTT4KsYO.net]
違った1100が循環だった・・・・・

877 名前:デフォルトの名無しさん [2016/01/17(日) 03:18:43.98 ID:/48Or1RK.net]
Javaの現実を見た。

878 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:18:52.69 ID:sTT4KsYO.net]
結局BigDecimal使えってことなの?

879 名前:デフォルトの名無しさん [2016/01/17(日) 03:19:35.97 ID:fAjnxN7u.net]
doubleに代入してからすぐtoStringしても誤差はないですよね?
ということはdouble代入時には誤差は起きないってこと?

880 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:21:15.13 ID:sTT4KsYO.net]
え、そうなの?
doubleに入れた時点で誤差出ると思ってた・・・・・・・・



881 名前:デフォルトの名無しさん [2016/01/17(日) 03:23:46.70 ID:/48Or1RK.net]
それはオプティマイズされてるんじゃないの。

882 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:26:07.28 ID:sTT4KsYO.net]
すみません。
サーブレットの勉強してるんですが、MVCモデルってもう古いんですか?
スッキリ分かるServlet+JSP入門読んでるんですが、無駄ですかね・・・

883 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:29:42.70 ID:fAjnxN7u.net]
>>875
基本を学ぶにはMVCで十分でしょ
そこから発展して別のモデルを覚えていく形でいいと思うよ

884 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:40:30.34 ID:sTT4KsYO.net]
>>876
一応読了して、曖昧な部分を確認しながら通販サイトモドキを作ってるんですが、
じゃあ次は何をしようかとググってたら「MVCは古い」っていう事に気付いたんです。
React+Fluxというのが新しいようなんですが、これも結局ToDoMVCって書いてあるし、大まかな方向性がよく掴めないです。
ttp://yutapon.hatenablog.com/entry/2015/04/27/150000

885 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:41:42.08 ID:Fc/iK1Xw.net]
内部表現は2進数なんだから、リテラルの時点で誤差は当然ある

System.out.println(new BigDecimal(0.1));

ってやればある程度正確な値がわかる

886 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 03:55:48.10 ID:fAjnxN7u.net]
>>877
モデルはいろいろあって一長一短あるけど
基本ベースはMVCだから
別に最初からそこのサイトに載ってるモデルで作ってみるのでもいいけど
とりあえずMVCで作ってあとでそれぞれのモデルを試してみるのでもいいと思うよ

887 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 04:00:12.67 ID:fAjnxN7u.net]
>>878
そのコードで正確な値がわかるのは存じ上げてますが
doubleにリテラル代入して
すぐにtoStringをした場合
表示される値は代入した値が表示されることが保証されているのかどうなのかが知りたいです。
調べてもいまいち確証のとれる情報が見つからなくて・・・

888 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 04:00:35.18 ID:sTT4KsYO.net]
>>879
ありがとうございます。そうします。

889 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 04:14:03.16 ID:Fc/iK1Xw.net]
>>880
> doubleにリテラル代入して
> すぐにtoStringをした場合
> 表示される値は代入した値が表示されることが保証されているのかどうなのかが知りたいです。

「コードに書いたリテラルの文字列と、toString で得られる文字列が一致する」ってのは保証されない。

System.out.println(0.100000000000000001);

とでも打ってみれば分かるだろ

保証されてるのは、toString で得られる十進表現の最近似値が内部的な二進表現になってるってことだけ

890 名前:デフォルトの名無しさん [2016/01/17(日) 04:20:36.17 ID:YMwfXCWc.net]
>doubleに代入してからすぐtoStringしても誤差はないですよね?
>ということはdouble代入時には誤差は起きないってこと?

Doubleクラスのソース
hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/lang/Double.java

DoubleクラスのpaseDoubleやtoStringからめぐりめぐって最終的に呼び出すdouble値と文字列を変換する処理が書かれてるソース
hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/sun/misc/FloatingDecimal.java



891 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 04:58:55.46 ID:sTT4KsYO.net]
すみません。
Java+Webでひとつの作品作ろうと思ったら、JavaScriptはしっかり勉強しておいたほうがいいでしょうか?
データベース・ネットワーク・法律等も勉強中で、何を優先して行くか悩んでるんですが・・・

892 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 05:14:49.60 ID:F+WNk6+N.net]
JavaScriptは作るものによって必要かどうか変わってくるだろ
それ以外は優先順位をつけたところで意味がないぞ、だって全部やるんだろ?
好きなものからやれ

893 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 07:37:50.69 ID:TkYjcAHo.net]
サーバーにJavaを使うような用途ならJavaScriptはやらなくてもいい。
Java使うのはだいたい業務Webアプリなので画面に動き付けたりするのは重要ではないからな。
そうじゃないんなら、サーバーにJavaを選ぶのは懸命な選択とはいえない。
どうせJavaScript覚えるんならnode.js使えばJavaのところもJavaScriptで書けるよ。

894 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 08:03:02.91 ID:lwAJTCbm.net]
>>881
JSF使えば?

895 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 10:05:13.82 ID:sTT4KsYO.net]
とりあえずJSFやってみようと思います。
参考書を探してみたんですが、この2冊だと(目次見た感じでは)どっちがいいでしょうか?
自分は、Java(Servlet/JSP/JTTL)、SQL(MySQL)、HTML、CSSあたりの基礎はなんとか・・・というレベルです。
www.shoeisha.co.jp/book/detail/9784798140926
www.shuwasystem.co.jp/products/7980html/4216.html

896 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 11:31:33.40 ID:lwAJTCbm.net]
>>888
自分は下の本をとっかかりにした。

897 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 11:42:56.02 ID:/Bppo/Tp.net]
一人で勉強するのならjava以外のほうがいいと思うけどな

898 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 12:15:10.33 ID:Qzn6azHr.net]
>>880

コンパイル時に浮動小数リテラルが別のリテラルに丸められるのは
よくあること。

toStringを実行した出力が近似値に丸められるのもよくあること。
どんなにひどい結果でも、toStringする前の値の大小関係は
丸められた結果同士でもキープされると期待していい。

Double#toStringの説明は何なんだよ
「検討してみましょう」じゃねーよおまえが検討しろよ
Oracleはこんなもんに知的財産主張してるのか

899 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 13:01:07.85 ID:sTT4KsYO.net]
>>889
ありがとうございます。下の本にします。

>>890
すみませんが、その理由を教えていただけないでしょうか。

900 名前:デフォルトの名無しさん [2016/01/17(日) 13:45:51.81 ID:rbU+q6uu.net]
「人」オブジェクトがあって
人情報取得メソッドがあります。
人オブジェクトに人情報取得時に必要な情報をあらかじめセットしておき
メソッドを呼ぶときの引数に人オブジェクトを設定してあげます。

このときメソッド内で
引数で渡された人オブジェクトに取得した結果を格納してあげるのは設計上よくないですよね?
メソッド内で新たに人オブジェクトを作成してあげて
そこに結果を格納し返してあげるのが正しいと思うのですがいかがでしょうか?
基本的な考え方で愚問だとは思いますが
皆さんのご意見をお聞かせ頂きたいです。



901 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 14:07:20.26 ID:BJ5EtIoT.net]
状況がわからないけど、メソッドの引数が人オブジェクトなのはおかしいでしょう
人.getInfo()とかにすべきでは?

902 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 14:13:43.56 ID:Fc/iK1Xw.net]
>>891
> コンパイル時に浮動小数リテラルが別のリテラルに丸められるのはよくあること。

表現が正確じゃないな。”別のリテラル”じゃなく、最近似の二進表現になるってだけ。

> Double#toStringの説明は何なんだよ
> 「検討してみましょう」じゃねーよおまえが検討しろよ

いや普通に読めば理解できるように書いてあるだろ…
double の値(二進表現)が一意に分かる最低限の桁数の十進表現で表示されるってだけ

System.out.println(0.1) で、"0.1"と表示されるのは、この桁数で二進表現を一意に特定するのに必要十分だから

903 名前:デフォルトの名無しさん [2016/01/17(日) 14:15:17.51 ID:rbU+q6uu.net]
>>894
あっすいません
そこは今回特に意識してない部分だったので詳しくかいてなかったです
正確にはそうです

904 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 14:25:28.04 ID:fAjnxN7u.net]
>>895
なるほどなるほど
そういうことか・・

ということはやはりBigDecimalが安定なのか・・

905 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 14:49:27.51 ID:Fc/iK1Xw.net]
>>897
> ということはやはりBigDecimalが安定なのか・・
んなもん何に使うかによる

906 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 16:18:27.41 ID:pSWLpytB.net]
浮動小数0.1は、2進数で循環小数になるから、
たとえ、0.1と表示されていても誤差がある

お金など誤差が許さないものは、
データを10進数で持っている、decimal系を使う

>>893
func(out)のように、引数を出力目的で使うのだろ?

return でインスタンスを返すと、
オブジェクトが生成されて、GCが呼ばれて廃棄される

そのコストが許せないのなら、引数で出力できるけど、
変数のスコープが広がるので、バグが増える

Object a;
func(a);
a を使う

907 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 18:22:27.84 ID:qQLVhcCc.net]
派生クラスのコレクションを親クラスのコレクションにキャストすることができないようですが、
この点に関しては一般的にはどのように

foreach( Class1 v1 : v1s ) {

}

908 名前:デフォルトの名無しさん mailto:sage [2016/01/17(日) 20:05:05.35 ID:Fc/iK1Xw.net]
>>900
stackoverflow.com/questions/5082044/most-efficient-way-to-cast-listsubclass-to-listbaseclass

909 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 00:36:47.17 ID:db+cxeqg.net]
Decimalが10進数でデータ持ってるっていうのは、
Decimal以外だと
159 = 10011111
Decimalだと
159 = 00000001 00000101 00001001
っていうことですか?

910 名前:デフォルトの名無しさん [2016/01/18(月) 02:01:50.71 ID:kzzNSGRd.net]
用語の使い方がおかしい人に聞いても良いことないよ。



911 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 02:49:43.92 ID:9UzPlEZa.net]
>>902
BigDecimalは超簡単に書くと

class BigDecimal
{
BigInteger intVal;
int scale;
}

で intVal * 10^-scale (^は累乗) の数値を表す

intVal=1 scale=2→0.01
intVal=1 scale=1→0.1
intVal=1 scale=0→1
intVal=1 scale=-1→10
intVal=1 scale=-2→100

intVal=12 scale=2→0.12
intVal=12 scale=1→1.2
intVal=12 scale=0→12
intVal=12 scale=-1→120
intVal=12 scale=-2→1200

とかそんな感じ

912 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 03:11:48.22 ID:tdkp4CJHB]
やるじゃん

913 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 03:27:28.21 ID:db+cxeqg.net]
>>904
ありがとうございます!

914 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 05:08:09.37 ID:S6LQNh+S.net]
すみません。ここでいいのか分かりませんがお願いします。
JSP中のselectコントロールにテーブルの主キーを表示して、選択される項目が変わるたびに、DBから、その主キーに対応するカラムのリストを取得して表示したいんですが、どうやったらいいでしょうか?
出来ればページの一部だけ差し替えるように表示したいんですが。

915 名前:906 mailto:sage [2016/01/18(月) 05:10:10.54 ID:S6LQNh+S.net]
ページ読み込み時に全データを取得すると、HTMLのコード内にデータが全て格納されてしまうので、それは避けたいのです。

916 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 07:38:12.62 ID:23fLppyX.net]
>>907
Ajaxでググれ

917 名前:デフォルトの名無しさん [2016/01/18(月) 16:51:35.57 ID:mx4I+vxo.net]
Set の一番ナウくてスマートな初期化の方法を教えてください。

私のレベルで思いつけるのはこの程度です。

Set<String> items = new HashSet<String>();
items.add("item1");
items.add("item2");

918 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 16:57:08.02 ID:E7A1qRpW.net]
Set<String> set = Stream.of("item1", "item2").collect(Collectors.toSet());

919 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 17:18:42.78 ID:mx4I+vxo.net]
>>911
Stream ! そういうのもあるのか
どうもありがとうございます

920 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 17:45:07.00 ID:enBRobGZ.net]
ジェットストリーム、夜空に輝く星



921 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 19:33:03.33 ID:sKUqMQzC.net]
ニコ生のような、リアルタイムで音声と映像を配信する技術って
javaで実現可能でしょうか?
javaで実現できるなら方法を教えて下さい。

922 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 19:55:03.79 ID:23fLppyX.net]
>>914
ソケット通信でググれ

923 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 19:55:58.66 ID:ZuaaGYVC.net]
もっとハードよりのcとかベリログとか使ってそう

924 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 19:57:49.62 ID:gQQJtJbt.net]
>>914
それはJavaでどうこうじゃなくてインフラの問題だ
AWSの例
https://aws.amazon.com/jp/cdp/cdn-live/
5000人×2時間で600ドル

925 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 21:25:07.46 ID:sKUqMQzC.net]
>>915
はい。ググります。
>>917
インフラですか、さっぱり分かりません。
数千人がアクセスしてサーバー落ちるとか言いますが、
アクセス過多とかがイマイチ理解出来ません

926 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 21:35:33.44 ID:RWGC+b6j.net]
>>914
これのソース読め
https://github.com/Red5

927 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 22:23:46.49 ID:fb3J4oW9.net]
>>918
インフラ分かんないなら最初は簡単なWebサイトをNode.jsやRailsなんかで
作ってみるところから始めることをお勧めする
セキュリティを確保しながら外からページを見られるようにするだけでも死ぬほど苦労するから

928 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 22:47:37.18 ID:sKj6swh6.net]
Node.jsやRailsなんかで、ストリームw

929 名前:デフォルトの名無しさん mailto:sage [2016/01/18(月) 22:56:03.91 ID:fb3J4oW9.net]
>>921
パフォーマンスが重要なコアな部分だけJavaやC++で書いて
Webページの部分はどうせIOバウンドだし頻繁に変わるからLLで作るというのは
決して珍しくないけど?
どうせサーバーは別になるんだし

930 名前:デフォルトの名無しさん [2016/01/19(火) 07:55:06.38 ID:vsW11Ok5.net]
宣言時になんでarraylistをいちいちListインターフェースにキャストするサンプルが多いんでしたっけ?

c#ならListインターフェースを実装しているなら、わざわざインターフェースで宣言しなくてもList型の引数に渡せば勝手にキャストしてくれるんですけど、javaはそういうのないんでしたっけ??



931 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 09:12:20.62 ID:H1G67Lxp.net]
日本語で

932 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 09:56:25.11 ID:wNgJdiNd.net]
>>923
List list = new ArrayList<String>();

キャストなんて必要ないんだが。

933 名前:デフォルトの名無しさん [2016/01/19(火) 10:02:06.59 ID:vsW11Ok5.net]
え?暗黙的キャストでしょ。

934 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 10:44:22.57 ID:wNgJdiNd.net]
いやだから、明示的なキャストが必要ないって言ってんだよ
お前が C# なら勝手にキャストしてくれるって言うから

935 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 10:58:56.56 ID:unNXfSBy.net]
キャストどころかJVM的には参照型の値は何も区別してないっしょ

936 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 11:03:26.79 ID:TS4012zz.net]
そもそも

> arraylistをいちいちListインターフェースにキャストするサンプルが多い

こっからして意味不明w
んなもん一個も見たことないんだが
OOPの根源をなすポリモの理解が狂ってでもないと書けないはず

937 名前:デフォルトの名無しさん [2016/01/19(火) 11:10:13.85 ID:vsW11Ok5.net]
>>929
>>925の宣言方法です。

やっぱ狂ってますよね。
インターフェースでの制限かけるのはメソッドの引数型が担当するもんですよね。

なんかjavaって変な風習あるのかなって。

938 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 11:11:20.35 ID:7c8TWihj.net]
ふぁっ??

939 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 11:17:06.84 ID:wNgJdiNd.net]
そもそも C# の List ってインターフェースじぇねーし言ってること滅茶苦茶だなこいつ
何言ってんだほんと

940 名前:デフォルトの名無しさん [2016/01/19(火) 11:22:57.26 ID:vsW11Ok5.net]
>>932
Ilistです。はいはい、君は黙ってて



941 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 11:28:49.40 ID:wNgJdiNd.net]
>>933
stackoverflow.com/questions/1367539/ilistint-vs-listint

そもそも C# でも
IList<int> list = new List<int>();
みたいな宣言することはあるし、可能。

C# と Java で違いがあるってのなら、その違いをソースコードで示してみろよ

942 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 11:37:51.74 ID:74fDunfU.net]
なんとなくコイツの勘違い分かったわw
C#なら
ArrayList list = new ArrayListを
foo(List list)に渡せるのに、
Javaは
List list = new ArrayListというふうに「いちいち(>>923)」しないと
foo(List list)に渡せないんじゃないかと思ってるんじゃないかと

あるメソッドの引数にあらかじめ「型をあわせる為」に
宣言時に「いちいち」Listに代入していると勘違いしている

943 名前:デフォルトの名無しさん [2016/01/19(火) 11:41:28.51 ID:vsW11Ok5.net]
>>934
可能かどうかじゃなくて、
java界隈で常識?らしい、なぜarraylist型のままでなくlistにするのか問うておるんだが。

何一つ疑問に答えてないぞ君は。

今度的はずれなこと言ったら口聞かないからね。

944 名前:928 mailto:sage [2016/01/19(火) 11:44:35.52 ID:kozL0Mk3.net]
>>930
あとこれにも一応ちゃんとレスつけとく

> >>925の宣言方法です。
> やっぱ狂ってますよね。

俺が狂っているといったのは
List list = (List)new ArrayList ←これであって
List list = new ArrayList ←これではない
親クラスの参照に子クラスのインスタンスを代入するのは当たり前

キャストという用語の食い違いについては言及するつもりはない

945 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 11:47:34.75 ID:wNgJdiNd.net]
>>936
的はずれなこと言い続けてるのはお前だカス

> java界隈で常識?らしい、なぜarraylist型のままでなくlistにするのか問うておるんだが。
Javaで常識とかではなく、Java でも C# でも一緒。リンク先に答え書いてあるだろ…。

C# で言うなら、List のすべてのメソッドを公開するよりも、IList に定義されてるメソッドだけを公開する方が
プログラムを修正/変更に対する影響範囲を極小化できるから

クラスのメンバをアクセス修飾子出来る限り外部に隠蔽するのと同じ理屈。

946 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 11:49:18.49 ID:wNgJdiNd.net]
誤)クラスのメンバをアクセス修飾子出来る限り外部に隠蔽するのと同じ理屈。
正)クラスのメンバをアクセス修飾子で出来る限り外部に隠蔽するのと同じ理屈。

947 名前:デフォルトの名無しさん [2016/01/19(火) 11:56:31.85 ID:vsW11Ok5.net]
>>935
そんなかんじです。
でも、ちょっと違うかも。
で、調べたら

arraylist list = new arraylist();
って、宣言してたら
foo(arraylist array)
に渡っちゃうだろ!
必要最低限の型にしとけ!というものでした。

948 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:02:13.26 ID:wNgJdiNd.net]
> arraylist list = new arraylist();
> って、宣言してたら
> foo(arraylist array)
> に渡っちゃうだろ!
> 必要最低限の型にしとけ!というものでした。

何言ってるのこの子…

949 名前:デフォルトの名無しさん [2016/01/19(火) 12:03:00.49 ID:vsW11Ok5.net]
>>938
インターフェースの意味理解してますか?

外部と接続のためにインターフェースを実装するのであって、外部と遮断するためにインターフェースを実装するのではないよ?

950 名前:928 mailto:sage [2016/01/19(火) 12:03:30.60 ID:gb1JG2bL.net]
>>941
俺も半笑いですw
久々に意識レベルを疑う池沼が来たな…とw
酒でも飲んでるか、脳にデッカイ腫瘍でもあるんじゃないですかねこの子



951 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:07:35.84 ID:qBj82rYb.net]
印象派のプログラマかな(適当)

952 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:21:35.18 ID:wNgJdiNd.net]
なぜかインターフェースの意味を説明し始めたぞこいつ…

>>942
「外部との接続のためのインターフェース」 だからこそ、そこには必要十分なメソッドだけが定義されてるんだよ

Java で言うなら、
List<Integer> list = new ArrayList<>();

List<Integer> list = new LinkedList<>();
に書き換えるのは容易でそこだけ書き換えれば良いけど

ArrayList<Integer> list = new ArrayList<>();

LinkedList<Integer> list = new LinkedList<>();
に書き換えると、この変数使ってるすべての箇所で修正が必要な可能性が生じる

インターフェースを使うことで、公開するメソッドの数に制限をかけることができて、修正の可能性を極小化出来る

何度も言うが、これは Java だけに限ったことじゃなく C# でも他のOOP言語でも同様

953 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 12:47:40.68 ID:1PZtH04E.net]
話逸れるけど、個人的にはJavaのListに関してははインタフェースじゃなくてArrayListなりLinkedListとして使いたいなぁ
周りがみんなインタフェース使ってるから倣ってるけど

954 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 13:30:07.42 ID:qBj82rYb.net]
>>946
いやそこはList使えよ
わざわざArrayListとかで型を宣言する意味がわからない

955 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 13:38:16.49 ID:qBj82rYb.net]
言葉足りなかった
enaureCapacityやtrimToSize とか使うならArrayListで宣言は必要と思うけど、普段使わないだろ

956 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 13:38:56.83 ID:OfRjP77Z.net]
デザインパターンとともに学ぶオブジェクト指向のこころの第一章だけでも読んでほしいところ

957 名前:デフォルトの名無しさん [2016/01/19(火) 13:45:36.84 ID:8TTjRiqP.net]
いや別に使ってもいいでしょ。
このメソッドの引数にはスレッドセーフなリストを渡せってような時は意図的にシグネチャに具象型定義して使用者に分からせるようにしたりとか、まああまり親切では無いけど。

958 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 13:55:08.82 ID:qBj82rYb.net]
逆に意図した意味がなかったらそこで型を限定する必要性がないでしょ
むしろしちゃダメでしょ

959 名前:945 mailto:sage [2016/01/19(火) 16:01:27.27 ID:xj7vEpfK.net]
コレクション以外は素直にインタフェース使えるんだが
List#addのUnsupportedOperationに怯えるのが嫌なんよ

大抵の場合そんなプログラムの作りになってるのが悪いんだけど
引数にList受けてそのままaddして返してるようなの見ると怖くなっちゃう

960 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 17:54:30.97 ID:9Rb1UiHl.net]
ArrayListとLinkedListが両方ListなのはJavaの大きな設計ミスの一つだな
というか共通に実装するにはListが多機能すぎるんだよ
パフォーマンス的にも地雷になりうるから、2つは明確に区別するか、もしくはListではなくCollectionを使った方がいい



961 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 18:01:50.35 ID:9Rb1UiHl.net]
あと>>945みたいなことを言いながら単に複数の値を受け渡ししたいだけのときにListを使う奴の多いこと
大抵のケースではIterableで十分だ

962 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 19:09:02.88 ID:wNgJdiNd.net]
List のどこが多機能すぎるんだ?
順序付けられた Collection って明確な実装目的があるし、メソッド自体も Collection のそれと大して変わりないだろ
他の言語でも大体同じような感じの実装になってると思うが、Java の List が失敗なら例えばどんな言語のどんな実装なら理想なの?

963 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 19:27:56.09 ID:9Rb1UiHl.net]
>>955
インデックスを指定するメソッド全てだな
「順序がある」と「ランダムアクセスできる」は理論的には同じでも実用的には全く異なるのに、
それを同一としてしまったことがミスだ
後発の.NETの場合はIListはランダムアクセスのためのインターフェースとして定義され、LinkedListはIListを実装していない
あくまで「順序がある」としての共通化に拘るのなら、Listはランダムアクセス無しにして
ランダムアクセスするためのインターフェースを別途作るべきだった

964 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:14:44.81 ID:wNgJdiNd.net]
「順序がある」と「ランダムアクセスできる」は別に同一にしてないと思うけどなJavaでも

List が意味するのはあくまで「順序がある」で 、これ使って確かにインデックスアクセスもできるが、
それはランダムアクセス可能なことを意味したものじゃない(C# でも、LinkedList#ElmentAt は使える)

ランダムアクセス可能かどうかは、RandomAccess っていうマーカーインターフェースが別にある

965 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:31:57.67 ID:WA9VNBRk.net]
リンクリストに対してget(int)するのは不利だろうけど
add(int,Object)やremove(int)はすればするほどアレイリストより有利だよね?
リンクリストにランダムアクセスできることの何が問題なの?

966 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:38:18.24 ID:i1u/RpO5.net]
>>958
いやリンクリストはaddやremoveも毎回線形走査が走るからArrayListより遥かに遅いよ
ListIterator使わないとパフォーマンス上の利点はない
使ってもArrayListより早くなるケースは稀だけどね

967 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:55:01.60 ID:i1u/RpO5.net]
基本的にはほとんどすべてのケースでArrayListの方が速いと考えていい
リンクリストは極めて特殊な状況で使うものなので、
.NETではリンクリストなんか無視してArrayList構造前提のインターフェースにした方が便利だという判断になったんだろうね

968 名前:デフォルトの名無しさん [2016/01/19(火) 20:56:09.33 ID:UvexcXui.net]
どうしたらエラー消えるか教えてくださいm(_ _)m
import java.awt.*; import java.awt.event.*; import java.util.*;
public class Kadai74 extends Frame implements ActionListener{
TextField t1 = new TextField(25); //25は最大表示可能文字数
public static void main(String[] args){
new Kadai74();
}
public Kadai74(){
this.setTitle("時刻表示");
this.setSize(320,120);
this.setVisible(true);
addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setLayout(new FlowLayout());
Button button = new Button("時刻の表示");
button.addActionListener(this);
add(button);
button.setSize(1,3);
add(t1);
}
public void actionPerformed(ActionEvent e){
Date date1 = new Date();
TextField.setText(date1.toString());
}
}
エラー文↓
package74/Kadai74.java:59: static でない メソッド setText(java.lang.String) を static コンテキストから参照することはできません。
TextField.setText(date1.toString());

969 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 20:59:38.12 ID:wNgJdiNd.net]
>>961
誤) TextField.setText(date1.toString());
正) t1.setText(date1.toString());

970 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:03:09.49 ID:UEki8ydx.net]
どうすると959みたいな嘘つき&馬鹿が生まれるのか不思議でしょうがない



971 名前:デフォルトの名無しさん [2016/01/19(火) 21:08:01.56 ID:UvexcXui.net]
>>962
ありがとうございます!!エラーがなくなりました!

あと表示させたいのがクリックした時の時刻なんですがアドレス値が表示されてしまいます…
どうすればよいでしょうか?

実行結果↓
package74.Date@7e6536b7

972 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:09:53.72 ID:wNgJdiNd.net]
いや>>960は正しいと思うけど俺は
LinkedList はメモリフットプリントが若干大きくなるぶん
理論上の計算量が同じでも ArrayList より遅くなることが多い
そして、LinkedList の ArrayList に対する利点は、イテレータ使って add, remove する時だけ

stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist
ここでも議論されてるが、LinkedList を使うのはかなり限られた特殊な状況ってので大体見解が一致してる
中には LinkedList は糞だから全部 ArrayList で良いって言ってる人もいる

973 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:15:53.20 ID:wNgJdiNd.net]
>>964
いや、お前のコードコピペして、>>962 でレスしたとこ変えただけで普通に時刻表示されたけど
後、表示されてるのはアドレス値じゃなくてインスタンスのハッシュ値だろ多分
package74.Date って自分で Date クラス作ったのか?

974 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 21:31:17.06 ID:i1u/RpO5.net]
>>965
メモリ使用量もそうだけどシーケンシャルアクセスでメモリアクセスが連続しないのがデカい
次の要素読むたびにキャッシュミスするクソみたいなデータ構造だ
ArrayListが苦手とされる途中への挿入削除は配列のブロックコピー一発という低レベルな操作だから極めて最適化されてて遅くなりにくい

975 名前:957 mailto:sage [2016/01/19(火) 22:06:20.77 ID:zjEKWV3a.net]
>>959
> いやリンクリストはaddやremoveも毎回線形走査が走るからArrayListより遥かに遅いよ

そこはリンクですからね!
毎回線形捜査するけどアレですよ!
中身の再配置が無いから早いはず!

https://ideone.com/RrkGX9
ちょっと計って比べてみた結果
…目が醒めました、はい

>>967
なるほどなるほど

976 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:08:58.95 ID:SukeRrsX.net]
>>945
C#も含め型推論のある言語だとその書き方はしないな

まあ、ArrayListからLinkedListに変えたいってことが稀だからだろう…

977 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:22:58.61 ID:wNgJdiNd.net]
>>969
IList と List の話じゃなく、
具象クラスの宣言時に型をインターフェースにするのはC#でもやるだろ普通に

978 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:34:17.01 ID:Xsa7QJ4A.net]
イテレータ使わないならLinkedList使わないでいいよ

979 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:39:05.90 ID:SukeRrsX.net]
>>970
この書き方の話だよ
List<Integer> list = new ArrayList<>();

ローカル変数の宣言は全部varかval

980 名前:デフォルトの名無しさん mailto:sage [2016/01/19(火) 22:56:19.26 ID:wNgJdiNd.net]
> ローカル変数の宣言は全部varかval
Java でもそうだけど、こういう書き方するのってローカル変数よりむしろフィールドだと思うが
ローカル変数ならぶっちゃけなんでもいい



981 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:00:23.82 ID:+oDO5kZy.net]
× リンクリスト
○ リンクドリスト

ちゃんと覚えておけよ

982 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:03:38.55 ID:uG3ghRzi.net]
× リンクドリスト
○ リンクトリスト

ちゃんと覚えておけよ

983 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:14:22.73 ID:0SkMRgg2.net]
お前の俺命名ルールを押しつけられても

984 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:14:55.92 ID:UTsS/Gix.net]
卑猥な単語に見えたのは俺だけで良い

985 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 00:21:22.54 ID:/jAqE9aQ.net]
>>973
冗長だから普通は型推論使うよね。今回の話からはずれちゃうけど。

986 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:23:33.22 ID:3QI3P0j9.net]
ID:vsW11Ok5がvarがないのが不便だねっていいたかっただけなら
プログラムやる前にもうちょっと日本語の勉強した方がいい。

987 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:32:00.99 ID:0GsBasXl.net]
結局何の事なんか分からんかったな
モヤモヤする

988 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:35:15.19 ID:/koko6uv.net]
OOPの基礎知識の欠落と思われ
インタフェースに対してプログラミングするという視点の不在と
変数を十分に小さいインタフェースで取り回すことの快適感の不在

989 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 08:36:06.97 ID:ztCI1EFa.net]
変な理解にもとづいて書いてあるものは、忘れたほうがいい

990 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 11:08:18.35 ID:tmIP8TZA.net]
あとC#が〜C#が〜って押し付けする奴はもうC#だけやってろよ
他言語ではこうであるだからこっちでもこうするべきだなんて俺ルールと大差ないわ

郷に入れば郷に従っとけよ、ハゲ



991 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 16:25:40.16 ID:pKAGFZbJ.net]
>>923はそもそもキャストという用語を独自解釈してるからな
型変換とごっちゃになって覚えているか区別がついてないんだろうな

https://msdn.microsoft.com/ja-jp/library/ms173105.aspx
> 暗黙の型変換 : 変換はタイプ セーフであり、データが失われることはないため、
> 特別な構文は不要です。たとえば、小さい整数型から大きい整数型に変換したり、
> 派生クラスから基本クラスに変換したりする場合です。
>
> 明示的な型変換 (キャスト) : 明示的な型変換にはキャスト演算子が必要です。
> キャストが必要になるのは、変換時に情報が失われる可能性があるとき、
> または他の理由により変換が成功しないときです。
> 典型的な例としては、精度の低い型または範囲の狭い型への数値変換や、
> 基本クラス インスタンスの派生クラスへの変換があります。

992 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 18:24:51.17 ID:6ONE7iN3.net]
一応暗黙的なキャストっていう用語も存在してないことはない
https://msdn.microsoft.com/ja-jp/library/cc482668.aspx

普通はキャストって言われたら明示的な型変換だと思うけどな

993 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 18:42:00.22 ID:IhxMke/s.net]
キャスコといえばゴルフ

994 名前:デフォルトの名無しさん [2016/01/20(水) 19:17:57.30 ID:6Nwq+BmN.net]
アップキャストとかダウンキャストとかあるじゃん。
それとはまた別なの?
アップキャストが暗黙と同義だよね。

995 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 19:59:09.19 ID:QPtcDW16.net]
https://en.wikipedia.org/wiki/Type_conversion
> In the C family of languages and ALGOL 68, the word cast typically refers
> to an explicit type conversion (as opposed to an implicit conversion),

Cの流れだと一般的にはこうだな
まぁそれ知らない人にはどうしようもないのかもしれんが

996 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 21:36:39.80 ID:Ci1f4cma.net]
アップキャストはオブジェクト指向の話で出てくる用語
オブジェクト指向をサポートする主要な言語(Java/C#/C++)の用語ではキャストと言ったら明示的変換
言語の文法の話なら間違いだが、そのコードで表現しようとしているものをオブジェクト指向として捉えた時の話であれば間違いではない

997 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 22:34:30.52 ID:odor4UVz.net]
コンパネのJava開くとネットワーク設定があってプロキシ設定出来るけど、これって何で使われるの?
ググッたら、Javaアプレットでネットワーク接続するときに使うみたいなんだけど、
これってJavaアプレットに限った話ってことで合ってる?
Javaアプリケーションでネットワーク接続する場合は、Windowsのインターネットオプションで設定したプロキシが利用されるってことで良いのかな?

998 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:36:19.67 ID:wCHOY8+w.net]
int と Integerって何が違うんですか

999 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:38:37.02 ID:ZWK/hjZG.net]
>>979
全然違うと思うwww
つかレスしてるやつらでも理解してないのが多いな
がっかりだよ

1000 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:46:09.83 ID:88LciSZZ.net]
>>992
C#スレ見たか?



1001 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:48:28.88 ID:HtrKLPks.net]
Integerは(不変の)オブジェクト

1002 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:48:53.58 ID:ZWK/hjZG.net]
>>993
関係ない
そもそもなんでインターフェイスすんの?って質問が本質

この書き方でも馬鹿が使えば実行時エラーの元なんだけどな

1003 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:49:45.44 ID:ZWK/hjZG.net]
'に' が抜けてた

1004 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:50:42.77 ID:88LciSZZ.net]
>>995
質問に対する返答になってない。やり直し。

1005 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:51:15.47 ID:HtrKLPks.net]
次スレ立てますね

1006 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:52:25.30 ID:HtrKLPks.net]
次スレ
★★Java質問・相談スレッド176★★ [無断転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1453305105/

1007 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 00:53:04.25 ID:ZWK/hjZG.net]
>>999


1008 名前:デフォルトの名無しさん mailto:sage [2016/01/21(木) 02:11:23.15 ID:Ro+JnAfr.net]
1000

1009 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1010 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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