★★Java質問・相談スレッド184★★ (371レス)
上下前次1-新
72: (ワッチョイ 4ead-+H9L) 2022/11/23(水)17:42 ID:gB3NJ+gJ0(3/3) AAS
"AAA".replaceAll("(.*)", "($1)")
これが
(AAA)()
こうなった
末尾の空文字列とマッチしてるっぽい
73(1): (テテンテンテン MM8e-U8jK) 2022/11/23(水)18:04 ID:VU/69mxiM(1/3) AAS
変な動作だけど多分それで正しい
任意の一文字とそれの0回以上の繰り返し -> ABC にマッチ
.* で0文字にもマッチ -> 末尾のnullにマッチ
で2回マッチするっぽい
PCREとかJavaScriptとかも同様の動作をするよ
正直、".*$" でも2回マッチするのは納得できないけどw
for (String regex: new String[]{".*", "^.*", ".*$"}) {
var matcher = Pattern.compile(regex).matcher("ABC");
System.out.println(matcher);
matcher.results().forEach(mr -> System.out.println(mr.group()));
}
74: (テテンテンテン MM8e-U8jK) 2022/11/23(水)18:12 ID:VU/69mxiM(2/3) AAS
ごめん、>>73の"null"って書いたのは空文字のことね
"\0" ではないので念のため
75: (テテンテンテン MM8e-U8jK) 2022/11/23(水)18:24 ID:VU/69mxiM(3/3) AAS
なんどもすまん
落ち着いて考えたら ".*" と ".*$" で動作が変わったらおかしいね
".*$" での動作が納得できないは取り消します
76: (アウアウウー Sa3b-stRS) 2022/11/24(木)00:25 ID:+F4Yf35ia(1) AAS
試してくれてありがとう
何か指定のしかたが悪いのかと思ってあがいてみたけどやっぱりダメだった
そういう仕様なんだと思うことにします
77: (ワッチョイ ef4f-95HW) 2022/11/24(木)08:33 ID:FTZ0YYIj0(1) AAS
Ruby でも、2回マッチする
puts 'abc'.gsub( /.*/, 'def' )
出力
defdef
78: (ワッチョイ ff10-RPwI) 2022/11/27(日)09:21 ID:t+XNeMLd0(1) AAS
久々にスレ見たらこんな頭の悪い問答を何時間も続ける低次元っぷりに絶望するゴミスレ
79: (テテンテンテン MM8f-jpzT) 2022/12/15(木)22:19 ID:vw4fefRqM(1) AAS
JFrameのボダンを押下して表示したダイアログボックスから画像を選択し、その選択した画像上でマウスをクリックしながらドラッグした範囲に四角形を描画したいとおもっているのですが、四角形が描画されません。
何かおかしいでしょうか?
外部リンク:pastebin.com
80: (ワッチョイ 7f10-KKgq) 2022/12/16(金)00:30 ID:gNEBwfST0(1) AAS
お前の頭
81: (ワッチョイ 6aad-e5AJ) 2022/12/17(土)00:34 ID:toQsXtnK0(1) AAS
俺の顔
82: (ワッチョイ ea55-ZR1D) 2022/12/21(水)18:21 ID:RdDYZJi/0(1/2) AAS
『良いコード/悪いコードで学ぶ設計入門』という本がJavaを使って、
オブジェクト指向プログラミングの説明をしているのですが、非常に
わかりやすくて勉強になっています。
このような本は他にないでしょうか?
83(1): (ワッチョイ 3b01-ZR1D) 2022/12/21(水)18:58 ID:ye8WaQKn0(1) AAS
本じゃないけど、boostのソースはためになるな。
84: (ワッチョイ ea55-ZR1D) 2022/12/21(水)19:52 ID:RdDYZJi/0(2/2) AAS
>>83
ありがとうございます。
ソースコードはハードルが高いです。
85(1): (ワッチョイ ea55-ZR1D) 2022/12/22(木)10:24 ID:tmbBFS3W0(1/5) AAS
class A {
■■int m1() {
■■■■return 100;
■■}
■■int m2() {
■■■■return 200;
■■}
}
class B extends A {
@Override
■■int m1() {
■■■■return super.m1() + 20;
■■}
■■int m2() {
■■■■return super.m2() + 10;
■■}
}
86(1): (ワッチョイ ea55-ZR1D) 2022/12/22(木)10:26 ID:tmbBFS3W0(2/5) AAS
class A {
■■int m1() {
■■■■return 100;
■■}
■■int m2() {
■■■■return m1();
■■}
}
class B extends A {
@Override
■■int m1() {
■■■■return super.m1() + 20;
■■}
■■int m2() {
■■■■return super.m2() + 10;
■■}
}
87(2): (ワッチョイ ea55-ZR1D) 2022/12/22(木)10:34 ID:tmbBFS3W0(3/5) AAS
>>86
訂正します:
class A {
■■int m1() {
■■■■return 100;
■■}
■■int m2() {
■■■■return 2 * m1();
■■}
}
class B extends A {
@Override
■■int m1() {
■■■■return super.m1() + 20;
■■}
■■int m2() {
■■■■return super.m2() + 10;
■■}
}
88: (ワッチョイ ea55-ZR1D) 2022/12/22(木)10:35 ID:tmbBFS3W0(4/5) AAS
>>85
のように親クラス A を変更した場合、クラス B の m2 メソッドを実行すると、
250 がリターンされると本に書いてあります。
A の変更前は、 210 が返されていたので、リターンされる値が変わってしまったことになります。
A の変更後、このあたりの仕組み、ルールがよく分かりません。
B の m2() を実行すると、 A の m2() のリターン結果に 10 足した値がリターンされる。
A の m2() が実行されると、 B の m1() のリターン結果を2倍した値がリターンされる。
ようですが、どういうルールに従っている結果でしょうか?
89: (ワッチョイ ea55-ZR1D) 2022/12/22(木)10:36 ID:tmbBFS3W0(5/5) AAS
訂正します:
>>87
のように親クラス A を変更した場合、クラス B の m2 メソッドを実行すると、
250 がリターンされると本に書いてあります。
A の変更前は、 210 が返されていたので、リターンされる値が変わってしまったことになります。
A の変更後、このあたりの仕組み、ルールがよく分かりません。
B の m2() を実行すると、 A の m2() のリターン結果に 10 足した値がリターンされる。
A の m2() が実行されると、 B の m1() のリターン結果を2倍した値がリターンされる。
ようですが、どういうルールに従っている結果でしょうか?
90(1): (テテンテンテン MMe6-WNmf) 2022/12/22(木)12:07 ID:syRoAR41M(1/2) AAS
各メソッドを
int m1() { // class A
System.out.println("A.m1()");
return 100;
}
の様にして、実行してみれば一目瞭然
System.out.println(new A().m2());
->
A.m2()
A.m1()
200
System.out.println(new B().m2());
->
B.m2()
A.m2()
B.m1()
A.m1()
250
91(1): (テテンテンテン MMe6-WNmf) 2022/12/22(木)12:25 ID:syRoAR41M(2/2) AAS
まあ少し分かりにくいんだけど、
クラスBのインスタンスを生成してメソッドB.m2()からクラスAのメソッドA.m2()が"super.method名()"で呼ばれたとして、
その時、クラスAのメソッド(A.m2())中でもthisはやっぱり、当然に、クラスBのインスタンスのままなんですよ(勝手にインスタンスが生まれ変わったりはしない)
で、クラスBのインスタンスに対してm1()呼び出しをするので、B.m1()が呼ばれます
先ほどの様に、各メソッドに
System.out.println(this.getClass().getName());
でも追加してみればわかるかと
92(2): (ワッチョイ be10-e5AJ) 2022/12/23(金)18:47 ID:TsC3S0cB0(1) AAS
>90
0点の回答。馬鹿。二度と書き込まないように。
>91
30点の回答。アホ。二度と書き込まないように。
93: (ワッチョイ aa7c-e5AJ) 2022/12/23(金)18:51 ID:o+ONuUnd0(1) AAS
>>92が100点の回答しろよw
無能なんだろうけどw
94: (ワッチョイ 3bad-s0Sd) 2022/12/25(日)21:24 ID:fbG5Klx70(1) AAS
>>92にはこれは無理だな
95: (ワッチョイ b310-dxp0) 2022/12/25(日)21:35 ID:xTMUZmUe0(1) AAS
100点の回答教えて欲しいならもっとへりくだらないと
煽って回答引き出そうとか幼稚園児か?アホ
96: (アウアウウー Sa1f-MkkF) 2022/12/25(日)23:40 ID:8AzSKsIAa(1) AAS
>>87
B.m2() を呼ぶと、super で、A.m2()が呼ばれる
この時、this が、B インスタンスから、
その中のA インスタンス部分を指すように変わる
だから、A.m2()を呼ぶと、
B.m1()ではなく、A.m1()が呼ばれる
97: (ワッチョイ b310-dxp0) 2022/12/26(月)00:11 ID:bZAU6rX30(1/2) AAS
0点。逝ってよし!
98(1): (ワッチョイ b310-dxp0) 2022/12/26(月)00:52 ID:bZAU6rX30(2/2) AAS
0点どころかおもっくそ嘘教えてるしw
マイナス1億点
アホバカ
99: (ワッチョイ cf9c-azuO) 2022/12/26(月)08:09 ID:aUjbdkr90(1/2) AAS
そういえば某大手SIerのコーディング規約で「親クラスのメソッドを呼ぶときはsuperを明示すること」ってあったなあ
メソッド定義が自クラスでは親クラスに書かれていることが分かりやすくなるとかなんとか
案の定、子クラスでメソッドをオーバーライドしても呼ばれないというトラブルが続発した
本当に親クラスのメソッド呼び出しに固定したいとき以外は super 書かないほうがいいね
100(1): (ワッチョイ 637c-dxp0) 2022/12/26(月)11:12 ID:bU1T9eUn0(1) AAS
そもそも親クラスのメソッドを使いたいのにオーバーライドするって
設計がおかしいのでは・・・
101: (ワッチョイ cf9c-azuO) 2022/12/26(月)13:59 ID:aUjbdkr90(2/2) AAS
>>100
親クラスのメソッドを使いたいわけではない
開発初期に子クラスでオーバーライドしない場合は super を付けろという規約だった
当然、後から子クラスでオーバーライドしなければならないような変更が発生することもある
そうなったときに、super を明示するという規約が仇になったという話
上下前次1-新書関写板覧索設栞歴
あと 270 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.030s