Java入門・初心者質問スレ Part.4 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
今、学生で、普通のサラリーマンになる予定なら、
エクセルやアクセスのマクロ(vba)が書ける方が職場で重宝されそうだけどね
将来androidアプリを作りたいなら、「とりあえずjava」であってると思うけど >>258
いいんじゃないの
LLとか便利だけど、その面倒な部分の大事さとか学べない
ひとつの言語だけで終わるなら用途によってもっといい言語がありそう >>247ですが、>>253さんのコード目からウロコです!
thisもキャストできるんですね
不勉強なので>>255さんの仰る事が少し難しいのですが、インスタンスだから、ということでしょうか
今丁度その辺りを勉強しているところなので正しく理解できるよう頑張ります
皆さんありがとうございました ありがとう。
どうやらjavaを選択したことは間違いではなかった様子。
まだfor構文だが頑張る forいいじゃん
個人的に、Javaで書くときはなるべく質素に書くのが似合ってる気がする
拡張forとかfroEachとかStreamAPIとか言わずに
for (int i = 0; i < a.length; i++)の形が美しいとすら思う
単に個人的な意見です 美しいかどうかは個人の感覚だけど
短く楽に書けて、読みやすいのはメソッドチェインの方かな 個人的な意見をごり押ししていいなら無駄なカウンタ変数は美しくない
変数が再代入されるのもできる限り避けたい
よってforはあまり使わない カウントなどというバグの原因は内部でやらせておくに限る カウントのバグ、みたいなもんを針小棒大に扱って見せても白けるだけ 処理速度はともかく数字への無駄な依存をなくすことが悪いことのはずない
チューニングはボトルネックと判明してからでも遅くはない ループ書くと後々必ずループの中身を肥大化させるバカが居からなるべくループは書かない 終わらないループ
終わらないif文
終わらないメソッド
使い回され続ける変数
共通部分の大量コピペ
業務プログラムあるあるですな 仕様を決めつけて最適化しすぎると保守性が下がるんだけどな。 共通部分なんて程度で共通化すべきではない
それはたぶんたまたま同じなだけ
どうせすぐここだけ変えてほしいって要求が来てあっという間にIF文まみれになる
最初から別につくったほうがまし >>276
あるあるネタだね
画面ごとにデータ取得SQLを最適化したり頭悪いわ 372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子が求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。 >>276
クライアントが拘りの部分だけ設計時に最適化したがるんだよな
そんなとこ運用してからでいいだろというとこ
全部設計してくれてコーディングだけでいいなら任せるけどさ >>280
たまたま同じ部分をIFでなく継承でまとめたからって、おこる問題は一緒だ
むしろ継承はIF文より汎用性がないからIF文よりずっと悲惨なことになる
すなおにコピペで別クラスにしとこう >>282
初心者だと応用効かないか条件分岐の代わりにしか使えないとか
でもそもそもそういうこと言ってるんじゃないんだよ
ちゃんとオブジェクト指向わかってるば、たまたま共通のコードとかじゃなくて、設計段階で本質的に同じものでまとめて書ける
お前のはサブルーチンとして使ってるだけだろ >>283
設計段階で同じものだってわかってるなら何使ったってどうにでもなるわ!
オブジェクト指向関係ない
そのあとで実はここ違いますってなったとき
IF文:分岐を入れる
オブジェクト:ケースに応じて継承もしくは別クラス作成
コピペ:該当部分を修正
コピペが最優秀なんだけど その該当部分が鼠算で無限増殖していくのであっという間に手に負えなくなる
コピペは死罪 そんなに増えないって
結合テストのケースに応じてコピペすりゃいいんだ
どうせまとめたって機能別に試験させられるんだからそこがボトルネックのはず
むしろ同じテストが完了した時点で
同じものがたくさんできているので生産性が高いといえよう 同じ記述はメンテ的に良くないので避けるべき、と習ったよ
修正箇所を少なく作るのが江戸っ子らしい
ただそんな書き方は素人の俺には思いつかないのが問題 まとめたら単体まで作るときは楽なんよね…
まとまってるぶん網羅しやすいからブラックボックステストの試験ケース少なくて済む
でもIF文とか継承まみれになると可読性めっちゃさがる if文が増えるなら
業務分析が下手くそ
設計が下手くそ
コーディングが下手くそ >>292
おまえは神か?世界の複雑さを完全に把握してコントロールできるのか? 彡 ⌒ ミ 彡 ⌒ ミ
( ´・ω・) ( ´・ω・)
_(__つ/ ̄ ̄ ̄/つ/ ̄ ̄ ̄/
\/ / \/ /
 ̄ ̄ ̄ カタカタ ̄ ̄
彡 ⌒ ミ 彡 ⌒ ミ
( ´・ω・) .(・ω・` )ヾ < なぁ、これって
_(__つ/ ̄ ̄ ̄/つ/ ̄ ̄ ̄/
\/ / \/ /
 ̄ ̄ ̄  ̄ ̄ ̄
彡 ⌒ ミ 彡 ⌒ ミ
( ´・ω) .(・ω・` )
_(__つ/ ̄ ̄ ̄/つ/ ̄ ̄ ̄/
\/ / \/ /
 ̄ ̄ ̄  ̄ ̄ ̄
彡 ⌒ ミ .彡 ⌒ ミ
(´・ω・`) (´・ω・`) また、かみの話してる
_(__つ/ ̄ ̄ ̄/つ/ ̄ ̄ ̄/
\/ / \/ /
 ̄ ̄ ̄  ̄ ̄ ̄ >>286
仕様と1対1にできるのがオブジェクト指向のいいとこだろう
言ってることが真なら設計に戻るだけ
コードだけ変えてメンテできなくなるのは初心者が陥りがちな罠 >>289
それむしろ逆。共通化してしまうと仕様変更で別々になる可能性がある。
共通化は本当に共通化したい部分にすべきことであって、何でもかんでも共通化は間違い。 いまどきJavaでオブジェクト指向にこだわっているのは考え方が古い。 業務系はオブジェクト指向と相性いいからな
趣味とかは知らん ビット演算について教えて下さい。
ビット演算子(&,|, ^)の右側と左側で桁数が違うときは、どういう処理がされるのですか? >>302
データベースとのやりとりは結局、解決してないけどな。 >>303
例えば、8・16ビットで、ビット演算して、何ビットの結果が必要なんだ?
少ない方の結果が必要なら、多い方を、少ないビットに変換すればいいし、
多い方の結果が必要なら、少ない方を、多いビットに変換すればいい
多いビット・少ないビットの、変換関数を探すか、自分で作ればいい >>305
やりたいことは符号無しintをlongに型変換したいのです。
どこかのサイトを見たところ、
longNumber = unsignedInt & 0x00000000FFFFFFFF
とすればいいらしいのですが、
そもそも桁違いでビット演算したらどうなるんだ?というのが気になりまして。
小さい方を大きいほうの型にキャストしてるのか、
それともキャストしてるんじゃなくて桁を増やしてるのか…
桁増やすにしても、符号拡張してるのか、0で埋めてるだけなのか…
気になって夜も眠れますん。 >>306
目的に対してどうしてそういう手段でやっているのか? >>306
Chapter 15. Expressions
https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.1
|
| 15.22.1。 整数ビット演算子&、^、|
| オペランドに対してバイナリ数値昇格が最初に実行されます。
|
| 5.6.2。バイナリ数値昇格
| いずれかのオペランドがdouble型であれば、他方はdouble型に変換されます。
| それ以外の場合、どちらかのオペランドがfloat型であれば、もう一方はfloat型に変換されます。
| それ以外の場合、どちらかのオペランドがlong型であれば、他方はlong型に変換されます。
| それ以外の場合、両方のオペランドがint型に変換されます。
ということなので今回の場合はlong型に変換されるはずよ
> longNumber = unsignedInt & 0x00000000FFFFFFFF
これは末尾にLをつけないとlongにならないかと
> int unsignedInt = -1;
> long longNumber = unsignedInt & 0xFFFFFFFFL;
上をコンパイルして逆コンパイルしたら下になった
> int unsignedInt = -1;
> long longNumber = (long)unsignedInt & 4294967295L;
なので型の変換はキャストっすね
Java 8ならInteger.toUnsignedLongというメソッドが用意されてるので
そっちが良いかも 型違いって言うのが、典型的なバグの条件
MISRA-C などでは、バグを防ぐために、
元から、型が異なるものを演算してはいけないというルール
「A 演算子 B」と書く場合、A, B は絶対に同じ型である必要がある
だから、この式の前に、絶対に同じ型にしているから、
型変換のルールに、疑問など生じない
>>308
に書いているような型変換のルールを、探してきて見直すような、
暗黙の型変換というのは、すごく単純な場合を除き、使わない方がいい
机上デバッグで、毎回、型変換のルールを見直して、
あれこれ議論しないといけないから面倒
しかも、開発メンバーが変わるたびに、説明・確認しないといけない
基本的に、言語仕様書を引っ張りだして、確認するようなものはダメ。
言語仕様書が必要な、コーディングをしてはいけない。
言語仕様書を見ない人もいるし、バグるだけ C言語はJavaより型付けが弱いんじゃないかな
ブーリアンもないし C言語には継承やクラスといった概念がないからね、比較すべきはC++ >>308
完璧な回答ありがとうございます。
私の知りたかったこと全てと、私の知らなかったことが入ってました。
L付けておきます。
残念なことに、java1.7なのです。androidなもので。 >>309
はーい。あざーっす。
オペランドの片側に(long)付けておきます。 今日からjavaはじめる
よろしくおまいら
初心者レベルだけどC言語から入ってjavaはじめるんだけど文字列結合とかキャストとか省略が許されててむずむずするわ 実装者が楽になる言語仕様がバージョンアップのなびに追加されるから
このせいで理解してない人が書いたクソコードが万延する諸刃の剣になってる >>316
本来の書き方をわかってて省略するのとそういうもんだと思って書くのとでは雲泥の差があるな booleanとBooleanが混在しまくってるコード見たときには気が狂いそうになった >>318
それだけじゃクソコードエピソードとしては弱いなぁ >>320
いきなりメソッドの初めで戻り値を変数に設定して、メソッド内で上書かずに最後でreturn。 Java最大の失敗はBean
これのせいで日本企業の所有するコードはパブリックアクセサだらけの地獄になった >>322
変更があった時に、その変数を弄べばいいだけになるから
割と良いと思うけど
逆の変更があったからあなたが見た状態になったのかも知れないし >>324
あなたの解釈だとコーディングミスを想定していない。 超初心者ですまん
メソッドを数値で分けて呼び出したいんだけど
今使ってるのがswitchでの分岐
int a;
switch(a){
case 1:
hoge();
break;
case 2:
hogee();
break;
}
みたいな
もっと効率の良いやり方があったら教えて欲しい >>326
幾つぐらい分岐するのかな?少ない場合はそっちの方が速いような気がするが。
分岐が沢山あるとか増え続ける可能性があるとか使う側で自由にセットしたいとかいう場合はまずinterface作っておいてその中にメソッドの定義を書いておく。
次にそれをimplementしたクラスを必要なだけ作っておき、HashMapにキーと共にインスタンスを入れておく。
後はそのHashMapからキーを使ってget()してメソッド呼ぶだけ。 c言語の入門書が一通り終わってオブジェクト指向も触りたくなったんでお勧めの入門書教えて下さい (´・ω・`)あのー
すべての文字列はStringクラスのインスタンスとしてあつかわれるっていう表現がうまくイメージできないの
じぶんなりにまとめたのは
String s = "こんにちは"
これは
String s = new String(こんにちは)
と同じでStringクラスをインスタンス化するときに、コンストラクタに対して引数としてこんにちはをわたしてる
そしてインスタンス化されたStringクラスのメンバ変数にこんにちはが代入された
同じようにすべての文字列は扱われるので、
すべての文字列はStringクラスのインスタンスとしてあつかわれると表現される
このイメージでいいの?
くわしいひとおしえてくれませんか? >>329
Stringはよく使うクラスだから、特別な表記があるだけ。 >>328
この本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014 >>325
可能性を上げてるだけなのに想定って
君の思う一番のコーディング以外は全てミスってことか? >>334
ダメな例だよ。
変数が変数たる存在を理解してない。 >>335
変数が理解するのかよw
説明できないなら自分ルールにとどめときな >>337
それが日本語だとすると
変数が理解してない
というように解釈できるぞ
正しい文章とは、誤解の余地がない文章だろう
そんなこといいから、そういったコーディングをした時に発生し得る問題を挙げろよ 普通なら「変数が変数たる理由を理解してない」っていうわな
まあ普通の人は各自で補って、それを論ったりはしないだろうけど あー定数やfinalでいいじゃんってことか
finalじゃないから>>324なんだろ
現場でやってれば、そういう問題集解いただけの発想だけでは居られない private staticメソッドを使う意味ってありますか?
オーバーロードしたpublic staticメソッドの受け先以外の使い方で >>341
staticメンバにしかアクセスしないprivateなメソッドはprivate staticで定義するんじゃないの long x
x = Integer.parseInt(str.substring(121,131))
文字列の一部から10桁のlong型の数値を取得しているのだけど
この取り出したい数値が大きい時に、 x=0 になってしまう不具合があるのだけどどうすればいいでしょうか スッキリわかるjava入門を電子書籍で読んでいるのですがラッパーの記述が何処にあるかわからないです
書籍をお持ちの方教えて頂けないでしょうか? >>347
ちょっと待て
おまえの本には巻末に索引が付いてないのか? >>348
ありがとうございます!
電子書籍なので気付かなかったです! 電子書籍なら何も考えずそのまま検索すれば良いだけのような? 電子書籍っていっても文字で情報を持ってるわけじゃないから検索はできない(普通に索引はある) 静的初期化ブロックでif文使ってるようなクラスのカバレッジを100%にすることって出来ますか? >>354 のようなのを見ると、どうして初心者は言葉足らずが多いのかと、いつも思うよ。 メソッドを作成し、呼び出せコリャ
メソッド名は命名規則にのっとって自由に決めてちょ。
値を定義済みの整数配列型と、整数型の値a, b を引数に渡して呼び出すと添え字 a の位置に b の値を挿入し整形済みの配列を戻り値として返すただし、元のデータは失われない
ただし、配列の長さは変化してよし。 自炊してもスキャンした画像をOCRソフトに読ませてテキスト作らせて画像と一緒にPDFファイルに組み込む事は可能。 ■ このスレッドは過去ログ倉庫に格納されています