次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.10
https://mevius.5ch.net/test/read.cgi/tech/1585721355/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
Java入門・初心者質問スレ Part.11
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウウー Sa07-jGB0)
2021/06/29(火) 11:42:34.74ID:iGYT4fi4a607デフォルトの名無しさん (ブーイモ MM7f-5+bU)
2022/03/09(水) 21:18:10.88ID:y0Y93q++M Javaのバージョン上げるだけとかならそれなりに出来ることありそうだけど
それ以外ならテスター要員だろうな
それ以外ならテスター要員だろうな
608デフォルトの名無しさん (ワッチョイ 3b32-84yK)
2022/03/10(木) 08:01:42.64ID:Uh43IBqs0 到達不能コードのコンパイルエラーについて質問です
JavaSE11Silver黒本の3章18問に下記のコードの結果を答える問題があり、答えは「Cが表示される」なのですが
このときnum = 10ならば必ずCが表示され、Dは絶対に表示されないため
到達不能コードでコンパイルエラーが発生する気がするのですが
ifの判定文まで到達可能ならば例えばif(false)であってもその中身は到達不能コードには当たらないのでしょうか?
int num = 10;
if (num == 100)
System.out.println("A");
else if (10 < num)
System.out.println("B");
else
if (num == 10)
System.out.println("C");
else
if (num == 10)
System.out.println("D");
JavaSE11Silver黒本の3章18問に下記のコードの結果を答える問題があり、答えは「Cが表示される」なのですが
このときnum = 10ならば必ずCが表示され、Dは絶対に表示されないため
到達不能コードでコンパイルエラーが発生する気がするのですが
ifの判定文まで到達可能ならば例えばif(false)であってもその中身は到達不能コードには当たらないのでしょうか?
int num = 10;
if (num == 100)
System.out.println("A");
else if (10 < num)
System.out.println("B");
else
if (num == 10)
System.out.println("C");
else
if (num == 10)
System.out.println("D");
609デフォルトの名無しさん (ワッチョイ 9fd1-OYGG)
2022/03/10(木) 08:13:43.65ID:bRBcjGmR0 あくまで補助機能だからね
判断はご自分でとうぞ
判断はご自分でとうぞ
610デフォルトの名無しさん (テテンテンテン MM7f-VCKW)
2022/03/10(木) 08:25:16.02ID:9QpyAq00M そういう仕様のはず
テスト的に処理の冒頭で例外を起こしたいとき if (true) throw Exception(); みたいに書ける
テスト的に処理の冒頭で例外を起こしたいとき if (true) throw Exception(); みたいに書ける
611デフォルトの名無しさん (ワッチョイ 3b32-84yK)
2022/03/10(木) 09:12:34.07ID:Uh43IBqs0 >>609-610
返答ありがとうございます
自分でコードを書けばエラーが発生するかどうかは明らかですが
試験でunreachable codeが発生するかどうか問われた時は内容次第なので
状況毎に暗記する必要があるということですか?
返答ありがとうございます
自分でコードを書けばエラーが発生するかどうかは明らかですが
試験でunreachable codeが発生するかどうか問われた時は内容次第なので
状況毎に暗記する必要があるということですか?
612デフォルトの名無しさん (ワッチョイ 9fd1-OYGG)
2022/03/10(木) 09:18:54.74ID:bRBcjGmR0 解らない問題に答える必要あるの?
経験者むけサービスかもよ?
経験者むけサービスかもよ?
613デフォルトの名無しさん (ワッチョイ 2bf0-ZqaA)
2022/03/10(木) 10:15:57.73ID:Sbdp6iYa0 素直に言語仕様読め
ttps://docs.oracle.com/javase/specs/index.html
ttps://docs.oracle.com/javase/specs/jls/se17/html/jls-14.html#jls-14.22
> 14.22. Unreachable Statements
>
> It is a compile-time error if a statement cannot be executed because it is unreachable.
>
> This section is devoted to a precise explanation of the word "reachable."
> The idea is that there must be some possible execution path
> from the beginning of the constructor, method, instance initializer, or static initializer
> that contains the statement to the statement itself.
> The analysis takes into account the structure of statements.
> Except for the special treatment of while, do, and for statements
> whose condition expression has the constant value true,
> the values of expressions are not taken into account in the flow analysis.
ttps://docs.oracle.com/javase/specs/index.html
ttps://docs.oracle.com/javase/specs/jls/se17/html/jls-14.html#jls-14.22
> 14.22. Unreachable Statements
>
> It is a compile-time error if a statement cannot be executed because it is unreachable.
>
> This section is devoted to a precise explanation of the word "reachable."
> The idea is that there must be some possible execution path
> from the beginning of the constructor, method, instance initializer, or static initializer
> that contains the statement to the statement itself.
> The analysis takes into account the structure of statements.
> Except for the special treatment of while, do, and for statements
> whose condition expression has the constant value true,
> the values of expressions are not taken into account in the flow analysis.
614デフォルトの名無しさん (ワッチョイ 3b32-84yK)
2022/03/10(木) 10:31:00.79ID:Uh43IBqs0615デフォルトの名無しさん (アークセー Sx4f-kpC5)
2022/03/10(木) 10:43:42.56ID:gMDgr+Ggx616デフォルトの名無しさん (テテンテンテン MM7f-VCKW)
2022/03/10(木) 14:00:24.98ID:Pbl5vAiZM >>611
そんな細かいところまで覚えなくても試験受かるよ
そんな細かいところまで覚えなくても試験受かるよ
617デフォルトの名無しさん (ワッチョイ ef95-6iqn)
2022/03/11(金) 20:56:48.66ID:dOzyUYLo0618デフォルトの名無しさん (ワッチョイ 691d-pPbi)
2022/03/12(土) 17:05:26.26ID:d2Iz9kMm0 質問です
https://paiza.io/projects/b4a4wtvE8DNSwj1jy0ciTg
上のコードの7行目の出力結果がab, aになる理由が分かりません
str2はstr1と同じものを参照しているので、str1の参照先が変われば
str2の参照先も変わると思うのですが
https://paiza.io/projects/b4a4wtvE8DNSwj1jy0ciTg
上のコードの7行目の出力結果がab, aになる理由が分かりません
str2はstr1と同じものを参照しているので、str1の参照先が変われば
str2の参照先も変わると思うのですが
619デフォルトの名無しさん (ワッチョイ 3d5a-Esq5)
2022/03/12(土) 17:23:02.54ID:UYsDHEDe0 こういうC/C++のポインタ、文字列定数、newとかの理解なしにJavaだけやろうとすると間接参照の構造が理解できなくて分からんくなるよね
JavaのStringクラスはイミュータブルといって内容を途中で変更しないポリシーになっている
正しいかは知らんけど下記のような意味になる
String str1=new String("a");
String str2 = str1;
str1=new String(str1 + "b");
文字列結合演算子は新しいStringクラスを生成する
str1とstr2は結果として異なるものを指しているのでab,aとなる
JavaのStringクラスはイミュータブルといって内容を途中で変更しないポリシーになっている
正しいかは知らんけど下記のような意味になる
String str1=new String("a");
String str2 = str1;
str1=new String(str1 + "b");
文字列結合演算子は新しいStringクラスを生成する
str1とstr2は結果として異なるものを指しているのでab,aとなる
620デフォルトの名無しさん (ワッチョイ c602-WCXV)
2022/03/12(土) 17:57:26.72ID:GGUhV+6j0 str2
str2 = str1 の時点で新たな領域を確保してるんじゃないかな
str2 = str1 の直後にデバッガで str1 の値を変更しても st2 の値が変わらない
文字列の足し算をしたときに str1 が別の領域を指すようになるというのはその通りだけども
str2 = str1 の時点で新たな領域を確保してるんじゃないかな
str2 = str1 の直後にデバッガで str1 の値を変更しても st2 の値が変わらない
文字列の足し算をしたときに str1 が別の領域を指すようになるというのはその通りだけども
621デフォルトの名無しさん (ワッチョイ c602-WCXV)
2022/03/12(土) 18:20:39.50ID:GGUhV+6j0 間違いでした。str1 に文字を足した時点で str1 が別の領域を指すようになるが正しいですね。失礼しました。
622デフォルトの名無しさん (テテンテンテン MMe6-1c6A)
2022/03/12(土) 19:13:53.68ID:Pwg7r5DPM > 同じものを参照しているので、str1の参照先が変わればstr2の参照先も変わる
これが誤解
参照先が一緒に変わることはない
もしそんなことが起こる言語仕様なら、一時的に同じものを参照させていたけど、後からまた別々のものを参照させたい、という操作ができなくなってしまう
これが誤解
参照先が一緒に変わることはない
もしそんなことが起こる言語仕様なら、一時的に同じものを参照させていたけど、後からまた別々のものを参照させたい、という操作ができなくなってしまう
623618 (ワッチョイ 691d-pPbi)
2022/03/12(土) 21:48:07.71ID:d2Iz9kMm0 >>619-622
回答ありがとうございます
>>618のコードの4行目ではstr1とstr2は同じアドレスを参照していて、
6行目でstr1の参照先だけが変わり、str2は変わらず同じアドレスを指している
という理解でいいですかね?
https://paiza.io/projects/5peEJB86LZ16u2cgEFvEgA
int型変数の場合も同じような挙動になるようですね
回答ありがとうございます
>>618のコードの4行目ではstr1とstr2は同じアドレスを参照していて、
6行目でstr1の参照先だけが変わり、str2は変わらず同じアドレスを指している
という理解でいいですかね?
https://paiza.io/projects/5peEJB86LZ16u2cgEFvEgA
int型変数の場合も同じような挙動になるようですね
624デフォルトの名無しさん (ワッチョイ 2287-9pEf)
2022/03/13(日) 12:26:10.29ID:1xjzmzRe0626デフォルトの名無しさん (ワッチョイ 7e02-oq0u)
2022/03/14(月) 22:21:25.59ID:0OByol6E0 スレチだったら申し訳ないのですが、imgui-javaをM1 macで使うことって可能でしょうか?
githubのissueに「I won't support it macOS arm64」とあるので既にダメそうではあるのですが…
issueで報告されているエラーではなくCan't load library: libimgui-java64.dylibというエラーが出たのみだったのでどうにか解決できないかなと感じてます
githubのissueに「I won't support it macOS arm64」とあるので既にダメそうではあるのですが…
issueで報告されているエラーではなくCan't load library: libimgui-java64.dylibというエラーが出たのみだったのでどうにか解決できないかなと感じてます
627デフォルトの名無しさん (ワッチョイ 7e02-ZFfG)
2022/03/15(火) 08:26:03.34ID:7JI7znBe0 ↑ですが解決しました
お騒がせいたしました
お騒がせいたしました
628デフォルトの名無しさん (ワッチョイ 095f-vveo)
2022/03/15(火) 17:44:34.36ID:xLirFsOB0 try{
処理
} catch(ArrayIndexOutOfBoundsException e){
処理
} catch (IOException e) {
処理
} finally{
処理
}
上記のプログラムで
ArrayIndexOutOfBoundsExce
IOException
を問わずexceptionが発生したら実行したい処理があります
何か良い方法はありませんでしょうか
catchは処理の都合でわざと分けています
処理
} catch(ArrayIndexOutOfBoundsException e){
処理
} catch (IOException e) {
処理
} finally{
処理
}
上記のプログラムで
ArrayIndexOutOfBoundsExce
IOException
を問わずexceptionが発生したら実行したい処理があります
何か良い方法はありませんでしょうか
catchは処理の都合でわざと分けています
629デフォルトの名無しさん (テテンテンテン MMe6-1c6A)
2022/03/15(火) 18:25:38.65ID:Cmsuiz4vM 共通処理をprivateメソッドに切り出して双方から呼ぶ
630デフォルトの名無しさん (ワッチョイ 02b1-GsTO)
2022/03/15(火) 20:51:31.95ID:2TepCKpy0 >>628
3個目のcatchにException eとすれば?
3個目のcatchにException eとすれば?
631デフォルトの名無しさん (ワッチョイ 7ea7-cs1e)
2022/03/15(火) 21:13:33.30ID:w32P7zDl0632デフォルトの名無しさん (ワッチョイ 095f-vveo)
2022/03/15(火) 22:12:25.19ID:xLirFsOB0633デフォルトの名無しさん (ワッチョイ 691d-pPbi)
2022/03/15(火) 22:28:50.19ID:7LI6bjmj0634デフォルトの名無しさん (ワンミングク MMd9-P3eH)
2022/03/16(水) 00:10:57.72ID:94N7KM3GM finallyで例外発生判定して処理をいれるかな
635デフォルトの名無しさん (ワッチョイ 7ea7-cs1e)
2022/03/16(水) 09:42:24.80ID:sDB+P2C+0636デフォルトの名無しさん (ブーイモ MMa2-iDiS)
2022/03/16(水) 10:14:39.11ID:Cxe0x8xaM まぢか
637デフォルトの名無しさん (ワッチョイ 7979-8qwV)
2022/03/16(水) 10:29:07.64ID:DqmOUHXz0 } catch(ArrayIndexOutOfBoundsExce | IOException e){
if(e instanceof ArrayIndexOutOfBoundsExce){
} else if(e instanceof IOException){
}
/*
共通の処理
*/
}
if(e instanceof ArrayIndexOutOfBoundsExce){
} else if(e instanceof IOException){
}
/*
共通の処理
*/
}
638デフォルトの名無しさん (テテンテンテン MMe6-1c6A)
2022/03/16(水) 10:57:20.37ID:vuvQrc+kM いやこんな問題にフラグはやめようよ…
脱初心者しようぜ
if文なしで表現できるコードにif文を使わないのは可読性維持のセオリー
関数の各種メトリクスが改善する
finallyの中に置くのもやめよう
それが本質的にfinallyに書くべき処理でない場合は書かないでくれ
その例外処理の中でさらに例外が出たときに、本来必ず実行されるはずだったfinallyのリソース解放などが実行されなくなってしまう
脱初心者しようぜ
if文なしで表現できるコードにif文を使わないのは可読性維持のセオリー
関数の各種メトリクスが改善する
finallyの中に置くのもやめよう
それが本質的にfinallyに書くべき処理でない場合は書かないでくれ
その例外処理の中でさらに例外が出たときに、本来必ず実行されるはずだったfinallyのリソース解放などが実行されなくなってしまう
639デフォルトの名無しさん (テテンテンテン MMe6-1c6A)
2022/03/16(水) 11:02:02.05ID:vuvQrc+kM 変数の数を減らす、if文を減らす、どっちも改善の定石なんよ
フラグは手っ取り早く動くコードを書くのに便利だけどgotoのようにスパゲッティを招く諸刃の剣
フラグは手っ取り早く動くコードを書くのに便利だけどgotoのようにスパゲッティを招く諸刃の剣
640デフォルトの名無しさん (ワッチョイ 7ea7-cs1e)
2022/03/16(水) 14:15:12.53ID:sDB+P2C+0 >>637,639
え、catchするときって、複数の例外ってできたんだ…
(本当に知らなかった)
それができるのならそっちを選ぶかな
639が言うようにできるだけ変数を減らしたりするのがベターだろうけど、catch( MyEx | TestEx e ) 的なものができること自体知らなかったからC#みたいに別の例外でラップして再送するか、finallyで分岐させるかしか思いつかなかったわ…
複数例外をcatchできると知っていたらそっちの方を書いていたかも
え、catchするときって、複数の例外ってできたんだ…
(本当に知らなかった)
それができるのならそっちを選ぶかな
639が言うようにできるだけ変数を減らしたりするのがベターだろうけど、catch( MyEx | TestEx e ) 的なものができること自体知らなかったからC#みたいに別の例外でラップして再送するか、finallyで分岐させるかしか思いつかなかったわ…
複数例外をcatchできると知っていたらそっちの方を書いていたかも
641デフォルトの名無しさん (ワッチョイ 7ea7-cs1e)
2022/03/16(水) 14:16:57.11ID:sDB+P2C+0 640の追記でJava SE 7以降で追加されたやつっぽいね
https://docs.oracle.com/javase/jp/7/technotes/guides/language/catch-multiple.html
https://docs.oracle.com/javase/jp/7/technotes/guides/language/catch-multiple.html
642デフォルトの名無しさん (ワッチョイ 0202-WCXV)
2022/03/16(水) 16:03:46.18ID:FemHJp4N0 >>640
一種の多態性だね
一種の多態性だね
643デフォルトの名無しさん (テテンテンテン MMe6-1c6A)
2022/03/16(水) 16:29:45.19ID:SGyptLP1M catchは処理の都合でわざと分けてるって言うからマルチキャッチは知ってて使えないケースのお題かと思ったわ
privateメソッドに切り出すのは何が嫌なんだろ
複雑化する感覚があるのかな
privateメソッドに切り出すのは何が嫌なんだろ
複雑化する感覚があるのかな
644デフォルトの名無しさん (ワッチョイ c201-Ruah)
2022/03/16(水) 17:09:10.32ID:3w6VtJRl0 >>640
C#も似たようなことできるよ
C#も似たようなことできるよ
645デフォルトの名無しさん (ブーイモ MM76-iDiS)
2022/03/16(水) 17:35:36.75ID:V6fjUOMTM サンプルだからなのかもしれないが
IOExceptionとIndexOutOfBoundsの2つだけを一つのcatchにまとめるのは種類が違いすぎてかなり違和感がある
IOExceptionとIndexOutOfBoundsの2つだけを一つのcatchにまとめるのは種類が違いすぎてかなり違和感がある
646デフォルトの名無しさん (ワッチョイ 0232-oXSz)
2022/03/16(水) 17:45:45.22ID:prpzjaFx0 JavaSE11から存在する単一のソースファイルならばコンパイルを介さずに
>java Main.javaで直接起動できる機能についてお聞きします
下記のページの解説だとソースファイルと同名のクラスファイルが既に存在している場合には
エラーが出るとあるのですが、自分で試してみたところMain.classが既に存在する場合でも
>java Main.javaで直接起動してもエラーが出ずに正常に終了します
自分の解釈が悪いのか仕様が変更になったのか教えて欲しいです
https://openjdk.java.net/jeps/330
>java Main.javaで直接起動できる機能についてお聞きします
下記のページの解説だとソースファイルと同名のクラスファイルが既に存在している場合には
エラーが出るとあるのですが、自分で試してみたところMain.classが既に存在する場合でも
>java Main.javaで直接起動してもエラーが出ずに正常に終了します
自分の解釈が悪いのか仕様が変更になったのか教えて欲しいです
https://openjdk.java.net/jeps/330
647デフォルトの名無しさん (ワッチョイ 7ea7-cs1e)
2022/03/16(水) 18:11:27.06ID:sDB+P2C+0 >>644
みたいだね
みたいだね
648デフォルトの名無しさん (ワッチョイ 8dba-8k9/)
2022/03/17(木) 17:52:11.09ID:efbJz0WM0 ttps://pastebin.com/auZDmFp7
矢印キー(上か下)を押下した際に、道路の幅がズレる(滑らかなでない)状況です。
y座標の計算に問題があると思うのですが、どのように修正したらいいのでしょうか?
drawPolygon()は整数をとるのでdoubleが使えない状態です。
矢印キー(上か下)を押下した際に、道路の幅がズレる(滑らかなでない)状況です。
y座標の計算に問題があると思うのですが、どのように修正したらいいのでしょうか?
drawPolygon()は整数をとるのでdoubleが使えない状態です。
649デフォルトの名無しさん (ワッチョイ 7e02-xvvU)
2022/03/18(金) 22:04:29.65ID:q2/HZ4bm0 ↑もう見られない
650デフォルトの名無しさん (ワッチョイ 51ba-Ww1w)
2022/03/19(土) 11:34:53.69ID:BPQikdeF0651デフォルトの名無しさん (ワッチョイ 291d-e2vN)
2022/03/19(土) 15:33:58.19ID:4fsbAAf/0 Threadクラスについて質問です
volatile修飾子とsynchronized修飾子の使い分けがよく分かりません
どなたか教えて頂けませんか?
volatile修飾子とsynchronized修飾子の使い分けがよく分かりません
どなたか教えて頂けませんか?
652デフォルトの名無しさん (オッペケ Sr85-GPPx)
2022/03/19(土) 17:01:31.57ID:HATaEOMdr volatileは排他制御されない。スレッド間でのメモリの同期はとられる。
synchronizedは排他制御される。
synchronizedは排他制御される。
653デフォルトの名無しさん (オッペケ Sr85-GPPx)
2022/03/19(土) 17:04:40.42ID:aNaAXnkzr このあたりがわかりやすいかも。
https://blog.j5ik2o.me/entry/20110220/1298215999
https://blog.j5ik2o.me/entry/20110220/1298215999
654デフォルトの名無しさん (テテンテンテン MMeb-kE5c)
2022/03/19(土) 17:07:03.79ID:a55IiZ5SM synchronizedだけ使えばいいよ
性能改善の必要に迫られたときだけ、元からアトミックな処理という前提下でvolatileに置き換えできるケースがあるけど、まずそんなシーンはない
予めオブジェクトを生成しておいてconcurrentパッケージのクラスを使うほうがいい
性能改善の必要に迫られたときだけ、元からアトミックな処理という前提下でvolatileに置き換えできるケースがあるけど、まずそんなシーンはない
予めオブジェクトを生成しておいてconcurrentパッケージのクラスを使うほうがいい
656デフォルトの名無しさん (ワッチョイ 734d-bSSa)
2022/03/19(土) 23:27:17.51ID:1WLrxt8x0 >>650
ざっと見た感じだけど
ybl = y + h +(int) ((i+1)<gradients.length ? gradients[i+1] * gradient : 0);
ybr = y + h +(int) ((i+1)<gradients.length ? gradients[i+1] * gradient : 0);
あと↓みたいにすればxtlとかdouble使えると思う
g.drawPolygon(new int[] { (int)xtl, (int)xtr, (int)xbl, (int)xbr }, new int[] { (int)ytl, (int)ytr, (int)ybl, (int)ybr }, 4);
ざっと見た感じだけど
ybl = y + h +(int) ((i+1)<gradients.length ? gradients[i+1] * gradient : 0);
ybr = y + h +(int) ((i+1)<gradients.length ? gradients[i+1] * gradient : 0);
あと↓みたいにすればxtlとかdouble使えると思う
g.drawPolygon(new int[] { (int)xtl, (int)xtr, (int)xbl, (int)xbr }, new int[] { (int)ytl, (int)ytr, (int)ybl, (int)ybr }, 4);
657デフォルトの名無しさん (ワッチョイ 51ba-Ww1w)
2022/03/20(日) 19:08:03.40ID:TKFJ8s2x0658デフォルトの名無しさん (ワッチョイ 5132-SjDQ)
2022/03/24(木) 18:41:59.43ID:YQF9OG/30 質問です
JavaSE11黒本の12章47問で複数の数式から一つを選択する問題がありますが
そのうち正解となる選択肢Aと選択肢Cが常に同じ結果を示すように見えて違いが解らないです
選択肢A : a = b * (c * Math.pow(1 + c, n) / (Math.pow(1 + c, n) -1));
選択肢C : a = b * c * (Math.pow(1 + c, n) / (Math.pow(1 + c, n) -1));
Javaでは浮動小数点が絡んだ場合に誤差が生じる可能性があるため
乗算は非可換であり明確に区別されるという規則があるのでしょうか?
JavaSE11黒本の12章47問で複数の数式から一つを選択する問題がありますが
そのうち正解となる選択肢Aと選択肢Cが常に同じ結果を示すように見えて違いが解らないです
選択肢A : a = b * (c * Math.pow(1 + c, n) / (Math.pow(1 + c, n) -1));
選択肢C : a = b * c * (Math.pow(1 + c, n) / (Math.pow(1 + c, n) -1));
Javaでは浮動小数点が絡んだ場合に誤差が生じる可能性があるため
乗算は非可換であり明確に区別されるという規則があるのでしょうか?
659デフォルトの名無しさん (ブーイモ MM33-KKNZ)
2022/03/24(木) 20:30:16.55ID:4pzw63OrM 誤植か筆者がバカなんじゃね?
計算順によって結果が変わることはありうるけど、別にどちらが正解でどちらが間違っているということはない
計算順によって結果が変わることはありうるけど、別にどちらが正解でどちらが間違っているということはない
660659 (ブーイモ MM33-KKNZ)
2022/03/24(木) 20:33:39.29ID:4pzw63OrM ああ、値のオーダー次第では適切な順序で掛け合わさないと指数がオーバーフローするケースはあるかもな
>>658の情報だけじゃ分からんが
>>658の情報だけじゃ分からんが
661デフォルトの名無しさん (ワッチョイ 5132-SjDQ)
2022/03/24(木) 21:32:26.39ID:YQF9OG/30662デフォルトの名無しさん (ワッチョイ b15f-v+TM)
2022/03/24(木) 21:53:31.07ID:oxaoDT0s0 >>659 は数学のルールでものを語っているが、プログラミング言語の世界では、計算順序は決まっているので、複数の答えがあるはずがない。
663デフォルトの名無しさん (ワッチョイ b15f-v+TM)
2022/03/24(木) 22:00:44.34ID:oxaoDT0s0 >>661
データ型を問う問題だと思われる。
データ型を問う問題だと思われる。
664デフォルトの名無しさん (ワッチョイ 291d-SjDQ)
2022/03/24(木) 23:15:56.79ID:BUawFPKH0 お聞きしたいことがあります
らくらく突破Javaの本文中で、インスタンス変数(のスコープ)はその変数が属する
クラス内にある「全ての」メソッド内で有効、という記述があったのですが、
これは正確ではないですよね?
クラスメソッド(staticメソッド)内で利用するとコンパイルエラーになる、
とスッキリJavaに書かれていたような気がするのですが
らくらく突破Javaの本文中で、インスタンス変数(のスコープ)はその変数が属する
クラス内にある「全ての」メソッド内で有効、という記述があったのですが、
これは正確ではないですよね?
クラスメソッド(staticメソッド)内で利用するとコンパイルエラーになる、
とスッキリJavaに書かれていたような気がするのですが
665デフォルトの名無しさん (ワッチョイ b15f-v+TM)
2022/03/25(金) 00:16:37.09ID:F8nkIqx90 >>664
問題文が言葉足らずで解釈が割れるのは普通だから。
問題文が言葉足らずで解釈が割れるのは普通だから。
666デフォルトの名無しさん (ワッチョイ 292c-kNuw)
2022/03/25(金) 00:41:50.60ID:XVe+E9v/0 英国では、富士通の郵便局のシステムで、
700人以上の郵便局長が有罪になっている
計算が合わないから、盗んだだろって
イギリス史上最大の冤罪事件
計算順序・誤算などは危険
700人以上の郵便局長が有罪になっている
計算が合わないから、盗んだだろって
イギリス史上最大の冤罪事件
計算順序・誤算などは危険
667デフォルトの名無しさん (ワッチョイ 292c-kNuw)
2022/03/25(金) 00:56:54.43ID:XVe+E9v/0 インスタンス変数は、各インスタンスで固有のもの
一方、クラスメソッドは、そのクラスで使われるもので、
すべてのインスタンスで共有されるのかな?
または、そもそもインスタンスを作らなくても呼び出せるものかも?
単なるモジュール関数で、インスタンスとは結びつかないものかな?
どちらかは知らないけど
一方、クラスメソッドは、そのクラスで使われるもので、
すべてのインスタンスで共有されるのかな?
または、そもそもインスタンスを作らなくても呼び出せるものかも?
単なるモジュール関数で、インスタンスとは結びつかないものかな?
どちらかは知らないけど
668デフォルトの名無しさん (ワッチョイ b15f-v+TM)
2022/03/25(金) 01:00:47.17ID:F8nkIqx90 >>667
同じロジックのコピーを作るわけがない。少しはコンピューターの仕組みを理解してくれ。
同じロジックのコピーを作るわけがない。少しはコンピューターの仕組みを理解してくれ。
669デフォルトの名無しさん (ワッチョイ 2ba7-uFYH)
2022/03/25(金) 12:08:45.30ID:2VDK7PA50670デフォルトの名無しさん (テテンテンテン MMeb-kE5c)
2022/03/25(金) 12:29:06.82ID:H1veNHpAM 単純にクラスに紐付いているという理解でいいよ
インスタンスが0個だろうと関係ない
インスタンスが0個だろうと関係ない
671デフォルトの名無しさん (ワッチョイ 2ba7-uFYH)
2022/03/25(金) 18:05:18.51ID:2VDK7PA50 >>670
staticな方? だよな…
staticな方? だよな…
672デフォルトの名無しさん (ブーイモ MMcb-KKNZ)
2022/03/25(金) 18:33:22.79ID:tb8uqVBLM >>671
違う。インスタンスメソッドもクラスに紐付いている。
同じクラスから生成されたインスタンスなら同じメソッドを持っているのだから、各オブジェクトにポインタを持たせる必要はない。
オブジェクトの型を調べてその型の関数テーブルを見に行けばよい。
違う。インスタンスメソッドもクラスに紐付いている。
同じクラスから生成されたインスタンスなら同じメソッドを持っているのだから、各オブジェクトにポインタを持たせる必要はない。
オブジェクトの型を調べてその型の関数テーブルを見に行けばよい。
673デフォルトの名無しさん (ワッチョイ 2ba7-uFYH)
2022/03/25(金) 19:15:32.56ID:2VDK7PA50 >>672
あー、そうかそっちかぁ
あー、そうかそっちかぁ
674デフォルトの名無しさん (ワッチョイ 59e6-9bVs)
2022/03/25(金) 22:56:42.76ID:QepENKM50675デフォルトの名無しさん (ワッチョイ 315a-/+Uj)
2022/03/25(金) 23:08:00.32ID:CnzFn2Nz0 各オブジェクトにはクラス毎にある共有のクラスデータへのポインタ1つ持ってるだけ
各クラスデータにクラス名とか関数ポインタ並べた関数テーブルvtableは1つで共有すれぼいい
各オブジェクト毎にいちいち関数ポインタ全部をメンバで持たせる意味はない
これだと単純にリフレクションで特定のオブジェクトの特定のメソッドだけ差し替えるとかできないけど知らん
関数ポインタと関数テーブルをごっちゃにすると話が分からんことになるぞ
各クラスデータにクラス名とか関数ポインタ並べた関数テーブルvtableは1つで共有すれぼいい
各オブジェクト毎にいちいち関数ポインタ全部をメンバで持たせる意味はない
これだと単純にリフレクションで特定のオブジェクトの特定のメソッドだけ差し替えるとかできないけど知らん
関数ポインタと関数テーブルをごっちゃにすると話が分からんことになるぞ
676デフォルトの名無しさん (ワッチョイ 59e6-9bVs)
2022/03/25(金) 23:21:00.51ID:QepENKM50677664 (ワッチョイ 291d-SjDQ)
2022/03/25(金) 23:25:17.61ID:pf6/Mxtd0 レスくれた方ありがとうございます
お礼が遅くなってすいません
お礼が遅くなってすいません
678デフォルトの名無しさん (スッップ Sd33-KKNZ)
2022/03/25(金) 23:34:03.29ID:YQJ39BAyd >>676
言ってることは一緒だよ
オブジェクトは「型情報」を持っていて、それはクラスの共有情報へのポインタと考えることもできる
そしてvirtualを気にしているようだが、オーバーライドされてようが同じクラスのインスタンスなら呼ばれるメソッドは同じだろ?
だからクラスが関数テーブルを持ってりゃ十分なんだよ
言ってることは一緒だよ
オブジェクトは「型情報」を持っていて、それはクラスの共有情報へのポインタと考えることもできる
そしてvirtualを気にしているようだが、オーバーライドされてようが同じクラスのインスタンスなら呼ばれるメソッドは同じだろ?
だからクラスが関数テーブルを持ってりゃ十分なんだよ
679デフォルトの名無しさん (テテンテンテン MMeb-kE5c)
2022/03/25(金) 23:56:18.43ID:bplTxLs1M インタンスメソッドが実際にどういう持ち方をされてるのかっていうのは割とどうでもいいよ
そのへんはシームレスに使える
必要に迫られたら学べばいい
元質問はメンバ変数のスコープに関する話なのでもっとずっと初歩でシンプルかつ大事
そのへんはシームレスに使える
必要に迫られたら学べばいい
元質問はメンバ変数のスコープに関する話なのでもっとずっと初歩でシンプルかつ大事
680デフォルトの名無しさん (ワッチョイ 655f-ZnE1)
2022/03/26(土) 00:19:37.66ID:lKHoVGOW0 変数のスコープの話だと思ったのは、質問者がそう思い込んだだけだけどな。
681デフォルトの名無しさん (ワッチョイ a2bd-S+D2)
2022/03/26(土) 01:55:39.86ID:KWdFYtrC0 ?
682デフォルトの名無しさん (ワッチョイ 9b68-Sq5D)
2022/04/04(月) 16:34:16.00ID:TiyvLquy0 クラスにfinalを付けて宣言してもメンバ変数に代入が許されてしまうのは何故ですか。
メンバも代入禁止にする方法はないですか?
ただしもちろんfinalつけずに変更しながら使う場合もあるのてメンバ変数自体をfinalで宣言するのは不可です。
メンバも代入禁止にする方法はないですか?
ただしもちろんfinalつけずに変更しながら使う場合もあるのてメンバ変数自体をfinalで宣言するのは不可です。
683デフォルトの名無しさん (ワッチョイ 23b1-wmyf)
2022/04/04(月) 18:26:50.83ID:nAFl9YQG0684デフォルトの名無しさん (オッペケ Sr01-/7Bn)
2022/04/04(月) 18:38:24.18ID:+wFw0XNcr >>682
フィールドへの代入を禁止したいけど、変更して使うこともあるって、どういうこと??
フィールドへの代入を禁止したいけど、変更して使うこともあるって、どういうこと??
685デフォルトの名無しさん (オッペケ Sr01-/7Bn)
2022/04/04(月) 18:39:57.29ID:kQC4QAS9r >>682
ちな、クラスへのfinalは継承を禁止するものなので、フィールドの値が変更不可になるわけではない。
ちな、クラスへのfinalは継承を禁止するものなので、フィールドの値が変更不可になるわけではない。
686デフォルトの名無しさん (ワッチョイ 9b68-Sq5D)
2022/04/04(月) 20:45:08.75ID:TiyvLquy0 >>684
例えば、publicなフィールドx,y,zを持つ3次元座標を表すクラスHogeがあったとして、
通常は座標値を弄るのでフィールドをfinalにするのはできないのですが、
不動の座標値を使いたい(例えば、原点の0,0,0など。)時に、Hoge型の定数のように宣言したいです。
//↓フィールド変更不可
final Hoge ZERO = new Hoge(0,0,0);
//↓自由にフィールド変更可能
Hoge point = new Hoge();
みたいにしたいです。
要するにc++のconst的な宣言の仕方をしたいです。
例えば、publicなフィールドx,y,zを持つ3次元座標を表すクラスHogeがあったとして、
通常は座標値を弄るのでフィールドをfinalにするのはできないのですが、
不動の座標値を使いたい(例えば、原点の0,0,0など。)時に、Hoge型の定数のように宣言したいです。
//↓フィールド変更不可
final Hoge ZERO = new Hoge(0,0,0);
//↓自由にフィールド変更可能
Hoge point = new Hoge();
みたいにしたいです。
要するにc++のconst的な宣言の仕方をしたいです。
687デフォルトの名無しさん (テテンテンテン MM4b-5LyI)
2022/04/04(月) 21:23:46.54ID:LKr43FX/M 定数になるような型ならメンバ変数をfinalにしてイミュータブル(不変)なクラス設計とするのがベストプラクティス
値を変えたくなったら別のオブジェクトをコピーして返す
Stringクラスと同じ考え方
最近のJavaで導入されたrecord型もそういう発想で不変しか用意されてない
オブジェクトが増えるので性能が気になるかもしれないけど有意差にならないことも多い
可変にするとキャッシュも定数化もできないから性能面でのデメリットもある
どうしても可変な値がないと処理効率が悪すぎて性能目標がクリアできなくなるほどの処理があるなら、StringBuilderのような可変クラスを別で用意してもいい
可変と不変のクラス間でCharSequenceのような読み取り専用のビューを用意するとなお良い
メンバ数が多すぎてコピーがしんどいなら定数になるべき部分だけを切り出して不変にしてメンバで持たせる
値を変えたくなったら別のオブジェクトをコピーして返す
Stringクラスと同じ考え方
最近のJavaで導入されたrecord型もそういう発想で不変しか用意されてない
オブジェクトが増えるので性能が気になるかもしれないけど有意差にならないことも多い
可変にするとキャッシュも定数化もできないから性能面でのデメリットもある
どうしても可変な値がないと処理効率が悪すぎて性能目標がクリアできなくなるほどの処理があるなら、StringBuilderのような可変クラスを別で用意してもいい
可変と不変のクラス間でCharSequenceのような読み取り専用のビューを用意するとなお良い
メンバ数が多すぎてコピーがしんどいなら定数になるべき部分だけを切り出して不変にしてメンバで持たせる
688デフォルトの名無しさん (オッペケ Sr01-/7Bn)
2022/04/04(月) 21:35:35.48ID:JpT54Aq8r JavaにC++のconstみたいな機能は無いですね。
↑の人も書いているけど、イミュータブルな型として定義するのが良いかと。
↑の人も書いているけど、イミュータブルな型として定義するのが良いかと。
689デフォルトの名無しさん (ワッチョイ 9b68-Sq5D)
2022/04/05(火) 07:20:52.12ID:Ba/bG8iE0690デフォルトの名無しさん (アウアウクー MM81-G/E3)
2022/04/06(水) 23:03:42.53ID:JsIlKenTM クラスに定数を持ちたいのは理解できるが、実装を知らずに使う側からすると、ただのひっかけポイントだよな。
691デフォルトの名無しさん (ワッチョイ 0dba-H3Ob)
2022/04/07(木) 02:02:49.20ID:VNeJCEKF0 datファイルの中身をFileChannelを使って、高速にテキスト出力しようとしているのですが、
どのようにしたらいいでしょうか?
ttps://pastebin.com/zH6dKeCr
どのようにしたらいいでしょうか?
ttps://pastebin.com/zH6dKeCr
692デフォルトの名無しさん (ワッチョイ e2ad-4DsN)
2022/04/09(土) 06:31:18.71ID:3BKUeB6a0 java.nio.file.Files.copy() 使えば?
693デフォルトの名無しさん (ワッチョイ 2310-XuQp)
2022/04/10(日) 14:41:37.86ID:DjZR3NlI0 最新版のPleiades一括置換できなくなってない?
694デフォルトの名無しさん (ワッチョイ 4f5f-zj/g)
2022/04/13(水) 18:47:33.39ID:VBQvD1O+0 java1.8でtimestamp型にstring型で持ったマイクロ秒を入れたいのですけど
どうやれば良いのでしょうか?
20220413184698123456
とstringでは持っています
どうやれば良いのでしょうか?
20220413184698123456
とstringでは持っています
695デフォルトの名無しさん (ワッチョイ 7b9c-0o7i)
2022/04/13(水) 19:40:46.20ID:UD1YLbaJ0 >>694
"2022-04-13 18:46:00.98123456" に加工してからTimestamp.valueOf( ) に渡す
"2022-04-13 18:46:00.98123456" に加工してからTimestamp.valueOf( ) に渡す
696デフォルトの名無しさん (テテンテンテン MM8e-8R+6)
2022/04/13(水) 21:40:53.55ID:Vhu4Mbe9M String timestr = "2020041321234512345678";
System.out.println(
Timestamp.valueOf(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSSSSSS").parse(timestr, LocalDateTime::from)));
System.out.println(
Timestamp.valueOf(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSSSSSS").parse(timestr, LocalDateTime::from)));
697デフォルトの名無しさん (ワッチョイ 4f5f-zj/g)
2022/04/13(水) 21:52:24.05ID:VBQvD1O+0 >>696
78は何処から?
78は何処から?
698デフォルトの名無しさん (テテンテンテン MM8e-8R+6)
2022/04/13(水) 22:02:01.11ID:Vhu4Mbe9M699デフォルトの名無しさん (ワッチョイ 62b1-5Vjp)
2022/04/14(木) 13:24:48.22ID:WZWUjtqf0 ベンダー資格ってjava認定試験よりもオラクルのほうが主流な感じですか?
700デフォルトの名無しさん (ワッチョイ d701-aqju)
2022/04/15(金) 20:40:22.36ID:7qM74ppt0 アンドロイドアプリをつくりたいんだけど、
すっきりわかるシリーズのJAVA入門(実践編じゃない方)
を読了した程度でアプリ開発に進めますか?
すっきりわかるシリーズのJAVA入門(実践編じゃない方)
を読了した程度でアプリ開発に進めますか?
701デフォルトの名無しさん (ワッチョイ 7b9c-0o7i)
2022/04/15(金) 20:50:51.89ID:tvbeW/bB0 おう進め進め
いろいろと躓くこともあるだろうけど、都度、解決していくのが一番の近道
参考書読んでるだけじゃいつまで経っても成長しないぞ
いろいろと躓くこともあるだろうけど、都度、解決していくのが一番の近道
参考書読んでるだけじゃいつまで経っても成長しないぞ
702デフォルトの名無しさん (ワッチョイ 9fad-lFM7)
2022/04/16(土) 06:55:58.77ID:Ass65Yu+0 作りたいなら作れ
一々やる前に考えるな
一々やる前に考えるな
703デフォルトの名無しさん (ワッチョイ 5701-eBIx)
2022/04/16(土) 07:48:23.63ID:3i5OLCW50704デフォルトの名無しさん (アウアウクー MM8b-zBfJ)
2022/04/18(月) 16:21:45.63ID:GGXXVNotM >>699
あたりまえだろ。
あたりまえだろ。
705デフォルトの名無しさん (アウアウクー MM8b-zBfJ)
2022/04/18(月) 16:23:36.74ID:GGXXVNotM >>698
おそらく数値で過去・未来の判定をしてるんだと思う。初心者がやりがちな変なやり方。
おそらく数値で過去・未来の判定をしてるんだと思う。初心者がやりがちな変なやり方。
706デフォルトの名無しさん (オッペケ Sr8b-C+gE)
2022/04/18(月) 20:46:18.50ID:ju3Mcmkrr >>705
それはわかった上で、普通に詰めると18:46:98.123456になっちゃうから、98秒ってなんだよ、ってことかと。
それはわかった上で、普通に詰めると18:46:98.123456になっちゃうから、98秒ってなんだよ、ってことかと。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 三角形はカッコいい
- 【画像】大人気Vtuber宝鐘マリンさん、115円…
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- ロボット展に中国企業80社以上が出展。日本は逆転不可能かも
- 俺はヤンキーだから
- 【速報】高市早苗、起床 [779938112]
