Java入門・初心者質問スレ Part.7
レス数が950を超えています。1000を超えると書き込みができなくなります。
メールアドレスの正規表現
http://www.din.or.jp/~ohzaki/mail_regex.htm
ここでも正規表現で、何百行も書いているだろ
個人で作って、テスト・保守できるレベルじゃない >>883
内容を理解してないから行数みて無理だと思っちゃうんだよ
やってみなよ、案外簡単かもよ こんなの正規表現を使うか構文解析器作るかだからそんな難しくないよなあ。
なんで無理と決めつけるのか謎だ。
まあしかしこんなの何十年も前にライブラリ化されてとっくの昔に枯れた技術だろうから新規に作る必要性は普通はないだろうけどな。 性能を考慮したJavaのプログラミング
http://www.dd.e-mansion.com/~kumada/laboratory/column/java_perf.html#ITEM4_4
最近Javaを始めたのですが、この鉄則で今では変わった物ってありますか?
今どきVectorは使わない、とかはあるのでしょうが。 書いてる事の半分以上が時代遅れの間違いだらけの産物
プリミティブ型が速いのは当たり前で正確な小数点の計算をするにしても
特定の桁数までにしか対応できないし可読性も落ちる
速いからラッパークラスを全否定してる時点で論外
Arrayよりも配列を使うっていうのも同様でもはやただの馬鹿 配列がリストより速いのは事実
プリミティブ型がクラス型より速いのは事実
いずれも正しい
性能第一で考えるなら鉄則として妥当 例えばstatic private finalを付けてインライン化ってのは当時でも間違いだな。
つけてもつけなくても条件さえ合えば実行時にインライン化される。
仮にそれらが有効だったとしても記事がかかれるより5年ぐらい前の最初期のJITコンパイラぐらいだけかと。 デバッガでインスタンスの生成なんか逐一トレースしたら、絶対途中で挫折するわな。 性能を考慮するなら最初からJava使わない方が・・・ >>889
ブラウザでページ情報を出したら更新日時が 2003年8月14日 21:13:01 と出たので
内容が時代遅れなのは当然と言えば当然かもね。
約15年前。あの時は若かった。 色々な意見ありがとうございます。
確かにラッパーや可変長配列が遅いのは当然のことですね。
インライン化は意識しなくてもコンパイラがやってくれるのですか!
勉強になりました、ありがとうございます。 C++ の本にも書いてあるけど、
vector を使うよりも、君が配列で書いた方が速いっていう事は、あり得ない
コンピューターの最適化には、人間が書いたソースコードでは、絶対に勝てない
どれだけ一生懸命書いても、書けば書くほど遅くなるw >>898
> C++ の本にも書いてあるけど、
> vector を使うよりも、君が配列で書いた方が速いっていう事は、あり得ない
そうとは限らないと思うが?
C++ではそうなのかも知れないが。
> コンピューターの最適化には、人間が書いたソースコードでは、絶対に勝てない
最適化のアイデアは人間が考え付いてコンパイラやJITに実装しているわけで、勝てるかどうかで考えるなら引き分けか勝つかの二通りしかないのではないか?
相手はコンピュータのように見えても実は人間だから、その人と同じになるか上回ればいいだけだよね。 禿4にはstd::vectorは配列より遅いと書いてあるが。
そしてstd::arrayは配列に劣るところはないと書いてある。 拡張forで比較したら配列がリストより20倍以上速かったよ
あり得ないと言ってる人は性能が問題になるようなプログラミング経験がない知ったかぶりだと思った ここに別の言語の事情を書かれてもそうですかとしか言えない Javaの利点ってJVM上で動作するからプラットフォームを選ばないって言うけどさ、あれってどういうことなの
Webサーバー上でもWindowsのシェル上でも動くってことであってる? >>903
そう。
もちろん標準とは別のライブラリを使うのならそのライブラリがないと動かんが。(例えばAndroid用アプリとか) >>904
なるほとよくわかった
サンキューSEX ごめんまだよくわかってないわ
CだとなんでWebサーバー上で動作しないの
PHPだとなんでLinuxシェル上で動作しないのか
教えてくれ >>906
cはサーバ上で動くし
phpはシェル上で動くよ エッヘン、コンパイル後のクラスファイルはどんなOS上でも動くんだぞ!
ボクはスクリプト言語でいいです 急遽、Hibernate(JPA?)という物を扱う必要が出てきました。
タイプセーフなクライテリア、柔軟なネイティブSQLはなんとなくわかりますが、JPQLの利点って何でしょうか?
Javaに、@"や"""のような、複数行文字列を扱う仕組みはあるでしょうか?
切り刻まれたバラバラ死体のSQLゾンビによく効く武器はないでしょうか? あーあ終わったな
hibernateの癖の強さと難解さはORM一だからな
プロジェクトにガチでhibernateのプロフェッショナルが最低でも一人はいないとお前死んだわ ORMの利点ってオブジェクトの属性とカラム値の間のマッピングを勝手にやってくれることだけでしょ
それ以外は長期的にはデメリットしかない >>912
そんな気はしてた
先輩無断で会社来なくなってLINEも電話も出ないんだよね... 今は日本語のドキュメントあるからそれ見りゃ大体使い方わかるし
こういう例みたいにパフォーマンスを極端に気にしなければ悲観する必要はないと思うけどね
ttps://www.kaitoy.xyz/2017/02/23/how-hibernate-ruined-my-career/ 初歩的な質問をさせて頂いてもよろしいでしょうか?
System.out.println(31);
と表記した場合、
System.out.println("31");
と変換されてから、31、と表示される、
という理解でよろしいでしょうか? >>918
どこが間違っていますか?
例えば、
System.out.println("レベル" + 5);
という命令文の場合、
System.out.println("レベル" + "5");
System.out.println("レベル5");
というプロセスを経る、と本には書かれているのですが… 質問の際に「初歩的な質問ですが」とか「初心者です」等を書くのは絶対やってはいけないことだからね
そりゃあよろしくないよね System.out.println(31);
→ write(String.valueOf(31))
"レベル" + 5
→ "レベル5" >>920
何でですか?
>>921
ありがとうございます。
出来ればもう少し詳しくお願いしたいのですが… ヒント:入門書だけひたすら読んでわかるまで二度と書き込まない "レベル" + 5
「文字列型 + 数値型」の場合は、数値を文字列型に型変換して、
「文字列 + 文字列」つまり、文字列を連結するのじゃないか?
"レベル" + 5 → "レベル" + "5" → "レベル5"
まあ、検索して確かめて下さい
>>911
Ruby on Rails では、Active Record。
最初に、Rails をやっていないと、MVC の作り方がわからないだろ >>917
違うでしょ。
数値で受けとった後に
メソッドの中で文字列に変換してるのじゃね? 最終的には文字列だよね。
8を出力したら、カーソルが8個右に動いたりしない。 >>920
初心者です。初歩的な質問ですが、なぜですか? >>917
java.io.PrintStream のドキュメント見ればわかると思うが、int型一つを引数とする print() と println() メソッドはあるのでそれが呼ばれる。
文字列(というか String のインスタンス)をプラス記号で連結しようとした場合は StringBuilder クラス使って append() してから toString() で取り出した String のインスタンスになると考えて良い。
ただし最適化されて違う方法で連結されたりお互いに定数だったらコンパイル時に連結した結果がコードになるかも知れない。 >>892
ちょっと前のソースコードを見ると、
何でもfinalをしたりsuperを使ってたけども、
今は継承する必要が無ければ、特に意識しなくてもいいのかな? >>923
入門書に載ってなかったから聞いたんですが
>>925
そうですよね。俺も同じ理解です。
だとしたらprintln()メソッドの引数にint型の31が入ってきても、
一旦String型の"31"に変換されてから、プロンプトに出力されると思うんです。
>>927
ええ、だからその様子を>>917で表現したんですが
>>928
はい。
>>930
あれ?println()メソッドって、java.lang.*パッケージに属しているんじゃ… >>932
System.out は ProntStream クラスのインスタンス 猿でもわかる回答もらっておいてアホみたいに何回も質問繰り返す
ホームラン級の馬鹿に何度も触るな
ほんとこういうゴミは教えてもらうことが常識になってるから延々と調子に乗り続ける 答えてくれた方々ありがとうございました。
>>933
調べてみたら俺が間違っていました。失礼しました。
>>934
ちょっとその言い方は失礼じゃないですか?
ここは質問が出来るスレッドなんですよ ちょっと間違えた。8を出力したら→9を出力したら
ちょっとお遊び
abc
という内容のファイル abc.txt を作って、コマンドプロンプトから
type abc,txt とすると出力は
abc
ここでバイナリエディタを使って
61 62 63
を、
09 62 07
に変更すると、
type abc.txt で
b
と表示されてチャイムが鳴る。(半角スペース2つを全角スペースに書き換え) 究極クズ人間の35歳に関わらないように言っているのに
一部の教えたがりが餌付けしたのでキチガイが居座ってしまった例。 IP表示でいいよ。35歳は自演癖があるからそれだけで寄ってこない。 >>935
調べればすぐにわかることを何度も質問したら
苛立つ人もいるよ、わざとやってんのかなって思うし
巣に帰りなよ ちょうどスレ消費しそうだしいいね
全板ワッチョイ導入になったんだっけ? >>937
何だよその言い方は
>>939
必要があれば質問に来るし、無ければ来ない
>>940
分かりましたが、暴言は看過出来ません 35歳ってどこに行っても迷惑を掛けまくりだな
その上、自分理論だけを当てはめさせようとするから酷い
コテ付けたり消したりコウモリも相変わらずだし 文字列連結演算子使う事で暗黙の型変換が起こってるとか想像出来ないんだな 参考資料:カレンダープログラム一覧
・Java歴1年半Java Bronze持ち35歳が作成した最高傑作
https://ideone.com/JQbabV
・中学生が真似して作った贋作
https://ideone.com/WZmNs5
・プロ作
https://ideone.com/bLfLVt >>942
己が怠けるために他人を検索道具として扱うお前の行動は暴言よりも人の道を外れた行為だからな?
だから大勢がお前を看過しないで叩くんだよ。
本当他人を不快にさせるだけの存在と自覚してもう二度と来ないでくれ。
部屋に引きこもって生きながら社会的に死んでろ。 >>945
すっきりJavaに載ってないんだろうな。
自分で調べる気が皆無で本に載っていないことは知らなくて当然、という
マジ基地だからこいつ。 clone()について質問させてください
1 public class Xxx implements Comparable<Book>,Cloneable{
2 private String name;
3 private Date date;
4
5 public Book clone(){
6 Xxx x=new Xxx();
7 x.name=this.name;
8 x.date=(Date) this.date.clone();
9 }
10 }
7行目と異なり、8行目の右辺をキャストするのは何故でしょうか? >>952
clone()が返すのはDate型じゃないから >>953
>>954
ありがとうございます!!
プリミティブ型にキャストが必要ないのもそういうことなのですね。
頂いた情報をもとに、色々検索して調べてみます。
本当にありがとうございました。 プリミティブ型はそもそもキャストが必要ないということかしら >>956
キャストはプリミティブ型にもあるっしょ
ナローイング変換
long l = 10;
int i = (int)l;
ボクシング変換
Object o = 1;
int i = (int)o;
>>952のようなclone()の実装で
clone()を呼ばないなら型は同じなのでキャストは必要ない
clone()を呼ぶのはオブジェクトの状態を共有するのを避けるため
プリミティブ型のときは状態がないのでキャストは必要ない
参照型であってもString型のようにオブジェクトの状態が不変であれば
clone()を呼ばなくて良いしキャストも必要ない 仕事でJavaを使う(開発)のに最低限必要な知識
・eclipseの使い方を覚える
・htmlとjstlとjavascriptを当たり前のように使えるようにする
・SQLを当たり前のように使えるようにする(外部結合ぐらいわからないと話にならない)
・DB接続ツールの使い方を覚える
・メジャーなDB(oracle、db2、mysqlなど)間のデータタイプ、互換性のないSQL、演算子を覚える
・バージョン管理ツール(subversion、gitなど)やTracの使い方を覚える
・シェアが高いフレームワークの作法を覚える(開発が死んだFWも含む)
・シェアが高いORMの使い方と欠点を覚える
・シェアが高いビルドツールの記述作法を覚える
・unitテストの実装方法とやり方を覚える
・デザインパターンを覚える
・言語の超基本的な知識をつける
・クラスやインスタンスの違い
・singletonとstaticの使い分け
・インターフェースと抽象クラスの使い分け
・継承とコンポジションの使い分け
・ジェネリクス >>958
こういう内容の本があると売れそうですね だから皆、無料のRails チュートリアルをやる
MVC とか、開発の全工程・数十の技術を、広く浅く学べる 「Ruby ゴミ」でググると一番上に「Rubyはゴミすぎて使い物にならない」
っていうタイトルが出てくる
「Rails ゴミ」でググると上から8番目にやっぱり「Rubyはゴミすぎて使い物にならない」
っていうタイトルが出てくる
不朽の言語であるJavaスレでゴミを勧めるなキチガイ >>957
ありがとうございます。
多分、理解できたと思います。
今回のケースで3日調べていましたが
一番わかりやすくて助かりました
本当にありがとうござます!
テキストにもしっかりメモさせていただきました 基本的なことだと思うのですが、教えてください。
「インスタンスを一つだけ格納できるクラス」
public class Xxx{
privete Object o;
}
これは、Objectは全てのクラスの親クラスだから
Objectで型指定したoは、必ずインスタンスでなければならない
という意味合いと理解していいのでしょうか?
いつもすみません、よろしくお願いします。 すみません。
問題で、「インスタンスを一つだけ格納できるクラスを作りなさい」という問いがあり
その解答が
public class Xxx{
privete Object o;
}
というコードになっているのですが、
このコードが、どうしてインスタンスを
一つだけ格納できるクラスとなっているのか
oがインスタンスだけに限定されていて
プリミティブ型が入ることがないのはどうしてなのか
という疑問がありまして、質問させてもらいました おまえさぁ、わざとやってんだろうけど少しはググったら?
なんでググって3秒でわかることを毎回ダラダラとくだらない長文書いて無駄にスレ消費すんだ?
なめてんのか? >>967
(^ω^)ペロペロ
お尻の穴を舐めてあげるね
君、チンカス臭いよ >>966
プリミティブ型とクラス型は継承関係になくて
Object型はクラス型なのでObject型にプリミティブ型が入ることはないっすよ
Object o = 1;
とした場合はオートボクシングでラッパークラスに変換される
Object o = Integer.valueOf(1);
コンパイル時にはこういうコードに変換される
オートボクシングがなかったJava 1.4以前は
手作業でObject o = Integer.valueOf(1);こう書かなくてはいけなくて
なかなか地獄だったよ >>969
早朝にご指導いただきましてありがとうございます。
よく理解できました。すっきりしました、ありがとうございます!
これからもよろしくお願いいます! いつもすみません。教えてくださると幸いです><
1 public class Row{
2 int i;
3 Type type;
4
5 this.i++;
6
7 switch(this.type){
8 case a:
9 if(count<100) return null;
10 break;
11
12 case b:
13 if(count<110) return null;
14 break;
15 }
16 this.count=0;
17 }
5行目、16行目のcountは、thisをつけていますが
9行目、13行目のcountにはthisがついていません
5,16行目のthis.countもcountも同じスタック領域を使ってて
同じ値になっていると思うのですが、なぜthisをつけたりつけなかったりするのでしょうか? public class X {
public static void main(String[] args) {
thisVal val = new thisVal() ;
val.showCount(1) ;
}
}
public class thisVal {
int count = 1 ;
public void showCount(int count) {
count++ ;
System.out.println(this.count);
System.out.println(count);
}
} >>973
そいつは35歳というスレに住み着いているキチガイで、
質問するのが目的じゃなくて、わざと叩かれるようなことをして
構ってもらうのが目的なんで、相手にしないでください。 971です。一部間違えていました。質問するのが目的です。
自分でも考えたり調べたりしているのですが、しっかり理解できてないようで、すみません。
それと、お気に触ったり、目障りなことはお許しください。教えてくださる方によろしくお願いいたします。
1 public class Row{
2 int count=0;
3 Type type;
4
5 this.count++;
6
7 switch(this.type){
8 case a:
9 if(count<100) return null;
10 break;
11
12 case b:
13 if(count<110) return null;
14 break;
15 }
16 this.count=0;
17 }
5行目、16行目のcountは、thisをつけていますが
9行目、13行目のcountにはthisがついていません
5,16行目のthis.countもcountも同じスタック領域を使ってて
同じ値になっていると思うのですが、なぜthisをつけたりつけなかったりするのでしょうか >>975
質問するのが目的なら、質問した時点で目的は果たしたということ? これが
「もう初心者は脱した」
「Javaブロンズ持ってます」
「リフレクション以外は完璧にマスター」
と豪語している大人の質問かね...? >>944
ふざけんな
回答が雑なのも悪い
>>945
はあ?俺のレスに書いてあるだろうが
>>946
余計なことを書くな
>>947
別のスレに書けよ ここに書くな
>>948
ここに書くな
>>951
関係ねえよ しばらく荒れてただろうが
>>974
俺の書き込みじゃねえよ馬鹿 レス数が950を超えています。1000を超えると書き込みができなくなります。