TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Pythonのお勉強 Part63
UNIXプログラミング質問すれ Part10
Android開発質問スレ
Objective-C [ObjC part:9];
Swift part11
コメント研究すれ。
低スキルでも読めるコードは、属人的なコードになる
UNIXプログラミング質問すれ Part10
関数型プログラミング言語Haskell Part31
ますたーのお勉強中の独り言スレ

Java入門・初心者質問スレ Part.9


1 :2019/03/09 〜 最終レス :2020/03/23
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.8
http://mevius.2ch.sc/test/read.cgi/tech/1528370228/

2 :
('仄')パイパイ

3 :
(1)
while (threadState == true) {}

(2)
while (threadState == true) {
System.out.print("");
}

マルチスレッドで、他のスレッドが threadState を変更するのを待ちたいのですが、(1)だとループを抜けてくれませんが、(2)なら抜けます。
何が悪いんでしょうか?

4 :
>>3
その変数の宣言はどうなってる?

5 :
>>4
boolean threadState;
クラス変数です。
この変数を変更する別スレッドも内部クラスです。

6 :
>>5
volatile 付けるとどうなる?

7 :
>>6
それでうまく行きました。ググったらコンパイラの最適化の問題とかみたいですね。
本当にありがとうございました。

8 :
>>7
ああ。でもマルチスレッドでの同期については単純なのならそれでも良いけど本当ならちゃんとロックした方が良い事はお忘れなく。

少なくとも今のプログラムだと変数の内容が変わるまでずっとルーブするので効率が悪い。
他から起こされるまで眠るみたいな方式の方が本当に何もしない状態になるので効率は良い。

9 :
スレチならすいません。
以前からスマホアプリを作ってみたいなとおもってまして、この度PCを購入しました
のでもってまずはプログラミングの代名詞でもあるjavaを習いたいと思いandroid studio をダウンロード、インストールしたのですが、
アプリが立ち上がりません。。

どなたかこの原因がわかる方いませんか?

↓エラーメッセージ
Error launching Studio
Failed to load JVM DLL C:\Program Files\Android\Android Studio\jre\jre\bin\server\jvm.dll

if you already have a 64-bit JDK installed, define a JAVA _HOME variable in Computer > System Properties > System Setting > Enviroment Variables.


↓PCのスペック
win 10
Corei7
RAM 8G
OS 64ビット

10 :
JVMのDLLの読み込みが失敗しました
64-bit JDKインストールされてるなら環境変数JAVA_HOMEを設定してください

ってことなのでJavaをインストールして環境変数を設定したらok

11 :
>>10
ご回答ありがとうございます。
私もそう思ってJDKをインストールして環境変数(JAVA_HOME)を通してみたのでしたが、同じエラーメッセージが表示されました。
パスが間違っているのかわからないんですが、JDKのインストール先とAndroid Studioのインストール先が違うと動かないのでしょうか?
JDKをどこかのファイルと同じ階層に置かないと起動しないというのはありますでしょうか?

12 :
>>11
パスが正しいかはコマンドプロンプトで実行してみればわかるかと
"%JAVA_HOME%\bin\java.exe" -version

所定の場所にJDKをインストールしないといけないなら
JAVA_HOMEを設定する必要ないんでそういうことはないと思うよ

64bitならstudio64.exeを起動しましょうとかあるんで
そのへんじゃないかな

13 :
>>12
解決しました。
studio64.exeでした
いやはやお恥ずかしい・・

ありがとうございます

14 :
昔今より更に素人だった頃自分のパソコンにjavaの実行環境を作った事があって、そしてまた走らせてみようと思ってさっきVScodeで実行してみたら上手く行った。
ここまではいいんだけど多分今入ってるのがSEだからEEに取り替えたい。
環境変数の変更からファイルの交換までどうすればいいか誰か教えてくれない?
一応VShomeのjava.homeっていう所は"C:\\Program Files\\Java\\jdk1.8.0_161"みたいなんだけど

15 :
とりあえずjava_ee_sdkっていうのはDL&解凍したけど今パスの方にあるjava_homeの参照先はjdkなんだよね
でも調べるとsdkにjdkが入ってるみたいなことが書いてあるからsdkと書いてあるフォルダをjava_homeに設定したら駄目だった
どこにjavaEEのjdkがあるの?

16 :
どなたか教えてください。。。
未経験で今新人研修してます。。。

【 課題 】Javaでタイピングゲーム作成
      https://dotup.org/uploda/dotup.org1832355.png
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】4. 制限なし
【 期限 】2019/05/05
【 Ver  】javac 1.8.0_131

17 :
>>16
どこまでやったのかも書き込んで下さい

18 :
>> 17
すみません
私未経験でメソッドとか配列とかチンプンカンプンなので、
コンパイルエラーなのですが、進捗はこちらです。。
1) https://dotup.org/uploda/dotup.org1833185.png
2) https://dotup.org/uploda/dotup.org1833187.png
3) https://dotup.org/uploda/dotup.org1833188.png

19 :
>>18
エラーの内容を教えてもらえれば

20 :
>>19
https://dotup.org/uploda/dotup.org1833229.png
このような感じです。。

21 :
>>18
未経験で新人研修と言う事なので
一気に全てやろうとするのではなく
1つ1つメッセージを表示して確認しながら追加していってみて下さい

1,最少構成でコンパイルが通るようにする
2,難易度選択で分岐
3,・・・のように

22 :
>>20
基本的にはエラーメッセージは上から順に解決していって下さい

23 :
>>20

↓こんな感じでしょ
public static void literal1(String easy) {
  String[] easy = ...

  for (int i = 0; i < easy.length; i++) {
    ...
}

引数でString easyを定義してて
String[] easyでも同じ名前の変数を使ってるんで
そのせいじゃないかな
変数の名前変えれば良さそう

24 :
21>>この問題の場合どこで条件分岐して良いのか、など構造の書き方がわかりません。。
アドバイス(特に書き方について)していただけると嬉しいです。。
22>>処理は全て上から、問題文の1文目から書いていけばいいですか?

25 :
23>>
クラスの宣言と配列の引数は名前変えないといけないんですか!?

26 :
>>24
上からというのはエラーメッセージの上から順番にです

1つ目のエラーが原因で2つ目のエラーが表示されるというケースもあるので
その場合は1つ目のエラーを解決すれば2つ目のエラーも解決します

エラーメッセージが指し示している部分より前に原因がある事もあります

27 :
>>25
同じスコープで同じ変数名を使うのがNGです
int a = 0;
int a = 1;
はコンパイルエラーになるっしょ

void test(int a) {
 int a = 0;
}
もコンパイルエラーになるっしょ

そういうこと

28 :
最近って環境変数JAVA_HOMEって設定しなくても良くなったんですか?
OracleJDKからの移行で色々OpenJDKの試しているのですが
各種ツールなども問題なく動くようにみえます

29 :
環境変数が設定されてなかったら固定のパス見たり
JREを内蔵してるソフトウェアもあったりするけど
ツールによるんじゃないかな

30 :
>>24
制御構造は順次、選択、反復で
どこの処理をループさせる必要があるか
どこで選択が必要かは全体のフローをざっくりと書いて見るとわかるかと
それを仕様から読み取るのも問題の範囲かなと、良い問題だわ
参考までに僕は↓こんな感じのフローかなと思った

ゲームのループ
{
  難易度選択(Easy, Normal, Hard)
  ・・・

  出題のループ
  {
    一致のループ
    {
      ・・・

      if 文字列が一致
      {
        ・・・
        ループを抜ける
      }

      ・・・
    }
  }

  ・・・
  リトライ確認がNoならループを抜ける
}

31 :
>>26
分かりました!
ありがとうございます。

32 :
>>27
なるほど。。そうゆうことだったんですね。
ありがとうございます

33 :
>>30
わ!ありがとうございます。
こうゆう感じで書いたらいいんですね。

ちなみに私の配列の書き方は合ってますか?

34 :
>>33
String[] easy = {"byte","int", ・・・};

って書き方でしょ、あってるよ
コンパイルも通るっしょ

35 :
>>34

あ。はい。通ります。。

36 :
元号対応は終わりましたか?

37 :
>>36
俺んとこは西暦だけらしいからしてねぇみてぇだな。

38 :
>>36
https://forest.watch.impress.co.jp/docs/news/1180549.html

39 :
今Javaを独学で勉強してる者です。
現在、有名な「すっきりわかるJava2版」を購入しオブジェクト指向で躓いています。

最近IT関連のネット記事をチラチラ見てて、アンドロイドアプリの開発言語がJavaからKotlinに移行しているという記事が目に止まったんですよね。。

そこで質問なんですが、今からアンドロイドアプリを作ろうとするならばKotlinを学習する方が良いのでしょうか?
現エンジニアの方の意見をお聞きしたいです

40 :
プログラマになりたいならJava
Androidアプリだけ作れればいいならKotlin
初心者ならググれば何でも出て来るJavaの方が良いかも知れない

41 :
>>40
やはり現状はjavaの方が情報量もあって良いんですね

プログラミングは趣味でやってみようかなと思ってます。〇の島のにゃんこみたく農業ゲームとか作ってみたいなと思ってますね。

自分の調べたところJavaが廃れることは当分なさそうですので引き続き頑張っていきます
ご返答ありがとうございました。

42 :
>>40
Kotlinはjaやnativeもあるから今後androidだけには収まらないと思うよ。
仕事で使うのでなくても覚えておいた方が良い言語になると思うが。

43 :
打ち間違えた。jaではなくjs。

44 :
当時、Javaは自然に人気が出た感じがしたが、Kotlinは無理やり感がある。

45 :
無理矢理というか、Googleが採用してAndroidでのサポート始めたからそこで使う人が爆発的に増えたということだろうな。
Google採用がなければJava同様にじわじわと増えたのかも知れない。

あ、でも Java はインターネットと Java Applet で急に広まった感じするな。
当時まだ flash とか動くページ作れるやつがなかったか、あっても貧弱だったからだと思う。
JavScriptもたいしたこと出来なかったように思う。

46 :
>>45
>Google採用がなければJava同様にじわじわと増えたのかも知れない。
うーみ。

47 :
なんだかよくわかっていないのが多いけど、Javaはクラスライブラリが画期的だった。マイクロソフトはクラスライブラリのセンスがなくてWindowsアプリケーション作りの環境をなかなか提供できなかった。

サンマイクロシステムズがJavaで正解を持ってきてくれたため、マイクロソフトは.NET frameworkを作れた。

その間はVisual C++のMFCか、計画性がまったくないクソ拡張をしてしまったVBによってアプリケーションが作られ混乱した。

48 :
>>47
確かにあなたの言ってることが一番正しい気がする。

話は変わるけど、Kotlinは、Javaではなく、JavaScriptに似ていて、
Script言語の方が初心者には受け入れられやすいから一見、多数決では
人気に有利に働いている可能性がある。しかし、大きなアプリを作ろうと
した場合、Javaの方が実は便利なのではないかと思う。さらに、
もっと深く進んでいくと、JavaよりもC++の方が便利、となっていく。

49 :
public static void main(String[] args) {
  List<String> arr = new ArrayList<>();
  arr.add("青森県"); arr.add("岩手県"); arr.add("宮城県");
  arr.add("秋田県"); arr.add("山形県"); arr.add("福島県");
  Collections.sort(arr, new Comparator<String>() {
    public int compare(String s1, String s2) {
      if (s1.compareTo(s2) > 0)
        return 1;
      else if (s1.compareTo(s2) < 0)
        return -1;
      else
        return 0;
    }
  }
  );
  System.out.println(arr);
}

[宮城県, 山形県, 岩手県, 福島県, 秋田県, 青森県]

なんですが、グーグルスプレッドシートで並び替えると

岩手県 宮城県 山形県 秋田県 青森県 福島県

になります。プログラム間違ってるでしょうか?それとも文字コードの違いかなんかですか?

50 :
>>49
JavaはUnicode順で
グーグルスプレッドシートはShift_JIS順ですね

Shift_JISで並び替えるならこれで
Collator collator = Collator.getInstance(Locale.JAPAN);
Collections.sort(ar r, collator);

51 :
>>50
そういうことができるんですね。勉強になりました。ありがとうございました。

52 :
スッキリわかるJava入門を購入して
javaを学ぼうと思うのですが
目標に基本情報技術者のjavaでの合格を目指そうと思っています。
調べたらみんな表計算らしいので
文系で初学者が無謀なんでしょうか?

53 :
>>52
表計算が一番簡単だというのは昔の話で、いまは架空の表計算マクロの問題なので、これはこれで勉強が必要。

Javaの場合は標準ライブラリがコードに書かれているので、見慣れていないとわかりづらいが、問題そのものは簡単。

54 :
>>53 ありがとうございます。
正直、何か目標が無いと挫折しそうで・・・というか
前に1回挫折してるんですよね・・・

55 :
スッキリJava を読んで、たのしいRuby を読む。
それで、Ruby で、プログラミングのお題スレの問題を解く!

これがプログラミングを学ぶ、最速メソッドです!

56 :
そうかなあ?

57 :
かなしいRubyの次にもう1つ本があった気がするけど何だった?

58 :
var ●● = iimGetLastExtract(1);
switch (true)
{
case /△△/.test(●●):
iimPlay("☆☆☆");
break;

特定のページ内にあるワードの有無でcaseを分岐させたいんですけど、検索するページを●●で指定しているのかわかりませんが機能しません。

●●にはいる値とは、作者の把握固めの値でいいのか、そのページを識別する値でないと駄目なのか、後者だとしたらそれはどこから抽出すればいいのでしょうか?

本を買ったりネットで調べても、そこにいれるべきは、なんなのかが書いてないです。
初心者入門的なものにも書いてないので、初心者以前の質問かもですが、ご教授ください

59 :
>>58
それはJavaScriptじゃないかな
JavaとJavaScriptは違う言語だよ
ググってみたけどiMacrosみたいだね

iimGetLastExtract(1);
はiMacrosの値を読み込むってものらしいから
前のところで何を読み込んでいるのかによるんじゃないかな

いずれにしろJavaScriptのスレとかの方が回答付きやすいんじゃないかな

60 :
>>59
そうです。imacros自体の本は出てないようで
javaの本とJavaScriptの本の中身をみた結果、コードの羅列的にjavaの応用なのかなと参考本買ったのですけど
JavaScriptでしたか・・・。改めて本屋覗いてみます。

回答有難う御座いました。

61 :
「imacros iimgetlastextract」「javascript test 正規表現」で検索!

web 制作管理板の、JavaScript のスレで聞いてください!

62 :
>>61
有難う御座います。検索のほうしてみます。
かつJavaScriptの本買って駄目そうなら、そちらで質問させてもらいますm(__)m

63 :
Java で FullGC が頻発している場合、CPU負荷が高くなるけど、
vmstat でいう sy(システム時間)が高くなる傾向になるの?
それとも us(ユーザー時間)が高くなる傾向になるの?

64 :
>>63
http://luozengbin.github.io/blog/2014-11-05-%5B%E3%83%A1%E3%83%A2%5Dcms-gc%E3%83%AD%E3%82%B0%E3%81%AE%E8%A6%8B%E6%96%B9.html
[Times: user=0.01 sys=0.00, real=0.01 secs]

ユーザーみたいだよ

65 :
超絶初心者なのですが、どなたかご教授願います。

public static void main(String[] args) {

int num=Input.getInt("整数を入れてください");
System.out.println(num+ "を三乗すると" +modori(num)+ "です。");
}

public static int modori(int num) {
int c=num*num*num;
return c;
}
}


modoriメソッドでなぜcをreturnさせないと動かないのでしょうか?

66 :
>>65
そのメソッドはintを返すように書いてあるからretutnでint型の値を返さなければコンパイル時にエラーになる。

67 :
>>66
なるほど!つまりint c=num*num*num; を modori(int num) { 
に代入(?)してるっていう解釈で間違ってないですか?

68 :
returnを書かない場合、cはmodoriの外に出られず呼び出し側に行かないから

69 :
>>68
わかりやすい解説に感謝です。

70 :
Java限定の話じゃないんですが・・・
ORマッピングする場合の、エンティティクラスは、テーブルに対応したものを作るべきですか?
アプリのUIの入力項目に、複数のテーブルから作ったビューをマッピングすることになる場合、
ビューに対応するエンティティクラスを作ればいいかと思ってるんですが・・・

71 :
エンティティは、テーブル構成と同じだろ

そう言えば、O/R マッパーで、複数の表を結合した、ビューは聞かない

72 :
普通にありえるだろ。
Hibernateなら、@Immutableってつけるだけだ。
まんまリードオンリーってことだ。

73 :
新垣結衣 AVデビュー
https://www.xvideos.com/video48369883/_ai_

74 :
下記のコードを実行すると、10進数で10と表示されます。
これを2進数で00001010などと表示させたいのですが、
何か方法はありますでしょうか?
知っている方がいたらよろしくお願いします。

https://pastebin.com/bWeDy4fC

75 :
java初心者です。現在オブジェクト指向で躓いています。とにかく読みまくって調べまくっ
てオブジェクト指向がどういう物なのか、どういう考え方なのかは理解できました。しかし
、「オブジェクト指向を使っプログラムをかけ」と言われてもまずどこから手を付ければい
いのかさっぱりです。ソースの例なんかを見ても何が起こっているのかわかりません。

”数字を入力させ、その数が10以上なら++するの繰り返し。10以下なら終了”

こう言われたならまず数字を入力させるんだな、scannerだな。繰り返しって事はforだな。
って分かるわけです。じゃあオブジェクト指向は...?なに?どこから手を付けるの?何が
どうなってるの?って感じです。どなたかご教授願えませんでしょうか...

76 :
>>75
保持できる数値の下限が10の、Limit10Integerクラスを作ってみて、
そのクラス同士の演算、通常のIntergerやプリミティブなintとの演算を
考えてみては?

77 :
別のクラスを作ってインスタンス生成してそれを使えばとりあえずオブジェクト志向

78 :
プロパティとメソッドをまとめたものが簡単に作れるのがオブジェクト指向
クラスはあってもなくても

79 :
Javaのプロパティって
C++で言う所のクラスに内包された#defineみたいなもん?

80 :
>>74
Integer.toBinaryString

81 :
>>74
ここ見ると色々なのが書いてある。
https://qiita.com/munieru_jp/items/6288988293958850bddd

82 :
0のパディングが必要だとけっこう難しい。

83 :
ふつうに2進数に変換した後に
"0000000" + 2進数 をsubstringで右から必要な桁数とれば?

84 :
そうか?足りない分だけ '0' 入れれば良いだけだが。

85 :
>>83
そうそう。それでもいい。(なんとなく無駄な感じはするが)

86 :
Formatぢゃ駄目か

87 :
74です。
皆さんレスありがとうございます。

もう1つお聞きしたいのですが、コード内の変数binaryNumは2進数にして宣言して
いるのに、println()メソッドを使うと10進数表示になってしまうのは仕様でしょうか?

88 :
数値リテラルを2,8,10,16進数のどれで設定してもintはただの符号付き32bitの数値なのよ

89 :
>>88
分かりました。ありがとうございました。

90 :
こんにちは。
Microsoft Java VM の仮想マシンを使っている者なんですが、
現在craving explorerを使っています。

そこで、craving explorerで
ツール→インターネットオプション→セキュリティタブ
信頼済みサイト→レベルのカスタマイズ→Microsoft VM →
Javaの許可→カスタム を押した後、

下にある「Javaカスタム設定」を押して未署名のコンテンツの実行を許可しようとしたところ
「Javaカスタム設定」を押した後に「craving explorerは動作を停止しました」と出てしまいます。

解決策を教えて下さい。

craving explorerでJavaカスタム設定を押して権限の編集及び未署名のコンテンツの実行に許可をしたいです。

91 :
>>90
それCravingExplorerからただ標準のインターネットオプションを呼び出してるだけだから
コントロールパネルとかから呼んで変更してからCravingExplorer起動してみるとか

92 :
クラス型変数ってクラス定義さえしていれば、1個もインスタンスしてなくても使えるんだっけ?

93 :
yes

94 :
streamに対する操作として、max(Comparator::natualOrder)みたいにメソッド参照で操作できますか。どの参考書にもComparator.natualOrder()を使ってるのですが

95 :
よく知らんが
そのCoparator class中のnaturalOrderがどう定義されてるかによるんじゃね
lambda memberとして定義さてりゃClassName.mamberNameだしfunction memberとして定義さてりゃClassName::memberNameなんじゃね
まぁ比べるやつ!なんて名前に冠してるクラスだし普通ラムダってるとは思うが
max funcのpredicate argとしてlambdaぶっこもうとしてるってことっしょ?(´・ω・`)

96 :
こんばんわ。
わかる方がいらっしゃれば、教えていただけないでしょうか。

当方、DBをACCESSとしてjavaを学んでいます。
その中で、以下のSQL文をjavaで実行しようとしました。

UPDATE SAMPLETABLE SET 工数 = ROUND(DAVG("予定工数","SAMPLETABLE","[プロジェクトcd]='" & [プロジェクトcd] & "' AND [ID]='" & [ID] & "'"),1)";

上記は、SAMPLETABLEテーブルの中の予定工数列の平均値(小数点第2位を四捨五入)を工数列に更新する内容で、ACCESS上では正常に動作することを確認済みです。
これをjavaで実行しようとしたときに、

sql = "UPDATE SAMPLETABLE SET 工数 = ROUND(DAVG(\"予定工数\",\"SAMPLETABLE\",\"[プロジェクトcd]='\" & [プロジェクトcd] & \"' AND [ID]='\" & [ID] & \"'\"),1)";
statement.executeUpdate(sql);

としたところエラーとなりました。
statement.executeUpdate(sql);
で何が実行されているか確認したところ、実行されているSQLは以下の通りでした。

UPDATE SAMPLETABLE SET 工数 = ROUND(DAVG([予定工数],[SAMPLETABLE],[[プロジェクトcd]='] & [プロジェクトcd] & [' AND [ID]='] & [ID] & [']),1)

どうも\"の組み合わせが大カッコとして認識されているらしく、ACCESSで正常に動作しないようでした。
SQL文内で"を使わなくてはならず、そうするとエスケープ文字の\が必要とある為、解決方法が見当たりません。
解決方法がわかる方がいらっしゃれば、ご教授いただけないでしょうか。

97 :
>>96
どういうドライバ経由で繋いでいる?
DAvgというAccess限定の特殊関数動くんかな
Criteria引数をその時の列の値で動的に生成してるんだろうけど
そんなの標準SQLにないからなあ

素直に
・プロジェクトCD毎の予定工数テーブルを作成
・上記と結合(またはサブクエリ)して更新
の2ステップにした方がいいと思う
(もしくはDAVG部分をサブクエリに書き換え)

ちなみにDBをACCESSとしてjavaを学ぶというのは特殊すぎて
ハマるポイントが多すぎると思われるのでお勧めしない
まだSQLiteの方がまし

98 :
Accessに使うSQL文は当然、SQL Serverと同様、マイクロソフト製品固有のSQL文になる
そのSQL文が正しく実行されるかはAccess内部でクエリーでも組んで実行しないと確証取れないよ

99 :
>>97,98
レスありがとうございました。
ドライバはjdbc:odbcのことでよいでしょうか。
やはりACCESSは特殊なのですね。。。

100 :
>>99
JDCB以外で接続する方法は知らないな
と言うか実装上はJDCB活用する様にするのが普通

101 :
QueryRunner qr = new QueryRunner();
String sql = "SELECT A,B,C FROM HYO";
List<Map<String, Object>> MAP = qr.query(con, sql, new MapListHandler());

DBUtilsというライブラリを使用して上のようなコーディングをしましたが、
List<Map〜の箇所で後続の処理に行かずfinallyに抜けてしまいます。

おそらく何かしらのエラーが発生している為だと思うのですが、
} catch (SQLException exception) {
でも補足できませんでした。
例外処理もなかなか理解できておらず申し訳ないのですが、何が原因であるか
教えていただけないでしょうか。
情報が不足していたら申し訳ありません。

102 :
>>101
ただの Exception で catch してスタックトレースでも出してみれば良いのでは?

103 :
さっきJavaの更新したんだが、システムトレイからアイコンが消えなくなった
コンパネ開いてアイコンのチェックを外して適用、OKしても消えない、どうすりゃいいんだ

104 :
Windowsならわからなくなったらまず再起動

105 :
最初に再起動したけど何も変わりませんでした

106 :
以下ソースコードについてです。
要件としてはキーボード入力したデータの判定チェックをしたいです。
1.0点〜100点以外の入力はエラー ← ok
2.数字以外の場合はエラー ← ok
3.空白の場合はエラー ← これが以下ソースでは実装できず困ってます・・


try{
Integer inParam2 = Integer.valueOf(bufReader.readLine());
//0点以下、100点以上はエラーMSGを返す
if(inParam2 < 0 || inParam2 > 100 ){
System.out.println("0点〜100点の間で入力してください");
System.exit(1);
}else if (inParam2 == null){
System.out.println("点数は必須項目です。");
System.exit(1);
}else{
recordMap.put("国語",inParam2);
}
//数字以外をチェック
} catch (NumberFormatException e) {
System.out.println("数字を入れてください");
System.exit(1);

107 :
>>106
bufReader.readLine()のnullチェックを行えばいいよ
↓こんな感じ

String line = bufReader.readLine();

if (line == null) {
 // error
}

try{
 Integer inParam2 = Integer.valueOf(line);
 ・・・

108 :
>>106
え?例外にならない?

109 :
null判定ブロック内のコードがデッドコードだって警告が出るんだけど、なんで?

110 :
>>109
プログラム見せて

111 :
>>110
ああ、ごめんなさい。>>106さんのコードのことです。

112 :
>>109
if(inParam2 < 0 || inParam2 > 100 ){

この条件はinParam2がnullでないことを前提としていて
inParam2がnullだったら例外が投げられるっしょ

}else if (inParam2 == null){

なのでこの条件にはたどり着かないんよ

if (inParam2 == null) {
} else if (inParam2 < 0 || inParam2 > 100 ) {
}

にすれば警告はでなくなるけど
Integer.valueOf(bufReader.readLine());
はnullを返すことはないんでinParam2 == nullは常にfalseになる

Integer.valueOfにnullを渡すとNumberFormatExceptionが投げられる

空白の場合は"点数は必須項目です。"と出力したいけれども
"数字を入れてください"と出力されてしまうのじゃないかな

113 :
>>112
なるほどそういうことですか。分かりました。ありがとうございました。

114 :
Scanner使えや。

115 :
https://pastebin.com/dEtCHVpv
MouseMotionListenerのgetMousePositionで、なぜnullがかえるのでしょうか?

116 :
>>115
https://docs.oracle.com/javase/jp/6/api/java/awt/Component.html#getMousePosition()

Component がマウスポインタの直下にある場合、この Component の座標空間のマウスポインタの位置を返します。
そうでない場合は null を返します。

Component が画面に表示されていない場合は、Component が表示されている領域の上にマウスポインタがある場合でも、
このメソッドは null を返します。

117 :
>>116
ありがとうございました。

118 :
File.lengthはint型で返すけど、もしintの範囲を超えるサイズのファイルが出たら例外吐いて終了するの?

119 :
>>118
ごめん間違えた FileじゃなくてByteArrayOutputStreamだった

120 :
>>119
最大値はInteger.MAX_VALUE - 8
これを超えたらOutOfMemoryErrorがスローされるよ

121 :
今のjavaのINTEGERは64bitですか?

122 :
32bit

123 :
>>120
ありがとう

124 :
てか、配列の添字の限界って型に関係なくintの最大値だよね。
ByteArrayOutputStreamは中で本当にbyteの配列使ってるので配列の添字の最大を超えられない。
工夫すれば超えるのは作れるがそうなると今度は一つの配列として返す部分の変更が必要になる。

どうしても巨大配列が欲しい場合はしょうがないからlongの配列に自分で詰め込んでbyteの8倍の容量にするか、または配列の配列またはList作って自分で連結させるかになるかな。

125 :
ソケット通信したいんだけどネットで調べてもsocketserverとかで普通にポート番号指定しているんだけど、ポートが他のアプリケーションとかで使われてないか調べたり空いてるポートを調べたりする処理は必要無いの?
通信関係疎くてわからない

126 :
>>125
確かにポート番号は、サーバ・クライアント間で共通のものをソフトであらかじめ決めておく、というのが普通ですね
ポート番号をころころ変えるソフトは見たことがありません

というかポート番号がサーバ・クライアント間であっているかどうかを調べる、というのはどうすればいいかな?合言葉を交換するとかかな?

127 :
>>126
あーそうか
サーバーでポートを動的にしたらクライアント側がそのポート番号知りようがないか
すいませんでした

128 :
FTPが制御用コネクションとデータ転送用コネクションを用いているように複数のコネクションを張るタイプのプロトコルであれば、
最初に確立するコネクション以外は動的に確保されたポートで通信するケースはあるよ

何れにせよ、
特定のポートが他のプロセスで利用されていないかを確認しても、
その後そのポートを開く前に他のプロセスがそのポートを開いてしまう可能性があるので(race condition)
どの道、ServerSocketを開こうとした際に失敗することを考慮しないといけない

129 :
>>128
なるほど複数接続するやつならそうしないとダメですよね
受付みたいな
ありがとうございました

130 :
java.beans.XMLEncoder で getter/setter のあるオブジェクトを書くとちゃんとXMLファイルができて中にデータが入っているのですが、その XML ファイルを XMLDecoder の readOblect() で読もうとすると java.lang.ClassNotFoundException が出てしまい読めません。
classpath でクラスのあるディレクトリを指定したり直前で Class.forName() でクラスを読んでいても同じです。
これはどうやったら正常に読めるようになるのでしょうか?

131 :
>>130
XMLDecoderに渡してるInputStreamが正しいか確認したほうが良い気がする
ちょっと試してみたけど、普通に読めるよ

132 :
>>131
普通にファイルから読もうとしているだけなので問題ないと思うんだけど。うーん。

ところでそのうまく行ったプログラムは読み書きが別々に動くように書いてあって別々に起動して書くだけ、または読むだけが動くようになってますか?
それとも書いて読むという順序になっている一つのプログラムですか?

というのは、色々検索して探していたらクラスローダの問題と書いてあるページを見つけたからです。
(かといってどうすれば良いかまだよくわからない)。

133 :
>>132
com.example.test.XMLEncoderTest, XMLDecoderTestそれぞれのmainメソッドで
Stringとintのフィールが1つづつのTestBeanをtest.xmlに書いて読むだけ
動かないわけがないぐらいシンプルなもの

こんなのだったらそちらでも問題なく動くと思うけど、
それが(仮に)動いて、今トラブってるのが動かないのであれば、
XMLDecoderを使う箇所以外のコードか環境が原因じゃない?

#それか単純に間違ったXMLファイルをロードしちゃってるか(以前にテスト用に作ったクラスをXMLEncodeしたファイルとか)

134 :
すいません。こちらの問題でした。Kotlin と混在させていて Kotlin 側でやるとダメな結果になってました。Java で同じように作ると問題なく動きました。失礼しました。

135 :
OpenJDKメインにすれば、
ライセンス料かからないんですか?

136 :
>>135
OpenJDKならライセンス料はかからない
個人の勉強用なのか会社で業務システム動かすのかとか目的によって選択肢は色々だろうけど

以下のスライドが良くまとめられていると思う(ちょっと長いかもしれないけど)

最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
https://www.slideshare.net/TakahiroYamada3/how-to-choose-the-best-openjdk-distribution-201905

137 :
いい!

138 :
>>136
半年毎のアップデート面倒だろ

139 :
この資格とったら時給いくら?
セミリタイアして、派遣で働きたい週3ほど。
希望時給は2500円以上です。

140 :
Oracle Master Platinumくらいないとな

141 :
で、結局いくらなの?
個人で趣味程度に開発してアップしてるんだけど
不安になって小鳥に切り替え中

142 :
スッキリわかるJava入門の第2版って本はまだ有効?

143 :
有効だけど実践編と Servlet までやらないと意味ないよ
Java で何をしたいのかにもよるけど
javadrive のサイトではいけないの?

144 :
Servlet以外にJavaの意味有るか?

145 :
>>143,144
ありがとうjavadriveのサイトで頑張ってみる

146 :
近頃は spring までできて一人前らしいが

147 :
OpenJDKなんて不要
AdoptOpenJDKで十分

148 :
おまえだれや

149 :
結局 spring のメリットは何なの?
コードが複雑になるだけのような気がする

150 :
Kotlin もよろしく

151 :
そこはよろりんで

152 :
>>149
フレームワークであるところ、かな
他にこの規模・機能のものがない

153 :
2次元配列で
int[][] array = new int[8][10];
これで
array[1][10]
array[2][30]
array[3][15]
のように二つ目の要素のサイズをバラバラにしたいのですが
こういうことってできますか?どう記述すればよいのでしょう?

154 :
自己解決しました

155 :
>>153
int[][] array = new int[8][];
array[1] = new int[10];
array[2] = new int[30];
array[3] = new int[15];

156 :
どうもです

157 :
>>149
seasar2のような偽物と違って消えないところ

158 :
ttps://pastebin.com/U8wjQzzb
四分木を実装しようとしています。
四角の中に2つ以上モノがある際、その四角を分割してほしいのですが、
その四角を分割せず、べつの場所を分割しています。

QuadTreeのsubdivide()が原因だと思うのですが、
ttps://www.youtube.com/watch?v=OJxEcs0w_kE
を見る限りでは分割方法は正しいようなのです。

QuadTreeのsubdivide()を修正するとしたらどのようにしたら良いでしょうか?

159 :
qr.x - w → qr.x
qr.y - h → qr.y
じゃね?

160 :
>>159
ありがとうございます。
まだQuadTreeのinsert()が分割すべき四角を分割しなかったりしているので、
どこが間違っているのか考えてみます。

161 :
missing return statementというエラーについて質問させてください

例えばif文でint型の変数iの条件を

10≦i≦20とelseでそれぞれ戻り値を指定するとエラーはでないのですが

10≦i≦20

else ifでi>10 、i<20
という条件にするとエラーになってしまい、ここに適当にelseを追加するとエラーがでなくなります


やってることは一緒で、どちらも全ての場合を網羅できてると思うのですが、これはどうしてなんでしょうか

if文はelseでしめないとダメという文法上の決まりですか?
それとも論理的な誤りがあるのでしょうか?

今一プログラミングの仕組みがわかってません、、、

162 :
すいません
符号が逆でした

else ifのところはi<10、i>20

163 :
コードをそのまま書いてみて

164 :
>>163
今出先でスマホなのでそのままは書けないのですが・・・情報足りなかったらすいません


test(i)

public static String test(int i); {

if (i >= 10 && i <=20) {
return "10≦i≦20";
} else {
return "i<10、またはi >20";
}
}

これだとエラーにならないんですが

test(i)

public static String test(int i); {

if (i >= 10 && i <=20) {
return "10≦i≦20";
} else if (i < 10 || i > 20){
return "i<10、またはi >20";
}
}

これだとmissing return statementとなってしまいます

165 :
>>164
Javaだと
if (condition1) {
return;
} else if (condition2) {
return;
}
というコードは
if (condition1) {
return;
} else {
if (condition2) {
return;
}
}
と記述したことと同一なんですよ。

で、下側のコードを見れば、condition2がfalseの時にreturnが呼ばれないですよね。
もちろんcondition1とcondition2が排他であれば、
実際にはcondition2が成立しないケースは(condition1で処理されているので)存在しないのですが、
コンパイラはそこまでは見てくれない、ってことです。

166 :
訂正
「コンパイラはそこまでは見てくれない」はあまり正しくないですね。
言語仕様として、
ifステートメントのブロック内でそのブロックが選択された際の条件が考慮されたりしない
と言ったほうが良いでしょう。

167 :
俺だったらわざわざ2個目のif書かずにelse使っちゃうな。もし仮にコンパイルエラーにならなかったとしても無駄だし見辛いしバグの温床になりそうだから。

168 :
>>165-166
詳細に解説いただき、ありがとうございます
帰宅したので回答いただいたことを踏まえて色々と弄ってみたのですが

例えば、

if (condition1) {
System.out.print("true");
} else if (condition2) {
System.out.print("false");
}

このようにした場合はエラーにならなかったので、
今回のエラーの現象はif文がどうこうではなく、returnの問題、
すなわち、(表現が適切でないかもしれませんが)
if文のブロック内の詳細な条件の処理が行われる前に、return文によって、各ケース全てがfalseになる可能性がないことが確認されるために起きるエラーという理解でいいでしょうか?

てっきり外側に書かれている処理が常に先に実行されるものだとばかり思っていましたが、そういうわけではないということでしょうか…

169 :
>>168
間違っています。
先程の回答では理解されていると思っていたので端折りましたが、
Javaでは戻り値がある通常のメソッドからは常に "return 戻り値" か例外のthrowで抜けなければなりません。


int exOk1() { // OK
return 0;
}
int exOk2() { // OK
throw new RuntimeException();
}
int exNg() { // NG, compile error
// return がない
}

170 :
これはif文などの条件分岐を伴う全ての可能性があるパスで満たされている必要があります。

int ex1() { // OK
if (condition) {
return 0;
} else {
return 1;
}
}
int ex2() { // OK
if (condition) {
return 0;
}
return 1;
}
int ex3() { // NG, compile error
if (condition) {
return 0;
}
// return がない
}

171 :
ですので、最初の>>164の後者のString test(int i)の実装でも
メソッドの閉じカッコの手前に
return "";
の一行があればコンパイルは通ります。
オススメはしませんが。

172 :
>>169-171
なるほど、理解できました!多分だけど・・・
とても勉強になりました!
ありがとうございました

173 :
safariでも閉じれるようなaタグ作るのに
onClick="window.open('about:blank','_self').close();"
じゃabout:blank開くだけなんですけど、なんでですか?
初心者質問で申し訳ありません。

174 :
JavaとJavaScriptは一見似てるけど別の言語なので、このスレの対象外です
紛らわしいんじゃ、という苦情は当時のNetscape社へどうぞ
JavaScriptの質問は(この板の)他スレかWeb製作板、Webプログラミング板あたりへどうぞ

175 :
JavaScript(JS) は、web制作管理板のJavaScript のスレへ、書き込んでください!

この板の、JSのスレは、web制作管理板が荒らされたときに、
緊急避難用に立てたもので、今は使われていません

176 :
職業訓練校でjava勉強してる自分なんですが、すでにSESで内定もらってます。
でもスキル向上の事考えると自社開発に入りたいのでこのスレで情報共有お願いいます

職業訓練校プログラミング修了後(プログラマー掲示板)
http://itest.2ch.sc/test/read.cgi/prog/1571032349/l50

177 :
これ実行したときにAが1つしか表示されないのは何故ですか?
bのインスタンス生成は新しくSampleのインスタンスを生成することにはならないのですか?
3行目と6行目それぞれでAが表示されるのでは無いのですか?
https://i.imgur.com/O63piVm.jpg
https://i.imgur.com/dkGWlmY.jpg

178 :
「これ実行」というのは GarbageCollectionTest を実行した時の話ですか?
あなたの理解で正しいです。"A" が2回表示されるはずですよ。
されないとしたらあなたが入力したコードに間違いがあるか、
コード修正後に再コンパイルを忘れているか、
別のクラスを実行しているのでしょう。

179 :
>>178
ほんとですか!
ありがとうございます!
後で見直してみます…!
認識間違ってなくて良かったです

180 :
実行可能jarファイルをWindowsのエクスプローラーからダブルクリックで起動すると
内部的にはjavawコマンドが実行されるためコンソールに何も表示されないとの事ですが
もし実行可能jarファイルでSystem.out.println()を使用してコンソールになにか表示させたい場合、何か方法はありますか?
できればbatファイルなどは使用せずjarファイル単体でダブルクリックから起動できるようにしたいです

181 :
swing とかじゃダメなの?

182 :
exewrap使えば?

183 :
もすもす、JPanelで線を引くんだが、ボタンやスクロールバーなどの上に線を引けるように出来ませんか?

184 :
質問です
メインメソッドからAクラスをインスタンス化し、その中で更にBクラスをインスタンス化してます
メインメソッドで宣言、代入した変数をBクラス内で使いたいです
今はAクラスのコンストラクタの引数として渡して、更にBクラスのコンストラクタの引数として渡して使っていて、一応動きはするのですが凄くお粗末な気がします
何か他に良いやり方はないのでしょうか?

185 :
その変数が何なのかがもう少し具体的にわからないと回答が定まらないんじゃないだろうか
それでいいというケースもあるし、メインで宣言しているのがおかしいというケースもある
変数をコンテキストのようなクラスに集約すれば収まりがよくなるケースもあれば、staticやThreadLocalが向くケースもある

186 :
>>185
ありがとうございます
GUIアプリケーションを作っていて、ボタンなどのオブジェクトを変数に入れてます
ボタンを押したときにAオブジェクトを精製して処理をするようにしているのですが、
処理の工程に応じて状態を変えたいので、ボタンやラベルをABクラスに持って行きたいという感じです

187 :
>>186
横からだけど&設計の話は深入りしたくないのだけど、
そー言う場合、AオブジェクトなどにはUI部品の参照を直接渡すのではなくて、
「状態が変化したよ」と通知する先を教える。
(インターフェイスを定義してその型のオブジェクト(メインのクラス自身のインスタンスでも可)を渡す、とか)
で、変更通知を受け取るオブジェクトが、
Aオブジェクトなどから変更通知を受けた際に必要であればUI部品の状態を変化させる、
ってのがおそらくは一般解。

188 :
こういう設計が望ましい理由は色々あるんだけど(MVCとかPAC etc.でググるよろし)
GUIアプリケーションの好ましい設計パターンだという以外にも
- そもそも(Swingのイベントスレッド以外から)SwingのUI部品の状態などを変える際には
SwingUtilities.invokeLater(...)を使ったりする必要があるけれども、様々な場所で行うのは面倒
- ウィンドウを破棄した際などに、
そのウィンドウ上のUI部品の参照を保持したままのオブジェクトがあったりすると
UI部品のインスタンスがGCで回収されない
- 仮に Swing -> SWT などへの乗り換えとか(あるいはロジックをWebアプリに流用するとか)
する際に、あちこちに Swing への依存が散らばってると大変面倒
とかいう現実的な問題もありますよ。

189 :
コンストラクタに関しての質問です!
クラスを作成する際にコンストラクタを用意すると、
デフォルトコンストラクタが自動的には用意されなく
なるようですが、
インスタンス生成時に発動するのは、コンストラクタか
デフォルトコンストラクタの片方のみである、
という解釈で問題無いでしょうか?
(両方が発動する事はあり得ない...?)

190 :
>>189
クラスにコンストラクタを明示的に定義しない場合に限り
コンパイラが自動的に生成する引数無しのコンストラクタをデフォルトコンストラクタと呼ぶ
コンストラクタを明示的に定義した場合にはデフォルトコンストラクタは生成されれない
インスタンス生成時はコンストラクタを指定する (発動はしない)
指定されたコンストラクタが別のコンストラクタを呼び出してれば
複数のコンストラクタが呼び出されることはある
もし、明示的に定義した引数無しコンストラクタも含めてデフォルトコンストラクタと呼んでいるなら
一つのインスタンス生成時に引数有りのコンストラクタと引数無しのコンストラクタの両方が呼び出されることはある

191 :
>>190
了解です。
即レス感謝です、ありがとうございます!

192 :
独学の初心者です。よろしくお願いします
スッキリわかるjavaを読んだ後、ブロンズの黒本読んでいます
頭が悪いのでブロンズから頑張ります。

193 :
「○秒長押しされました」と表示されるサンプル
この記事を読んで参考にしたのですが
動画を長押しすると動画の内容と同じgif画像?を確認できる機能を実装する事は可能でしょうか?

194 :
すみません動画じゃなく画像です

195 :
キャプチャするタイミングが難しい機能に需要があるのか?

196 :
>>195
いえ具体的に言うとgifサイトを作ろうと思っています

197 :
JavaScriptの話ならWeb製作板の関連スレへどうぞ、らしいですよ。
あと「この記事」と書くならURLぐらいは貼ったほうが良いかと思います。

198 :
>>197
サイトを載せても良かったのですか?始めてきましたのですいません…
javaで聞いてみます

199 :
JavaScript(JS), Java は異なる言語です!
まず、どちらの言語か確かめろ!

Javaなら、このスレで良いし、
JSなら、この板ではなく、Web製作板の方へ書き込む!

200 :
JavaとJavaScriptは両方勉強するように

201 :
Java→Python→HTML→Javascript
この順番であってる?

202 :
しらん

203 :
>>201
何がやりたいの?

204 :
正しい順番は
VBScript→ActionScript→Delphi→XSL-FOだよ

205 :
>>203
起業したい

206 :
どうぞ。遠慮なく。

207 :
正しい順番は、この順番で読むこと!
スッキリわかる Java入門 第2版、2014
たのしいRuby 第6版、2019/3/19
起業に適する言語は、Ruby 一択!
成功したベンチャー・自社サービス系は、ほとんど、Rails, Sinatra。
GitHub, Twitter, Airbnb, Cookpad, カカクコム, GMOペパボ など
ハーバード大学にも、Rails の講座がある
サーバー側開発では、Ruby → Go
他には、JavaScript, Kotlin, Julia, Elixir

208 :
スッキリ厨w退散汁w

209 :
Javaスキルで独立(フリーランス)は厳しいな
PHPかRubyがいいよ

Javaはサラリーマン用の言語やね

210 :
Ruby で食えるとは思わないのですが…だまされたとおもってやってみようかな?

211 :
Rubyのフリーランス求人・案件情報
https://arma-search.jp/article/ruby-freelance
YouTube のKENTA の動画でもやってる。
web 系では、Python の10倍ぐらいある
Sinatra を使っている企業は、
アップル、BBC、イギリス政府、LinkedIn、Heroku、GitHub、Songbird、スタンフォード大学、レッドハットなど
Herokuは、Sinatraの開発を支援している
上からの順で、年収。
550〜600万円
Python, Kotlin, Ruby, Java
500〜550万円
C, JavaScript, PHP

212 :
Kotlin もよろしく

213 :
まだProgateでJAVA勉強始めたばかりなんだけど、ちょっと違和感があって質問。
メインメソッドで変数のデータ型をきっちり指定してるのに、その後に続くメソッド定義で再度データ型指定するのって必要なの?
「int age」ってさっき指定したじゃん!
「public static void printData(int age〜」って書く度に二度もデータ型書かせんなよ!って思うんだけど。
それともあとあとデータ型を変更するようなことがあんの?

214 :
>>213
public static void main (String[] args) {
int age = 20;
printAge(age);
}

public static void printAge(int age) {
System.out.println(age);
}
↑こういうこと言ってるんだよね?
メソッド定義にあるint ageと、mainメソッドにあるint ageは別物でたまたま名前が同じだけ
違う名前の変数でもint型ならprintAgeメソッドに渡せる
public static void main (String[] args) {
int age1 = 20;
int age2 = 22;
printAge(age1);
printAge(age2);
}

215 :
public static void printAge(int age)
このメソッド定義はint型の変数を1つ受け取りますよ、
受け取ったその変数をこのメソッド内ではageという変数名で扱いますよ、
戻り値の型はvoid型(=なにも返さない)ですよ
ってなことを定義している
>二度もデータ型書かせんなよ!って思うんだけど。
こういう疑問を持つのは個人的にスジが良いと思うのでどんどん聞くといいかも

216 :
>>214
レスありがとうございます
ああなるほど、つまりprintAgeメソッドではメインメソッドのint ageに関連した何かを行うから、
このprintAge内でもとりあえずageという変数名で扱うことにして、見やすくしておこうというわけ・・・なんですよね?
ずっと、なんで変数名だけで理解してくれないんだろう、そういう言語なのかなあと思ってました

217 :
>>216
mainの中の変数名も、printAgeの引数名も意味のわかりやすい名前にして見やすく(あとで理解しやすく)しておこうというのはその通り
下のようなコードからprint部分をprintAgeメソッドとして抽出する場合は
もとが同じ名前なので渡す変数名とメソッド定義の引数名が同じになることが多いけど
必ずしもそうなるわけじゃない
public static void main (String[] args) {
int age = 20;
System.out.println(age);
}

218 :
メソッドの中に書いてあるint ageやString[] argsは引数と言って、厳密には変数とは異なる概念
引数と変数は同じ名前であっても必ず別のモノになる
今回はint型のageという変数の値を、int型のageという引数の値として、いわば代入しているような感じ

219 :
変数にはスコープという有効範囲があって、たとえばメソッド内でint xのように宣言した場合、その変数のスコープはそれを宣言したメソッドの中に限られる
隣のメソッドでいきなりxを参照しようとしてもエラーになる
改めてint xのような引数なり変数なりの宣言が必要だし、String xとしても良い

220 :
この狭いスコープの何が便利かというと、10万行くらいあるプログラムのどこかでageをint型で宣言されているとき、ある日誰かが他のメソッドでageをPerson型として宣言しても問題ないことにある

221 :
>>218
訂正
メソッドの中に書いてある
じゃなくて
メソッド名の次のカッコの中に書いてある

222 :
>>217
ごっちゃにしてた変数名と引数名の区別がついたおかげで今やっているところのコードは全部理解できました
やっとオブジェクト指向に進めます
これ一発で理解できる人はすごいなあと思う

223 :
初心者です。よろしくお願いします
ブロンズの黒本で勉強中です

public abstract class B implements A {
// any code
}

これは
「抽象クラスとしてBをもち、BはAを継承している」
という意味で宜しいのでしょうか。

224 :
アムロ「アソコにドップの変態が!」

225 :
>>223
「このプログラムは〜」のような問題文の文言が省略されているのだろうが、選択肢だけを見ると何を言っているのかわからない日本語。

226 :
もち?

227 :
>>225
返信ありがとうございます。ブロンズの黒本の問題です。
左側の数字(1.2.3.)は行数です。誤字脱字あるかもしれません。宜しくお願いします

問、次のようなインタフェースやクラスがあるとき、is-a関係を正しく表しているものを選びなさい、2つ選択
1. public interface A{
2. // any cdoe
3. }

1. public abstract class B imolements A {
2. // any code
3. }

1. public class C extends B {
2. // any code
3. }

1. public class D implements A {
2. // any code
3 .}

A. A is-a B
B. C is-a A
C. B is-a A
D. D is-a B
E. B is-a D
F. B is-a C

228 :
>>225
public abstract class B implements A {
// any code
}

↑ここは
「抽象クラスとしてBをもち、BはAを継承している」という意味で宜しいでしょうか

229 :
もち、というのが変
もちだとするとBを持っているのは誰?
近くにhas-a関係の説明があって混乱してる?
Bがあり、とか、Bを定義し、とかならわかる
ほかはだいたい合ってる
正確にはAを継承しているのではなく実装している

230 :
>>229
有難うございます。私の日本語がおかしいです。
「implemnts→継承」と覚えてしまいました。
「抽象クラスとしてBを定義し、BはAを実装している」ですね

231 :
is-a関係は型が継承関係にあることを表していて
あるクラスをexntedsで継承するのは継承だし
あるインターフェースをimplementsで実装するのも継承の一種

問題のプログラムは次の関係にある
B ⇒ A
C ⇒ B
D ⇒ A

日本語で表現するなら
・抽象クラスBはインターフェースAを実装している
・クラスCは抽象クラスBを継承している
・クラスDはインターフェースAを実装している
ってところ

選択肢はB, Cが正解

is-a関係は日本語で考えて良いと思う
「AはBである」という場合
「A」を主語と言い
「B」を述語と言うけれども
述語の範囲内に主語が入っていれば論理的に正しい
たとえば、ドラえもんはロボットである、みたいな
ロボットはドラえもんである、は間違い、ペッパーくんかもしれないからね

232 :
>>230
一番おかしいのはBという自分自身がBをもつ書いているところ。

それとAを継承してもBが抽象クラスなので、Aのメソッドを実装したとは言えない。

233 :
>>230
単にあなたの日本語がおかしいのです。

「BはAを継承してAをもっている」が「BはAを継承してBをもっている」と書いてしまっています。

234 :
>>232 は間違い。implementたったね。

235 :
すみません。頭が混乱してきました
解答は
B. C is-a A
C. B is-a A
とのことです
有難うございます

236 :
はっきり言ってこれは英語の問題。

237 :
is-a は、継承・一種である。kind of
has-a は、包含・部品を持つ・機能の実装・インターフェース
消防車は、車の一種である。is-a
車は、ハンドルを持っている。has-a

238 :
黒本の回答に納得いってるならあとは問題ないと思うよ

239 :
>>237
それ英語がわからないと説明になっていないよ?

240 :
has-aのところにインターフェースと書いてるあたり理解があやしいと思う

241 :
>>240
彼は言葉の書き方からしてダメプログラマだしね。

242 :
知らんがな

243 :
>>242
1 http://i.imgur.com/LypT49R.jpg
2 http://i.imgur.com/C4ZpGzk.jpg
3 http://i.imgur.com/zI74k2w.jpg
4 http://i.imgur.com/MPL7tD7.jpg
5 http://i.imgur.com/C8AGLAo.jpg
6 http://i.imgur.com/cDQa1wx.jpg
7 http://img.nude-media.com/articles/064/b/26.jpg
8 http://i.imgur.com/78RviHc.jpg

244 :
こんな所で趣味晒さんでもw

245 :
ぐっすり寝たら頭が回復しました睡眠不足だと頭が回らなくなります。
雰囲気的に答えは分かるのですが、他人に説明出来るまで理解できてません

色々有難うございます
またお願いします('ω')ノ

246 :
オーバーロードの問題が雰囲気的に答えを当てれるんですが
説明できるほどの理解力がないです
何度か黒本読み返して、まとめてから質問します
宜しくお願いします(゚∀゚)

247 :
Spring bootで練習用のプロジェクトを作っています
Spring組み込みのTomcatだと問題なく動くのですが
STSのPivotal tc Server v4.0でプロジェクトを立ち上げるとエラーになってしまいます
MyBatisの設定が足りないのだとは思うのですが
原因がわかる方いらっしゃいますか?

依存性
グループID:org.mybatis.spring.boot
アーティファクトID:mybatis-spring-boot-starter
バージョン:2.0.0

エラーメッセージ
***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'mybatis.configuration.incomplete-methods[0].arg0' to org.apache.ibatis.builder.annotation.MapperAnnotationBuilder:

Reason: Failed to bind properties under 'mybatis.configuration.incomplete-methods[0].arg0' to org.apache.ibatis.builder.annotation.MapperAnnotationBuilder

Action:

Update your application's configuration

248 :
3日でスッキリわかるjavaを駆け足で読んで白本の模擬試験ページまでやってみたら正解率53%で笑えなかった・・・
趣味でpython勉強始めて、転職先がjava使うから勉強始めたけど難しい

249 :
Go は、継承を無くしたw

has-a しかないw
すべてインターフェース

包含・部品を持つ・機能の実装・インターフェース・Duck Typing

250 :
>>247
「spring boot error org.apache.ibatis.builder.annotation.MapperAnnotationBuilder」で検索!

エラーメッセージで検索するのが、開発の基本!

251 :
>>250
諦めずにググってみたところ解決しました!
以下のサイトでkazuki43zoo先生が
「この問題はversion 2.2.0.M4で解決してるよ」と仰っていたので
pom.xmlを修正したところ動くようになりました
ttps://github.com/mybatis/spring-boot-starter/issues/350

252 :
明日シルバーの試験受けるけど怖いな
コマンドライン引数、data型、ラムダ式が頭に入らない

253 :
>>252
実際の問題はかなり偏っている。気にしている問題はいっさい出ないかもしれない。

254 :
>>253
そうなのか。
黒本で最後の模擬試験が初見で75%くらいの正答率だったけど、自分でもまぐれだと思うから恐怖が拭えないでいる。

先駆者様敵にこの辺は注意して抑えた方がいい、みたいな情報があったら欲しいです。

255 :
>>254
時間配分は気にした方がいいよ。後半に時間がかかる問題が集中して落ちた経験がある。

256 :
どのくらい問題パターンがあるかわからないけど、継承がらみの問題はかなり多いと思う。

257 :
>>256
なるほど。
逆にその辺は点数取れてるからまだマシかな。
自分の得意分野ひけるようにお祈りせねば。

アドバイスありがとう。

258 :
シルバー頑張れ!

259 :
>>257 は落ちたんだろうな

260 :
資格か。そういや俺コンピュータ関係の資格何も持ってないな。なんか取るか。若くないし定年も近づいてきたので今さら取っても無駄だけど。

261 :
エラー箇所にカーソルを当てたらeclipseのIDEが解決策を示してくれてたのに、気づかずに1日無駄にしてしまった。

262 :
>>261
エラーって何だよ? 

263 :
とりあえずさっきプロゲートをギブアップしてきた
配列と繰り返しのとこが難しすぎる
何をやる為のプログラミングなのかがサッパリわからない
もう少し目的をうまく伝えてくれる教材が欲しい
配列と繰り返しの目的をわかりやすく教えてくれる教材なら1万でも安くない

どなたか配列と繰り返しを初心者にもわかるようにちゃんと説明できている教材をご存知ないですか?

264 :
俺もProgateのJavaは途中までやってた
とても有料まで進む気にならなかったわ
無料の部分で思いとどまって良かった
ProgateのJavaは途中で急に難しくなるからな
理解力がずば抜けてる人ならいいんだろうけど俺は凡人だしプログラミング初心者だしな
もっとわかりやすい初心者用のプログラミングアプリがあればいいのに

265 :
結局本を買う事から始めてみるか
不安だから優しそうなJavaの本を片っ端から買ってみる
どうしてもJavaを覚えたい

266 :
>>263
説明出来てない教材のほうが少ないと思うぞ
「Java 配列とは」で検索して10個くらいの説明読み比べるといいかも
Progateはどんなもんなのか見てみたがあれはウンコ

仕事で考えてるならスッキリのような超入門書をサクッと読んだあと
Head Firstのようなしっかりした入門書を読むことを勧める

267 :
>>266
゚+。:.゚おぉ(*゚O゚ *)ぉぉ゚.:。+゚
ありがたい

268 :
てゆうかプロゲートでわからなかったところはネットで解決した
簡単に説明してて一発で理解できた

269 :
>>260
エクセル初級とか持ってる爺は可愛いかもしれない

270 :
プリミティブ型の変数の宣言と、インスタンスをnewする文だったら、
やはり前者を上に書くべきでしょうか?

271 :
>>270
どういう順序で書けば読みやすくなるかを考えて決める
プリミティブだから先に書くべきって考え方はしない

272 :
超初心者です。宜しくお願いします
カッコに入るコードを選択する問題がありました

class Q27 {
public static void main ( String [ ] args )
int [ ] date = { 10,20,30,40,50 } ;
int sum = 0 ;
for ( int i = 0 ; 【ここにコードを挿入】; i ++ ) sum += date [ i ] ;
System . out . println ( sum / dara . length ) ;
}

解答
i < = date . length -1

解説で「変数 i は配列 date の添え字であるため、i の値が 0 からdate.length -1」まで変化するように条件式を設定すればよい」
との事ですが、いまいちわかっていません
申し訳ありませんが、どなたか解説お願いします。

273 :
>>271
ありがとうございます

>>272
配列変数名がdateになってますが、dataの間違いですかね
日付は31日までですし…

配列dateの最後の要素(=5番目の要素)は、date[date.length]ではなく
date[date.length-1]となります(この場合はdate[4]が最後の要素となる)
添え字は0から始まるので最後の要素は要素数-1(=length-1)となる点に
お気を付け下さい

274 :
>>273
解説有難うございます
誤字脱字で申し訳ありません
「data」です。
添え字が0から始まるのは理解しております
問題で「 i++ 」と記入されているから「length-1」とするのでしょうか

お手数ですが宜しくお願いします
<m(__)m>

275 :
>>274
ごめんなさい、どこが分からないのかがいまいち伝わりませんでした…
i=0の時、data[0]=10
i=1の時、data[1]=20
i=2の時、data[2]=30
i=3の時、data[3]=40
i=4(=data.length-1)の時、data[4]=50
の全ての場合を足しこむ必要があるので、iは0からdata.length-1まで変化する必要が
あるのだと考えましたが
また明日以降質問して下さい

276 :
>>275
解説有難うございます。
添え字は0から始まる、とだけ理解してたのですが
詳しく書いて頂き出題の意味が分かりました。
私が出題の意味を理解してないんだと思います

本当に有難うございました。

277 :
何度も申し訳ありません
for文が苦手で理解できていません
for文の処理の順序を解説お願いします
左側の1から8は行数です

1 class Q27 {
2 public static void main ( String [ ] args ){
3 int [ ] data = { 10,20,30,40,50 } ;
4 int sum = 0 ;
5 for ( int i = 0 ; i <= data . length -1 ; i ++ ) sum += data [ i ] ;
6 System.out.println ( sum / data . length ) ;
7 }
8 }

ぱっと見の暗算で10+20+30+40+50=150を5で割るって考えてしまうんですが
自分の知能でコード解析すると
@3行目、int型の変数dataに要素10〜50を入れる
A4行目、in型のsumに0を代入
B5行目、for文、int型iに0を代入、iがdataより小さい間、回る。
ここまでしか分かりません
C5行目、0が代入されたsumにdata[0]の10、を足して代入
Dsum =0 に、data[0]=10を足して代入。sumは10
E6行目、10 割る data[0]の10 、なのでsumは0
Fdata[0]に入ってたiが5行目でインクリメントされi=1
Gi <= dataに戻り・・・1になったi よりdataが小さければ・・・

となり訳が分からなくなっています
大変お手数ですが、for文の回し方の順番をご教示願います
<m(__)m>

278 :
for文の前に、まだ配列についても理解があやしいな
@3行目はint型の変数dataではなく配列型の変数data
要素の型としてintを持つ配列だ
5個の値で初期化してるから、配列の長さは5になる
E6行目はdata[i]で割ったら分母10だけど、data.lengthで割ってるでしょ
lengthは配列の長さを表すから分母は5
つまり10/5=2で、まず2が出力される
ちなみに分母が10だったとしても10/10はゼロじゃないだろ落ち着け
「sumは0」という表現もあやしい
ここではsum / data.lengthの値をprintlnメソッドの引数に渡しているだけで、sumには代入してないからsumの値は変わらない

279 :
>>277
ツッコミどころは色々ありますけど、5,6行に関しては分かりやすく書くと

for (int i = 0; i <= data.length - 1; i++)
  sum += data[i];
System.out.println(sum / data.length);

と書かれていて、これは

for (int i = 0; i <= data.length - 1; i++) {
  sum += data[i];
}
System.out.println(sum / data.length);

と同じです。つまりSystem.out.println()の行はループの外です。

280 :
B5行目、for文、「iがdataより小さい」というのが間違い
それをいうならi <= dataだろ
i <= data.length -1と書いてあるんだからlengthを無視してはいかん
「iがdataの長さより小さい」が正しい
data.lengthはさっきの説明通り5だから簡単に書き直すと
for (int i= 0; i <= 4; i = i + 1)
となる

281 :
ああ、ループの外だから2は出力されないか…

282 :
for (int i = 0; i <= 4; i = i + 1) {
//何か
}
なら理解しやすいはず
forの構文の意味は
for (ループの最初だけ実行する初期化処理; 継続するかどうかの判定; 1周ごとに行われる処理)

まずintの初期値が0になる
次に0<=4を評価して、成立するから「//何か」を実行
forに戻ってきてiをインクリメントしてiは1になる
こんどは1<=4を評価して、2回目の「//何か」を実行
iをインクリメントして2になる
2<=4も成立するから実行
中略
5<=4まで行ったら成立しなくなるので、ループを抜ける
結局「//何か」は5回実行されて終わり

283 :
有難うございます

「実行結果として30を表示するようにしたい」との問題です

@3行目、intの配列型が変数data、箱が5個
A4行目、intのsumに0を代入
B5行目、iに0を代入、iがdate.lemgthの長さより小さければfor文で回る
C5行目、data[i]=10、にsumを代入。sum=10
D6行目、sum=10 割る lengthの配列の長さ=5、なので【2】
Eforに戻ってきてiをインクリメントしてiは1になる
F今度は1<=4を評価して、2回目の「//何か」を実行
Giをインクリメントして2になる
H2<=4も成立するから実行
Idata[2]=20、sum+=20
J20/5=【4】
中略
K30/5=【6】
L40/5=【8】
M50/5=【10】
【】の中の合計=30

曖昧な点
「i=1の時、data[0]=10」だと数が合わないので
iを0にするために、data.length-1として
「i=0の時、data[0]=10」としている

Q1:この5回回った【】の中の合計は何処で足し算されてるのでしょうか

284 :
処理の順序が正しいかご教示願います

次にプログラムをコンパイル及び実行した結果として正しいものはどれか
1 class Q23 {
2 public static void main (String [ ] args ) {
3 int i = 1 , sum = 0 ;
4 while ( i ++ < = 10 ) sum + = i ;
5 System . out .print ( sum ) ;
6 }

解答、66が表示される

@intのiに1が代入
Asumは0が代入
Bwhileは〜の間
Ci=1が10より小さい間
Di=1に++、i=2
sum=0 += i=2、sum=【2】
Ei=2、
Fi=2が10より小さい間
Gi=2に++、i=3
sum=2 += i=3、sum=【5】
中略
Hsum=11 になったら終わり
sumにはiの2,3,4,5,6,7,8,9,10,11が加算され【65】になる

285 :
>>284
合っていますが、

> 解答、66が表示される
ではなく「解答、65が表示される」、

> Hsum=11 になったら終わり
は 「i = 11 になったら終わり」ですね。

細かい部分をいい加減にするとあなたの理解の妨げになりますし、
読む方も書き間違えただけなのか理解できてないのか分かりにくくて面倒です。

286 :
>>283
>>277のプログラムでfor文で繰り返し実行されるのは5行目の
sum += data[i];
部分(とi++)だけです。
ここでint配列に格納されているすべての要素を順にsumに足し合わせています。
sum = sum + data[0]; // i=0の時
sum = sum + data[1];
sum = sum + data[2];
sum = sum + data[3];
sum = sum + data[4]; // i=4の時

結果、forループ終了時点でsumは150 (= 10 + 20 + 30 + 40 + 50)で、
System.out.println(150 / 5) の結果(5はdata.length)、30が表示されます。
それだけのことです。

287 :
Javaの問題集でありました。なぜ10行目でコンパイルエラーになるのが理解できていません
for(;;)のカッコの中の;;が無限ループ?になるからでしょうか

public class p28Q26 {
public static void main(String[] args) {
int i=0;
for (;;) {
if(i >= 5)
i=0;
else
i++;
}
System.out.print(i);
}
}

288 :
>>285
解説有難うございます
「解答65が表示される」が正しいです。
誤字脱字申し訳ありません

289 :
>>286
解説有難うございます
5行目、for ( int i = 0 ; i <= data . length -1 ; i ++ ) sum += data [ i ] ;
ここで、sumに加算されていくんですね
見てたつもりで見てなかったです。

親切に解説して下さり本当に有難うございます

290 :
>>287
システムアウトの構文がメソッド内ではなく、クラスに書かれているから。

291 :
>>290
間違った。わからんな。

292 :
なぜ解答がfalseになるのかが分かりません

次のプログラムを粉ピル及び実行した結果として正しいものはどれか
1 public static void main(String[] args) {
2 int count = 3;
3 int limit = 2;
4 System.out.println(count <= limit);
5 }

解答:コンパイル及び実行されfalseが表示される

質問1:
eclipsでコード入力し実行すると4と表示されました
奇数はtureで偶数はfalse等の決まりがあるのでしょうか
質問2:
System.out.println(3 <= 2);
3が2よりも小さいなら・・・「小さいのでture」と考えてしまいました
何を基準にtureでfolseなのか理解できてません

何度も教えてクレクレで申し訳ありません。
宜しくお願いいたします
<m(__)m>

293 :
>>291
有難うございます。

解説では
「4行目から9行目のforループからぬけることがないため、10行目に制御が移ることが出来ない
そのため、コンパイル時に10行目でコンパイルエラーとなる」
と記載されております。
以前、聞いた話では
例えば
for ( int i = 0 ; i < 10 ; i++ ) {
のiのことをループ変数と呼ぶので、そこに「 ; 」を入れるとループすると聞いた覚えがあります

294 :
>>292
誤字脱字すみません
「粉ピル」でなく「コンパイル」です
誤⇒次のプログラムを粉ピル及び実行した結果として正しいものはどれか
正⇒次のプログラムをコンパイル及び実行した結果として正しいものはどれか

295 :
>>292
少なくとも奇数、偶数という概念はない。

296 :
記号の意味を教えて下さい

int left = 12;
int rigth = 34
system.out.println(left > rigth ? left - rigth : rigth - left );

この「 ? 」と「 : 」はなんの記号なのでしょうか

297 :
>>295
有難うございます。
エクセル出来る人が昔、言ってたような気がしたのですが勘違いですね
親切に有難うございます
<m(__)m>

298 :
>>296
A ? B : C
AならB、違えばC
大きい方から小さい方を引く処理をしてる

299 :
>>298
解説有難うございます

処理方法は
@left > raiget
Aleft - rigth = 12 - 34 = -22
Brigth - left = 34 - -22 = 22

300 :
>>298
アドバイスして頂いた後に問題集の解説を読み返して分かりました

「条件演算子を使った式である。条件式、left > rigth 、が成り立つ場合に、 left - rigth :が
そうでない場合はrigth - left 、が結果となる」

本当に有難うございます
<m(__)m>

301 :
いきなり問題集で勉強しているのが不思議

302 :
>>301
「スッキリわかる」は読みましたが
無限ループの「 ; 」や、「left > rigth ? left - rigth : rigth - left」は乗ってなかったです
あまりも理解力がなさすぎて困りもんです
for文が苦手です。

303 :
誤字脱字が多いとか、半角全角が混ざってるとか、不要なスペースが入ってたり必要なスペースが無かったりとか、プログラマとして致命的な欠陥
意識して直したほうがいいと思うよ

304 :
>>302
あなたが質問していることは資格を取るための知識であって、Javaプログラマに必要な知識ではない。

305 :
誤字脱字多いですね。申し訳ありません
音声再生リストに入れたりして学習してる関係で不要なスペースを入れたりしてました。

どの程度知識あるか把握するのに資格は必要かと思ってました。
解説して下さった方には本当に感謝です
有難うございます。

306 :
プログラ魔

307 :
あなうめ式Javaプログラミング超入門、2019/12/3
大津 真、田中 賢一郎、馬場 貴之

こういう本が出てるのだろ

大津真は、多言語の本を書いてる著者。
日経Linux のライターでもあるのか?

308 :
eclipse で書けば、最低限の文法ミスは取れると思うのだが
それをやる気はないんですか?

309 :
>>308
「スッキリわかる」や問題集を音声変換ソフトに入力して日々聞いています
eclipsに書いても、音声変換ソフトではスペース多く入れないと変な英語になったりするので
音声変換ソフトに入力しています

310 :
>>309
エクリップス?

311 :
文系みたいな勉強法だなw

312 :
実際に動かしてみないのか!
畳の上の水練だな
プログラムは動いてなんぼなので
必ず動かしてみることを強くお勧めする
動かないプログラムは何の意味もない

313 :
>>312
アドバイス有難うございます
実際に入力しても理解できないものがあり質問していました。

例えば
public class q18{
 public static void main(String[] args) {
  int count = 3;
  int limit = 2;
 System.out.println(count <= limit);
 }
}
実行結果は「4」と出ますが
問題集の解答は「コンパイル及び実行されfalseが表示される」との事です
エクセルの関数で奇数偶数表示でfalseやtureと判断する場合があるので
Javaでもあるのか?等、質問してましたが未だに判明していないです

314 :
10進法でシフトさせる方法って無いですか?
例えば1234→12、とかってやりたいんですが…

315 :
>>314
10 で割るのが適当かと

316 :
>>313
4と出るわけがないから実行するもの間違えてるよ

317 :
https://paiza.io/projects/FhYUXk-mGxVmUKEaiXt5vw

318 :
>>314
10のn乗で割る
2桁シフトさせたいなら10の2乗の100で割る
ビット演算のシフトも意味としては同じ

319 :
>>316
有難うございます。
申し訳ありません。4じゃなくて「2」でした。
以下で実行すると2と表示されます

package Study;
public class Stady03 {
public static void main(String[] args) {

int count = 3;
int limit = 2;
System.out.println(count <= limit);
}
}

320 :
>>316
有難うございます
試しに「hello java」と入力しても「2」と表示されてました。
「false」と表示出来ました。
本当に有難うございます

321 :
>>315
>>318
ありがとうございました

322 :
ああ、別のプログラムを動かしていて、想定外の出力がされていたということか

323 :
>>322
実行する時に「Javaアプリケーション」でなく「実行の構成」から実行してました
左側でクラスを選択せず実行しなかったので、前に選択してたクラスを実行させてました。
>>316 さんがアドバイスしてくれなかったら永遠に謎めいていました
本当に有難うございます。
エクリプスの操作方法の本も購入して頑張ります。

324 :
>>317
わざわざ書いて頂きありがとうございます
こういうのもあるんですね。
本当に有難うございます。

325 :
Java全く知らない状態から約2週間でbronze合格出来て嬉しい!
シルバーまでは取ってほしいと会社に言われてるので紫本で勉強を始めたのですが
二次元配列とクラス名@ハッシュコードが出力される問題の理解が足りない・・・
何故ハッシュコードが出てくるのか・・・

326 :
>>325
凄い!2週間で合格!!!

327 :
>>325
前に他の言語とかの知識はありましたか?

328 :
>>327
二ヵ月程Python触ってwin用のguiアプリ作ってみた位です
オブジェクト指向使わずに作ったので今見ると糞コードですが・・・
スッキリわかるjava軽く読みながらコード書いて後は白本と黒本やってれば大丈夫だと思いますよ

329 :
>>325
配列の要素を順番に探すと時間がかかってしょうがないからだよ
二次元配列を使うぐらいなら RDB を使うのが一般的だとは思うけど

330 :
>>325
ハッシュコードが出るのはtoStringがオーバーライドされていないからというシンプルな理由
ObjectのtoStringがそのように実装されているから、すげ替えないことには同じ結果になる
どう書くとオーバーライドが成立するのか、しないのか、という話はそこそこ難しいかもしれない

331 :
>>330
アドバイスありがとうございます。
実際に書きながら確認していって理解していこうと思います。

332 :
>>328
有難うございます
私も頑張ります

333 :
解説してくれ方のお陰で、過去問したら89点取れました。
本当に有難うございます。
<m(__)m>
100点を連続5回取れるよう頑張ります
今後とも宜しくお願いします

334 :
enum定数というのが出題されました。
「スッキリわかる」には載ってなくググってみましたが
理解力がないのでチンプンカンプンです
おススメの本とかサイトがあればご教示願います
<m(__)m>

335 :
新しいインスタンスを生成できない

これに尽きるな

336 :
>>334
柴田望洋の『新・明解Java入門 (明解シリーズ)』
僕は望洋さんの本で勉強したなー

337 :
昔読んだ初級本を理由があって探しています
最終まとめお題が「タイピング速度訓練ゲーム」(予約語をタイプして時間を計るもの)である初級本に心当たりのある方はおられますか?

338 :
>>336
アドバイス有難うございます。
アマゾンで
柴田 望洋 「解きながら学ぶJava 入門編 (日本語) 単行本 ?」
購入しようか迷ってたとこです

339 :
>>336
アマゾンで
柴田 望洋 「解きながら学ぶJava 入門編 (日本語) 単行本 ?」
購入しました。

340 :
問題集の解説が理解できてません
どなたか解説お願いします<m(__)m>

1 public class Q24 {
2 public static void main(String[] args) {
3 System.out.println(args[0]);
4 }
5 }

解説
コマンドライン引数に関する問題。コマンドライン引数を指定して実行した場合、
コマンドライン引数の数と同じ要素数の配列インスタンスが生成され、指定した文字列で初期化されます。
なお、コマンドライン引数を指定しない場合でも、必ず配列インスタンスは生成されます。
この場合は、要素数0の配列インスタンスが生成されます。
設問のコード3行目では、mainメソッドの仮引数で宣言しているString配列型変数argsの添え字0を指定し、
要素の値をコンソールに出力しています。コマンドライン引数を指定していない場合は、
String配列型変数argsは要素数0の配列インスタンスへの参照を保持します。
3行目で参照している添字0、つまり1つ目の要素は存在しません。
そのためこのプログラムは、コンパイルが成功しても、実行時に例外が発生します

341 :
>>340
1コマンドライン引数に関する問題。コマンドライン引数を指定して実行した場合、
2コマンドライン引数の数と同じ要素数の配列インスタンスが生成され、指定した文字列で初期化されます。
3なお、コマンドライン引数を指定しない場合でも、必ず配列インスタンスは生成されます。
4この場合は、要素数0の配列インスタンスが生成されます。
5設問のコード3行目では、mainメソッドの仮引数で宣言しているString配列型変数argsの添え字0を指定し、
6要素の値をコンソールに出力しています。コマンドライン引数を指定していない場合は、
7String配列型変数argsは要素数0の配列インスタンスへの参照を保持します。
8 3行目で参照している添字0、つまり1つ目の要素は存在しません。
9そのためこのプログラムは、コンパイルが成功しても、実行時に例外が発生します

各行に番号を振りました。どの番号の行からわからなくなったのでしょうか?

342 :
>>341
本当に有難うございます。
<m(__)m>
8行目から理解できていません。
「3行目で参照している添字0、つまり1つ目の要素は存在しません。」
これは、初期化されていないからエラーになるという意味なのでしょうか
以下のコードだと0が表示される事は理解できてます。
1 public static void main(String[] args) {
2 int [] score = new int [5];
3 System.out.println(score[0]);
  }

343 :
CとC++を一通り教科書一冊やったところで、Javaにも手を出してみようと思うんだけど
1年くらい前にKotlinって言語が急上昇して、これがJavaの上位互換言語だみたいなことが言われてて、今からJavaやるのはありえない!みたいな意見を目にしたんだけど、実際その通りなの?
JavaもKotlinも全然分からなくて判断のしようがない

344 :
>>342
初期化の問題ではありません
配列の要素数の問題です

int [] score = new int [5];
System.out.println(score[0]);

これは要素数5の配列を作って添字0の値を出力するコードです

https://light.dotup.org/uploda/light.dotup.org628898.png

引数に何も指定しなかったら要素数0の配列が作られます
要素数が0のとき添字0は存在しないです

345 :
>>343
上位互換ではなく寄生(悪い意味ではない)。

346 :
mainメソッド内で入力を受け付けて、誤入力があった時に終了させたいのですが、
その際にreturn;を使っていいでしょうか?

347 :
>>346
いいですよ。
でも終了コード(exit status)を指定したかったら
System.exit(int);
使うべし。
あと、そもそも意味が違うので、そのmainメソッドが他のメソッドから呼ばれる場合は
returnとSystem.exit()では動作が違うので注意ですけどね。

348 :
>>344
有難うございます。
しかし
頭が混乱してきました
もう少しまとめます

349 :
>>347
分かりました
ありがとうございました

350 :
>>340
Ruby の1-liner で、コマンドライン引数を、2つ渡した場合と、引数なしの場合

配列のサイズが0 の場合は、要素は存在しないため、アクセスできない。
Rubyでは、存在しない要素はnil となり、Java ではエラーになるのか?

ruby -e 'p ARGV.length, ARGV[ 0 ], ARGV[ 1 ]' あ a
#=> 2, "あ", "a"

ruby -e 'p ARGV.length, ARGV[ 0 ], ARGV[ 1 ]'
#=> 0, nil, nil

351 :
>>350
One-linerを1-linerと書くのはやめないか?
「漏れ」以外にその書き方するやついないぞ

352 :
>>350
そのあたりは言語のデザイン(哲学)が違う。
Javaだと存在しない配列要素へのアクセスは例外が生じる。
ex.
System.out.println(new String[]{}[0]);
-> ArrayIndexOutOfBoundsException

353 :
>>343
今のところKotlinはJavaが分かってる事が前提の言語。Kotlinからもやろうと思えばできるが。

354 :
Random rand = new Random();
のように、インスタンス化の際に代入を行っている文の意味は分かるのですが、
そうでなく急にnew演算子から始まる、例えば
new Sample("samp"); // Sampleはクラス名
のような文はどう解釈すればよいでしょうか?
変数に格納されていないのですが…

355 :
>>354
作ったら放棄
作る処理だけ動く

356 :
>>355
ありがとうございます
ブロンズやシルバーの問題集でよく見かけるんですが、
どういう場合にメリットがあるんでしょうか?

357 :
実用上のメリットはない
コンストラクタの挙動を学ぶための非日常的なコードだよ
英語の教科書を見てThis is a pen.と発言することにメリットはあるのでしょうかと真顔で問うような話だよ

358 :
一応補足しておくと、コンストラクタを含めてメソッドには副作用がある場合がある
たとえばコンストラクタの中でデータベースの値を更新したりファイル出力を行ったりもできる
そういう副作用だけが必要な場合、こういう奇妙なコードを書いてしまうことはあり得る

359 :
>>357-358
そうなんですね
ありがとうございました

360 :
>>359
C++の影響。newはもともとメモリの動的確保を意味している。

361 :
>>360
C++ ならば new したものは delete する作法を強要するべきで new して放置とかありえないのでは?

362 :
ハンドルがないのに?

363 :
噛み合わないコントみたいになってきたな

364 :
>>361
deleteをnewの前に書いとけばいいのでは?

365 :
きったねーソースだなお前

366 :
汚い以前にだめだろ

367 :
スッキリわかるJava入門実践編第2版を読んでいて疑問に思ったことがあります。

Comparableインターフェイス
Cloneableインターフェイス

という二つのインターフェイスがあります。

この二つのインターフェイスを実装するときの書き方ですが、
以下のように書くようです:

public class A implements Comparable<A> {

}

public class B implements Cloneable {

}

なぜ、Comparableには<A>という仮型引数を書くのに、Cloneableでは書かないのでしょうか?

Cloneableには実装すべきメソッドが1つもないから仮型引数を書く場所もないからでしょうか?

368 :
Comparabeが実装すべきメソッドcompareは引数として比較対象のオブジェクトをとる
その比較対象が自分自身と同じ型に限定されることを示すためにAが要る
Cloneableはメソッド自体がひとつもないマーカーインターフェースなので対照の例としては極端すぎる
Runnabeはrunメソッドがあるけど、runメソッドは型引数を必要としないので、Runnableも型引数を必要としない

369 :
bronze取ってから3週間更に勉強してsilver受かった!
落ちなくて良かった

370 :
質問です
Javaにおけるダイナミックバインドとはどういうものでしょうか?
Googleで調べてもいまいちよく理解出来ません
どなたかお願いします

371 :
バインディングっていくつか意味あるけど、
ここでの意味は、「メソッド呼び出しと、メソッドの中身の実行文を結びつけること」
継承したクラスでオーバーライドされたメソッド呼び出しは、プログラム実行時に動的に解決される
static や private や final なメソッドの呼び出しは、コンパイル時に静的に解決される
ざっくり目に説明すると、
動的とは、メモリ上で作用する様子
メモリって読み書き早いよね、だから動的って言う言葉使ってるんだと思う
静的とは、ハードディスク上のプログラムファイルの時点ですでに完成されてる様子
HDDって読み書き遅いよね、実行ファイルの時点ですでにメソッドコールとメソッドボディの結びつきはすでに解決してる
実行しなくても、静的に class ファイルを解析することによって、メソッドコールからメソッドボディが辿れる
動的に解決すると、実行時に余計な動作が入るので遅くなる
静的に解決すると、実行時には指定されたアドレスへ移るだけなので動作は早い
どれくらい違うかは、オーバーライドされたメソッドと、オーバーライドされてないメソッドの呼び出しを大量にやってみて比較とかかな?
ノイズなくしてメソッドコールの時間のみを計測するのはなかなか難しそう
聞いたことあるのは、インターフェース使いまくってプログラム組むとメソッドコールの解決で余計に時間かかるよってこと
どれくらい時間が変わってくるのかは俺は知らない
てか、大して変わらんのじゃないかなと勝手に思ってるけど、調べて分かったら教えて

372 :
Wikipediaの例が分かりやすいと思うけど
https://ja.wikipedia.org/wiki/%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF%E3%83%90%E3%82%A4%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0
よくある
鳴く()メソッド持つ動物クラスを継承した犬クラスと猫クラスで鳴くを実行するとかそういうの

373 :
>>371
>>372
回答ありがとうございます


オーバーライドされたメソッドの動作内容は、入っている型(左辺の型)ではなく、
実体の型(右辺の型)で決まるという理解でいいですか?

374 :
>>373
横からですけど、そうです。
Javaでは変数の型ではなくて、変数に格納されている実際のオブジェクトの型に基づいて呼び出すメソッドが決定されます。
このようなプログラミング言語の機能をダイナミックバインディング(動的束縛)と呼びます。
一般的にこの手の文脈での「動的に」と言うのは「(プログラムの)実行時に」と捉えれば良いです。
「静的に」と言うのは実行前、プログラムのコンパイル時(や言語によってはリンク時)に解決されるものを指します。
静的に解決されたものは実行時には(一般的には)変わりません。

375 :
>>374
ありがとうございます

376 :
>>369
おめでとう!

377 :
>>344
ブロンズ合格できました。
有難うございます。
次はシルバー頑張ります!

378 :
合格することに何の意味も価値もない資格に1万3千円も使ったのか

379 :
応用技術者試験も価値はないですか?

380 :
ない

381 :
ここに書き込むことにも価値はないし
生きてることにも価値はないし
価値がないと思うことにも価値はない
一切は空である

382 :
楽しかったらええんや
ワイはブロンズ、シルバー、ゴールドとったで

383 :
>>378はそれだけ退屈な人生で楽しみも見出せないらしいな

384 :
>>379
現実問題として士業に関わる資格以外はほぼ価値がない。
詐称し放題で偽物もいるし、資格がある=実務経験、じゃないから
知っているけど使えない人も多く、基本的に信用されない。

385 :
それがないと駄目な資格以外の検定みたいなのは意味がないということですね。

386 :
資格以外の全部が同じなら資格持ってる人の方がいいじゃん

387 :
そういう積み重ねが自分というブランドを構築し価値をもたらすんじゃないかな、僕は今いい事を言っている

388 :
残念だけど価値なんか0.0001?もないよ
試験代の無駄だよ

389 :
数検や英検や漢検なんかと同じで、要するに自己満足ということですね。

390 :
無いよりマシ程度
あとはやる気や積極性を少し評価できるぐらい

391 :
所属する会社の評価制度に組み込まれていたり勘案されるなら実益あるよ
そういう面ではJava試験はやや弱い

392 :
>>388
君資格持ってるの?おーん?

393 :
このようにマウンティングできます

394 :
資格持ってて自己満以外でなんか良いことあったか?
それが答えだ

395 :
逆に持ってて面倒なことの方が多かった

396 :
>>381
諸行無常

397 :
試験は知識量を測るものでしかない

398 :
>>381
色即是空
空即是色

399 :
資格と言えば、昔々何の資格も持たずに学校でC言語教えてたことあるなあ。
あと、特に資格を持っていない一太郎を教える先生のアシスタントもしたことあるなあ。

400 :
会社によってはブロンズでも資格手当あるから受験料のもとは取れるしな

401 :
資格手当あるところはそのぶん基本給が低くされてる
元を取るんじゃなくて元々マイナスだったってだけだ

402 :
基本給高いところは資格ないと入れないんじゃ・・・

403 :
>>401
資格を取るんだ!君には資格が足りない

404 :
>>394
君もだ!君には資格が欠けてる

405 :
資格試験受けて落ちたら立ち直れないと思ってる臆病者だから
資格取れなくてそれを認めたくないから資格には意味がないと
言ってるんだろ、素直に資格取ろうよ

406 :
資格を持ってる人は知識があるし勇気がある
資格を取って勇者になろう

407 :
応用技術者試験に一発で合格したんだけど、アルゴリズム以外は完全に暗記科目だよね。

アルゴリズムは簡単だからパーフェクトだった。

暗記試験ではなく、ちゃんと能力を評価する検定試験ってない?

アルゴリズム検定とかあればいいのに。

408 :
AtCoderとか

409 :
>>408
その試験はとると有利ですか?

410 :
>>409
レッドコーダーになったら世界中から称賛を浴びます

411 :
資格を取る人は、年に、1%ぐらい。
10年で、1割

社員の9割は、出世しない・するつもりもない人。
最新・流行を勉強しないから、絶対に売上が増えることがない人。
だから、これらの人がリストラ対象になる

長年、同じ事だけをやっていると、新しいものが出てくるから、普通に売上が減っていく。
売上を維持するには、最新・流行を勉強しないと無理

だから、勉強しない人が嫌われる。
売上が減るから

412 :
温故知新

413 :
ここに書き込んでいる奴で正社員が何人いるかだよな・・・

414 :
デザインパターンの勉強始めたんだけどどれも同じに見えちゃう…

415 :
effectivejava買おう思うんだけど第2版でもおk?

416 :
Java13 で multi line text きとるやんけ!
これずっと欲しかったやつ!
でも、内部に変数埋め込めない片手落ち機能…
なんでやねん

417 :
multi-line string literalとstring interpolationは互いに独立した要素だよ
不可分なペアじゃない
恨むとすれば今回の方向性じゃなくてJavaの進化が遅いこと
multi-line自体も未だにプレビューだから正式リリースはJava15だろう

418 :
Eclipse よりNetBeansおすすめ

419 :
こういう需要のない物を初心者に勧めて不幸にするカスっていなくならんよなぁ

420 :
Eclipseを説明を読まずに何となく不満もなく使っています。

IntelliJ?とかいうIDEはおすすめでしょうか?

Robert Sedgewickさんの『Algorithms 4th Edition』のサイトではEclipseではなくIntelliJ?を勧めています。

421 :
>>420
インテリjに慣れたらeclipseにはもう戻れない

422 :
>>420

ありがとうございます。

423 :
ステマ

424 :
IntelliJ はみんな良いって言うよね!
IntelliJ サイコーーーーー

425 :
開発現場でインテリJとかっていうIDE使ってるところはいまだかつて一度も見たことない
使われてないのにここの奴みたいに過剰に勧めてきたり自演で最高とかひたすら言ってるんだよね
つまりそういうことなんだよ

426 :
結局は使った本人が決める事だから無駄

427 :
IntelliJとVSCodeの2択

428 :
https://mem-archive.com/2018/05/12/post-494/
これって他の言語でもこんな感じの実装なん?
なんか思ったのと違う値返されたって人たくさん出てきそうじゃない?

429 :
>>425
お前がAndroid案件付いたことないだけだろ

430 :
IntelliJ は Kotlin で使うことがあるな。趣味で俺が勝手に使ってるだけだが。

仕事では俺は Java やっておらずCやPerlをviでやるぐらいでたまーにEclipse使うが本当にたまにしか使わん。
まあ、動作させるサーバで直接Eclipse動かして画面だけ飛ばせばコンパイルしてデバッグも楽なんだろうがクライアントからリモートデバッグさせるのはできないし(俺がやり方知らんだけのような気もするが)面倒そうなのでほとんど使ってない。

431 :
あ、でも、WSL使えばもうちょっと楽になるのかな?

432 :
インテリアJ
Netビーズ
この二つは使ってる現場全くないから触るだけ時間の無駄だからやめとけ
勧めてる奴はただのステマ馬鹿だから

433 :
>>432
君はどういう現場を何ヵ所ぐらい巡った事あるの?

434 :
基幹、金融(銀行、為替)、携帯ゲーム、スマホアプリ
10年以上
もちろん全部エクリプソだ
おまえらゴミが趣味でやるプリョグラミングとは全然ちがうよ

435 :
>>434
弟子にしてください!!

436 :
イヤです!!

437 :
かといって一人の人間が体験できる事には限りがある。
全ての現場を同時には体験できないからアンケートを取ったりしない限りは全体の現状はわからない。
自分の体験からだけではなくそういったアンケートの結果もないと信憑性は低いまま「へー。君はそういう体験をしたんだ」で終わる話になる。

438 :
うちの親戚みんなヘビースモーカーだったけど長生きしたぞ!だからタバコが身体に悪いなんて嘘!みたいな話だな
その経歴ならスマホアプリが盛った部分でないとしても案件少ないだろうし

439 :
とりあえず上のレス2つはもう少しまともな文章書けるようになったほうがいい
誇張でもなんでもなしに何言ってるか全然わからんから

440 :
いやわかるやろ

441 :
そういや俺の曾祖父は96で死ぬまで煙草吸ってたらしい。

442 :
>>439
君の読解力が足りないだけ。
自分がこう感じた、自分がこう体験した、といった自分に起きたことを絶対視して世界中どこでも誰でもそうであると結論するのは大変間抜けな上に危険だ。

443 :
破綻した文章書いてる奴が相手に読解力ないとか言っても1_も説得力ないし
ただの馬鹿の逃げ口上
ビジネスではお前みたいな意味不明な屁理屈と破綻した文章は通用しない
相手が客ならただ無言で使えない奴認定されて干されるだけ
一つ勉強になったなアホ

444 :
どこが意味わからなくてどう破綻してるのか言ってみれば?
言えなければそれこそ説得力無いし

445 :
どうでもいいわ
なんでお前らすぐ煽りあいはじめるんだよ、不毛すぎるだろ

446 :
>どこが意味わからなくてどう破綻してるのか言ってみれば
大人は質問には答えてくれない
ワイは君たちの添削先生じゃないんでな

447 :
という逃げ口上ってネタかな

448 :
逃げたな。

449 :
質問です。
コンストラクタのアクセス修飾子は、メソッドのアクセス修飾子と同じですか?

450 :
ググれカス

451 :
同じです!

452 :
>>451
ありがとうございます。
さらにもう1つお聞きしたいです。
これは>>451さん宛てに限らずなんですが、
コンストラクタにおけるアクセス修飾子の存在意義って何ですか?
自動的に動くのに、範囲を狭めたり広げたりするのってどういう場合でしょうか?

453 :
グ  グ  れ  カ  ス

454 :
>>452
public class Hoge {
 private Hoge() {
 }
}
のようなクラスの動作と使い方を考えてみたら良いです。
あと、コンストラクタは自動的に動くわけではないですよ。

455 :
メソッドはスコープ外だと呼び出せない
コンストラクタはスコープ外だとnewできない

456 :
Singleton とかは、コンストラクタを private にします!!
なぜなら、インスタンスを1つだけにしたいから、クラス外で new されたら困っちゃうからです!!

457 :
>>454-456
ありがとうございました。

458 :
質問です。
機能ごとにクラスを分けているのですが、
普通にクラスをインスタンス化して作る場合と、
static なメソッドを作る場合があると思います。
これらはどのように使い分けるべきでしょうか?
staticが静的なフィールドにアクセスするのは分かりますが、
ただそれだけの違いなんですかね
newせずに使えるので、メモリ的に極力staticで作るべきですか?
staticなメソッド内でもnewできるし、特に困らないのですが
sdkではよく使い分けられているので、違いが気になります。

459 :
ググれカス

460 :
>>458
static にするのは、クラスの状態に依存しないユーティリティなメソッドだけ
クラスの状態に依存する場合は全部インスタンスメソッド
メソッド内でも new できるし特に困らないと言うのは、ちょっと何言ってるかわかんないっす
状態に依存しないメソッドで、そんなことする意味がない

461 :
>>458
状態が必要かどうかで良いと思う

462 :
わいからも質問です!!
Primitive Value を、
スレッドAで書き込む+読み込む
スレッドBで読み込むだけ
この場合で、volatile だけでは同期化不十分なケースはありますか?
存在するなら教えてクレメンス!です!

自分で調べました!!!
答えは知ってます!
でも、他の人の意見も聞きたいので、自分の答えはしばらく内緒にしておきます!

463 :
グ  グ  れ  カ  ス

464 :
完全にstaticなメソッドしかないクラスの使いどころの話と
混在するクラスでのstaticメソッドの使いどころの話で議論が変わってくる

後者は意味的にクラスそのものの振る舞いを定義するときに使う
実用的には定数と、ファクトリーメソッドであるgetInstance系に使うと思っていればいい

前者はSDKでは意外と数が少ない
SystemやVoidのような概念として単一で不変のもの
MathやCollectionsのような独立性の高いメソッドを緩いカテゴライズでまとめたもの
メモリ節約しつつ多態性が欲しいならシングルトンという手もある

465 :
一見状態を持たなそうなクラスだからといって安易にstaticばかりにするのは気を付けた方がいい
状態や前提を毎回引数で与える設計もできるのでオブジェクト志向から逸脱したコードが増えがちになる

466 :
staticおじさん「気分はstatic!」

467 :
>>462
ないと思う

468 :
>>467
違います!
答えのリンク貼っておきますね!
全部読むの面倒なら、コード例見るだけで分かると思います!
https://stackoverflow.com/questions/9868577/how-to-comprehend-the-variable-does-not-participate-in-invariants-with-other-st

469 :
自演やめろゴミ

470 :
>>468
変数が一つだったらないってこと?

471 :
複数の変数を書き換えるのをアトミックにやりたい
それはvolatileでは無理ですよって読み取ったのだけどあってるかな?

472 :
>>469
まあまあ、こういうの頭の体操みたいで楽しいじゃん

473 :
リンク先の本持ってるけど、日本語にするとこんな感じ
質問の条件は 1.は満たすが、2〜3を満たすかどうかは言われていない
2.の不変項は、 例にある、startTime < endTime が常に成り立つようなケースを言ってる
■ volatile 変数を使って良い条件
1.その変数への書き込みが変数の現在値に依存しない、または1つのスレッドだけが値を更新する
2.その変数が他のステート変数とともに不変項に関与していない
3.その変数がアクセスされるとき、ほかの理由でロックが必要とされない

…自分の言葉で書き直そうと思ったが、全く同じこと繰り返してるだけなのに気づいてやめた
まぁあれだね、スタート/エンドフラグ以外に volatile 使うのはやめたほうが良さげって話ね

474 :
といいつつ、自分は、UI のコンフィグ的なやつを全部 volatile にしてぶっこんでるんだけどね…
UIスレッド以外の、DBやらProperty ファイルから読み込みたいから同期化はしないといかん(でも、synchronized めんどい)

あくまでアプリの設定値みたいなやつで、とりあえず自身の現在値に依存した書き込みや、他の変数と条件作るような値はなかったけど…

あんまり良くはないんだろうね

475 :
独り言で荒らすなゴミ
ブログにでも書いてろキチガイ

476 :
MutexやReentrantLockを使っているところを、ReadWriteLock(Atomic***などを含む)で置き換えられるか?
と考えることはあっても、volatileにするかどうかはまず考えないだろう。

477 :
長文のString を返すだけのメソッドが大量にあるクラスって、コードキャッシュ領域に大量のメモリ確保しますか?
それとも、各メソッドが呼ばれた時に、DB からのロードのようにオンデマンドでメモリ確保しますか?

478 :
長文のString を返すだけのメソッドが大量にあるクラスって、(クラスがロードされた時点で)コードキャッシュ領域に大量のメモリ確保しますか?
それとも、各メソッドが呼ばれた時に、DB からのロードのようにオンデマンドでメモリ確保しますか?
括弧内書き忘れました

479 :
ググれカス
コードキャッシュ領域ってなんだよ
まずJVMのクラスローダーの仕組みから調べて出直せ
回答見てても基本的知識ない奴等しかおらんから間違った回答しまくってるし
おまえらはもう全員回答するな
100万回ググれカス

480 :
>>479
答える気がないなら黙ってろよ
お前はクソの役にも立ってない

481 :
グ グ れ カ ス

ゴミ

482 :
クラスローダってバイトコード読んでクラスをロードするから、
その読まれたバイトコードの機械語に相当する部分がJVMヒープ外のコードキャッシュ領域に保持されるって認識だったんだけど違ってるんかな

フィールド値の String は、ヒープの中の String Constant Pool って領域があってそこに確保されてる(String.intern() とかで確認できる)
というのはとりあえず基本的なこととして

メソッドの中のローカル変数の String は、メソッドがコールスタックに存在する時は当然JVMスタックに存在してるだろうけど、
メソッドがコールスタックにない時は、どうなってるのかなと
呼ばれた時に割り当てられるのか、クラスがロードされてれば呼ばれてないときもメモリが確保されてるのか

あと、すまんが例の人はすぐNGにするからそっちにレスしても見えんかも

483 :
コールスタックに存在するときも、ローカルだろうが文字列リテラルの中身は、JVMスタックじゃなく、多分JVMヒープか(String 内のプール)
とりあえず、コールスタックにない時どうなってるのかという疑問はそのまままだあります

484 :
コードキャッシュ領域なんて言葉はない
あと知識が滅茶苦茶&ぐちゃぐちゃでクラスローダーの基本的な動作以前に
メモリ領域の区別も理解できてない
調べた事を適当に解釈するんじゃなくて
一つ一つ整理することを覚えろ
もう1回だけアドバイスしてやる

グ  グ  レ  糞  ボ  ケ  カ  ス

485 :
自信を持てる事が1つしかない人が住み着いてるなぁ

486 :
ぐぐれかすで済まされてしまうと
そもそもこのスレはいらないことになってしまう

487 :
それな
Java初心者のためのスレッドですと最初に宣言されてる
イライラの撒き散らちしの方が多くなってるならこのスレを見ないのが賢明

488 :
>>473
なるほど

489 :
>>482,483
大雑把に言うと、
(メソッド中に散らばっているようなものを含めて)ソースコード上でStringリテラルとして記述されている文字列は、
コンパイル時にclassファイルのコンスタントプールにまとめられて、
classロード時に(JVMヒープ上の)実行時コンスタントプールにロードされます。

この辺きちんと理解したいなら、ググるんじゃなくてJVMS読めばいいです。ちゃんと書いてあります。
(ところでこれ、入門・初心者の質問?)

490 :
にわか知識からくる質問だから初心者レベルなのは間違いない
あと説明不足な上に回答不十分
自分の中で咀嚼できないなら回答レスはしないほうがいい

491 :
>>489
ありがとうございます
ということは、ローカルのStringリテラルもクラスロードした時点でメモリにはずっと載ってるイメージですかね
やっぱり長文はしっかり管理するなら外部ファイルから読んだ方が良さそうですね

492 :
全然説明になってないからこんな風に全く理解してないんだよね
こうやって勝手に解釈して間違った知識を自分の脳に植え付けるってことを繰り返しちゃうんだよ
にわかども逝ってよし
激しく自演臭いけど

493 :
自分では答えもせず回答者にケチをつけるだけのイライラ君

494 :
ごめんなさい、読み返してみたら>>489はいい加減すぎますね。
> classロード時に(JVMヒープ上の)実行時コンスタントプールにロードされます。

(classファイルのコンスタントプールの文字列は)
> classロード時に(存在してなければ)Stringのインスタンスとして(ヒープ上に)ロードされ
> そのStringインスタンスへの参照がクラスの実行時コンスタントプールに保持されます。
と書くべきでした。長いけど。

495 :
>>491
ソースコード上のStringリテラル由来の文字列(Stringのインスタンス)はクラスに紐付いているので、
クラスがアンロードされない限りヒープ上に確保され続けるのはその通りです。
ただ、「メモリを節約するために」文字列を外部化する、というのは一般的にはおすすめできません。
(もちろん、国際化対応などを考えると意味が無いわけではありませんが)
一応初心者スレなので、
他の方が「文字列って無駄にメモリを消費してるんだ」などと思い込んでほしくはないので、
念の為に書いておきます。

496 :
>>495
詳しくありがとうございます
> ただ、「メモリを節約するために」文字列を外部化する、というのは一般的にはおすすめできません。
これは、UIやグラフィクスのメモリ消費に対して、文字列の消費するメモリが大した量でないという意味でしょうか?
Java の String はヒープ中では UTF-16 ですから、基本的には1文字 2byte、100文字200byte くらい、
ヘルプメッセージとかエラーメッセージとか、100文字1000個くらいあったら、20MB くらいですか
もちろん、クラスが使われなくなったらアンロードもされるかもしれないですが(アンロードの周期などの実装仕様は詳しく知らないです)
---
ちなみに上記の文字数が294文字でした

497 :
失礼、20MB > 200KB ですね

498 :
ググレカス
少しは質問する前に自分で試すかググったらどうだ?ん?
幼稚園児かお前は?ん?

499 :
ん?ん?

500 :
クラスローダーの超基本的な動作すらわかってない奴等同士でレスつけてるから
間違ったことを延々とレス合ってるのが滑稽すぎて楽しいねw
なんだよクラスのアンロードってw

ggrks

501 :
ん?ん?

502 :
んん

503 :
SwingWorkerクラスを繰り返し使うと10個デーモンスレッドができるんですけど、なんで1個だけじゃないんですか?
インスタンスを破棄するのを忘れているせいでしょうか?でも10回以上実行しても10個以上になりません。

504 :
ググれカス

505 :
>>503
内部的に ExecutorService 使ってるから、何個も同時にexecute すれば、スレッドは1個じゃないよん!

System.out.println(Thread.currentThread().getName());

で通し番号的なの見れるから、確認したいならおすすめだよん!!

506 :
new ThreadPoolExecutor(MAX_WORKER_THREADS, MAX_WORKER_THREADS,
10L, TimeUnit.MINUTES,
new LinkedBlockingQueue<Runnable>(),
threadFactory);

この部分が SwingWorker の ExecutorService 実装の部分だよ!
スレッドプールを使ってて、10個のスレッドをプールして使うようになってるね!!
すぐ終了する Worker 走らせても、スレッドプールは次のタスクに備えるために、スレッドを10個まで残しておくよ!

507 :
クラスのアンロードとか言ってるアホは回答側にまわってはいけない
回答したくても自重するように

508 :
と思ったら質問厨のアホか
君の回答は全部間違ってるので絶対に回答側にまわってはいけない
今後質問もしてはいけない
ググって勉強

509 :
そもそもだな
初心者と初心者未満がマルチスレッドプログラミングをしてはいけない

510 :
ええやろ

511 :
ハロワの求職者支援訓練に40代向けのJava講座あるんだけどプログラミングっておっさんでも始められるもんなん?

512 :
プログラミングを始めるだけなら簡単
IT企業への就職の方がよっぽど難しい

513 :
>>512
IT業務は人手不足って聞いたけどそれでも高齢だと就職難しい?

514 :
>>513
仕事を選ばなければあることはあるよ

515 :
>>514
そうですか、挑戦してみてもいいですかね。ありがとうございます

516 :
>>515
挑戦した方がいいと思うよ
待遇とかは自分の価値観で評価するものだから

517 :
>>516
なるほど。そうですよね。一度やってみます

518 :
>>506
ありがとうございます。正常な動作なんですね。安心しました。

519 :
代替の回答もせずにケチつけるだけの異常者

520 :
そんな人はいない、ただレス番が飛んでるだけ

521 :
>>491
https://www.baeldung.com/java-string-pool#strings-allocated-using-the-constructor

回答間違いっぽくない?

Java7 以前は、StringリテラルがGCされることはなかったけど、
それ以降は、String リテラルは参照がなくなったらGCされる

あと、Java9 以降は、ヒープ上の文字コードもUTF-16だけじゃなくなってるね

一個適当な String リテラル使う Java のプログラム走らせて、参照消したあと System.gc() する
別のプログラムから、JNA経由とかで Kernel32の ReadProcessMemory で Java のメモリ読んで文字列の有無を確認
とかも面白そう

チートエンジンとかでも出来るんかな

522 :
あと、クラスのアンロードは、クラスローダの参照とインスタンスへの参照が全部なくならないとアンロードされない
システムクラスローダとかからロードしてるクラスの場合、一度読んだクラスはアンロードされない

523 :
そういう確認はメモリエディタが便利だね

524 :
>>521
クラスがロードされる時に(classファイルの)コンスタントプールから(既存でなければ)生成されるStringインスタンスは、
クラスがそのStringインスタンスへの参照を(実行時コンスタントプールに)保持しているので、
そのクラスが生存している(アンロードされない)限り、
GCで回収の対象にはなりません。
(回収されてしまったら大変)

525 :
>>524
https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-3.html#jvms-3.4
> Data of types int, long, float, and double, as well as references to instances of class String, are managed using the ldc, ldc_w, and ldc2_w instructions.
[references to instance of class String] って書いてあるし、実体はそこに無いんじゃないの?
String pool の色んな説明見ても、String literal はGCされるって結論づけられてるのがほとんど
Run-time Constant Pool の説明見ても、単なる Symbol Table で、メモリ上の実体がそこにあるわけじゃないように思うんだけど

526 :
あぁごめん、参照で持ってるからこそプール上の String がGCされないって言ってるのか

527 :
ここ本当に初心者スレなんですかね・・・

528 :
https://stackoverflow.com/a/2433076

このコード実行してみて、System.gc() をコメントアウトしたときと比べてみると、やっぱり String Literal って GC されてるんじゃない?
new String してるんだけど、intern してるから、プール上の String が GC されてる証拠って言えるよねこれ

529 :
なんどもすまん、でも、リテラルで持ってるわけじゃないのかこのプログラム
new String のところを、new String("fkasdjf;lsdkjfasdljfdlkfjadsfjsad;kljfadjfkdas;")
とかってすると、System.gc しても結局全部同じ値返したわ

ということは、ソースコードにリテラル直接書き込むと、クラス自体がアンロードされない限りやっぱりプールにずっと残るんか

うーん、もうちょっといろいろ試してみよう…

530 :
>>526
そうです。
>>489が雑すぎました、すみません。
StringリテラルがStringインスタンスとしてロードされるのは自明じゃろ、
からの雑な省略でいい加減過ぎました。
>>527
すみません、乗りかかった舟なので。
でもスレを見返してもらえばわかるようにこんな話題は典型的じゃないですよ。

531 :
基本がわかってないからゴミみたいな駄レスでスレを消費するアホども
いまだにクラスのアンロードとか言ってるしw
スレを荒らすなゴミども
SNSでやれゴミ

532 :
>>529
「Stringリテラル」ってのはその
"fkasdjf;lsdkjfasdljfdlkfjadsfjsad;kljfadjfkdas;"
の部分です。
>>528はStringリテラルを持たずにStringインスタンスを生成してintern()して、
intern()されたStringインスタンス(Stringプール入り)でもガベコレされるねっていう例でしょう。
>>529の様にStringリテラルをベースにStringインスタンスをnewすると、
同じ文字列のStringインスタンス(ロード時にintern()されてStringプールに確保されている)がすでに存在するので、
新しいStringインスタンスをintern()した結果はStringリテラルからのインスタンスが返されます。
Stringリテラルのインスタンスはクラスが参照を保持しているのでGCで回収されないので、
何回
new String("fkasdjf;lsdkjfasdljfdlkfjadsfjsad;kljfadjfkdas;").intern()
しても同じインスタンスが得られます。

533 :
>>532
なるほどです
すみません、同じことを言い直させてしまいましたね

カスタムクラスローダ作って、参照を消してクラスをアンロードするってのが
コード中の文字列リテラルをGCさせられる唯一の方法ってことになるんですかね

ヒアドキュメントがJavaにもそのうち来ますし、
この辺ちょっと気になってたので詳しく調べられて良かったです
ありがとうございました

534 :
3行で説明できることをよくまぁここまでゴミレスの長文合戦できるもんだな
そして最後まで何も理解してないっていう
こんな奴等に正解を教えてやったところで何も成長しないだろう
ほんと酷いね

535 :
>>534
3行で説明してみろよ、おん?

536 :
3行とは言ったが、1行の文字数は指定していない

537 :
>>536
なるほど、すみませんでした

538 :
>>537
ま、いいってことよ
今度から気をつけろよ

特に仕事を請けるときはこういう言葉の罠に気をつけな

539 :
何文字になっても良いから3行で説明してみろよ、おん?

540 :




541 :
>>527
ここはプログラム板で素人がどうこう言うところではない。

542 :
>>527
40代から始めても資格を取ったり意欲的なことしないと誰も相手はしないよ。
あとは経歴の偽装を強要されてどこかの現場に押し込まれる。

543 :
メモリ領域の区別、classファイル、実態
クラスローダーがこれらをどういう風に割り当てるかっていう基本的なことを理解してれば
上のような意味不明で何も理解してない疑問は出てこないんだよね
何も理解してないのに理解したつもりになってわからないことを背伸びして知ろうとするから
アホみたいな駄文の応酬を繰り広げる
ググれカス
何回も言わせるな

544 :
未経験からの新人研修中で上司にいびられてストレス発散ってところか多分
自分が言われたことをそのままスレでリピートしてる
クラスのアンロードも知らんようだし、基本的なことも理解してなさそう

545 :
自分の馬鹿を棚に上げて妄想に逃げるのは勝手だが
間違ったレスを延々と繰り返してスレを荒らすなゴミ
あとクラスのアンロードなんていうものはないアホ
どこでこんな間違った知識拾って来たのか知らんけど

546 :
完全に理解した人の説明が見てみたいです
(どうせ無理だろうけど)

547 :
ここまで具体的な技術的内容なし

548 :
>>542
一応基本情報と応用情報の勉強シテマス

549 :
>>545
https://docs.oracle.com/javase/specs/jls/se13/html/jls-12.html#jls-12.7
12.7. Unloading of Classes and Interfaces

あれ?偉そうに言っといて、言語仕様も読んだことないんですか?

550 :
それはGCがクラスを破棄する可能性を示唆することを説明しただけであって
ブートストラップクラスローダーはアンロードしないことを説明してんだよ
自分で貼ったリンクも理解せずにドヤ顔で貼ってどんだけ馬鹿なんだお前
アホ

551 :
理解してないのに理解したつもり
英語読めないのに英語のドキュメントを貼る
プログラムの勉強始めたばかりの中学生だろうけど
ここはガキの遊び場じゃないからSNSでやれ
アホ

552 :
>>550
これは恥ずかしい
>>500,507,545で概念自体が存在しないかのような口振りだったのにいざソースを出されると苦しすぎる言い訳だな

553 :
何言ってんだコイツ?ガチもんの池沼か?
クラスのアンロードなんてねーからキチガイ
こういう風に単語の断片だけ拾って
クラスローダーがさもクラスをアンロードするかのように嘘の説明をして
初心者未満同士で駄文をまき散らしてスレを荒らす
君たちのような池沼用にツイッターとかあるんだからそっちでやろうな

554 :
荒らしを喜ばせると過疎ってしまうぞ

555 :
仕様に思いっきりそのままの言葉で載ってるものを存在しないよばわり
さすがに言い訳が見苦しすぎる
3連投とかどんだけ悔しかったんだよ

556 :
お前が見苦しすぎてこっちがこっぱずかしいわキチガイ
おまえが取り上げてるのは単語だけだアホ
今まで散々間違った説明したあげく自分で何も理解してないリンク貼って
今度は開き直ってるし
ここはおまえのようなキチガイが居て良い場所ではない
何回でも言うが「クラスのアンロードなんてものはない」
即刻立ち去れゴミ

557 :
どっちの言い分が正しいのか?
http://www.nminoru.jp/~nminoru/java/class_unloading.html

558 :
そもそも間違い指摘してやって開き直るとか
どんだけキチガイなんだこいつ
そんでゴミ同士で間違ったレスの応酬ずっとしてんのなw
逝って良し
アホ

559 :
連続レスも、返信ないのに1時間、2時間と時間空いててどんだけイライラしてるか伝わってくるようだな
その上批判的なレスがあったら即レス
他にすること無いんかお前、さすがにもう少し時間有意義に使った方がいいぞ

560 :
イライラがどうとか言い訳とか話題逸らしして逃げるのは勝手だけど
だらだらと負け犬の遠吠えのごとく駄文レスつけてないで
自分の頭の悪さがわかったらとっととSNSにでも帰れよキチガイ初心者未満は

561 :
> GCがクラスを破棄する可能性
それがクラスのアンロードそのものでは
仕様にもそう書いてある
それを存在しないって言っといてブートストラップクラスローダはアンロードしないとか無理筋すぎる

562 :
可能性の話だし永続領域に読込まれたクラスが破棄されるなんてことがあったら
javaプログラム自体が破綻する
つまりアンロードなんてない
そんなことも理解してないのにさもクラスがアンロードされるみたいな風に書いてるから馬鹿にされるんだよ
何回同じレスさせるんだろうこのチンパン君は

563 :
間違いを指摘してやって〜とか言ってるけど、この人わめき散らすだけで何一つ技術的な指摘はしてないよね
唯一したのが、「クラスのアンロードなんていうものはない」という間違った指摘
技術的な話なしで煽ってるだけなのに知識の浅さ露呈するとか天才かよ

564 :
っつーかおまえ自分で貼ったリンク読めないのに何言ってんの感じなんだけど
モンスター初心者にもほどがあるわ
アンロードしないっておもいっきり書いてんだよアホ
英語読めないのにカッコつけて「仕様に書いてる!(キリッ」 じゃねーよアホ
頭逝かれてすぎだろキチガイ

565 :
傍観してたけど、この人って前からずっとスレにいるの?
ググれカスさんが居座るようならさすがに誰にとっても得がないので、ワッチョイかIPスレ建てるしかないのでは

566 :
やんわりと間違い指摘してやっても逆ギレして噛みついてくるんだからどうしようもないやん
さらには間違いを間違いと認めずこっちが間違ってるかのようなレスつけて
言い訳がーとかイライラガーとか言ってくるんだから手に負えない
自分で持ち出したリンクの中身すら読んでないまたは読めない
もう病気だと思うけどねこの手の初心者は

567 :
病気なのは誰がどう見てもお前

568 :
なんでこう基本すらわかってない奴が背伸びして
全く理解できないドキュメント読んだり引っ張ってくるかね
頭大丈夫?

569 :
こういうプライドだけ異様に高くて、自分の間違いを絶対認めないやつって仕事でマジで使えない
まともに仕事できてたら一日中スレにはりついて顔真っ赤にしてないだろうけど

570 :
言葉尻捕まえて「間違いを認めないキチガイ!(ムキッー」 論法は
小学校までしか通用しないからとっとと消えろゴミ
ガキみたいな己の気分で善意の指摘すら受け入れられないなら
こういうスレを使うなよ精子年齢小学生君

571 :
初心者相手にならイキれると思ってる中級者未満のヤツを怒涛の袋叩きで成敗するお前ら好き

572 :
最初は「クラスのアンロード!」って騒いでたのに
今じゃ完全に人格攻撃にシフトしてるところ見ると
クラスのアンロードなんてないことがやっと理解できたのかな
まともな奴なら開き直る前に「ありがとうございました」って言うもんだけどね
馬鹿同士では間違ったレスし合いながら「そうなんですね!(キリッ」とかマヌケなやりとりしてるくせにw
最初NGだなんだ言ってたくせに図星突かれて人格攻撃するしかなくなったんだろうけど
アホ

573 :
ほんと開き直りと人格攻撃はまさにチョンそのものだな
まぁどうせ在日だろうけど

574 :
めっちゃスレ伸びてると思ったらこれはひどい
元のアンロードに関する言い分も滅茶苦茶だし、人格攻撃批判した直後に程度の低い人種差別発言とか笑えないよ
そもそもゴミだのカスだのお前が言いまくってたからこういう流れになったのが分からんのか

575 :
お前が滅茶苦茶だよキチガイw
アンロードっていう題目ついてる英語のドキュメント持ってくれば論破できると思ったのか?w
英語も読めねーくせに背伸びしてこっぱずかしいったらありゃしない
アンロードがあるならどういうタイミングでアンロードされるか正確に言ってみ?ん?
どうした?ほれ?
もう言い返す材料ないからどうせまた人格攻撃だろ?w
アホ

576 :
どっちの言い分が正しいのか?
http://www.nminoru.jp/~nminoru/java/class_unloading.html

577 :
そこのリンクにも日本でちゃんと正解書いとるやんw
>またブーストラップクラスローダーは Java VM が存在する限り消滅することはない。
>そのためブーストラップクラスローダーによって読み込まれたクラスは決してアンロードされない。
馬鹿でも日本語なら読めるだろ?ん?

578 :
>>575
話が噛み合ってないだけだよ
議論を整理しよう
君はどういう考えかな? 3行で説明してみろ、おん?

579 :
日本語すら理解できない文盲はとりあえず帰れ
当事者はダンマリかもう人格攻撃以外してこないと思うけど

580 :
のび太さんのエッチ

581 :
>>522 にも、>>576 のリンクにも、そして仕様にも、クラスのアンロードの条件は書いてある
それ以外に何が必要なのか全く理解できない
ブートストラップクラスローダがアンロードしないからなんなんだ
だからって仕様に書いてあるクラスのアンロードがなくなるわけでもないし、
実際に多くのフレームワークはクラスローダを多数持ってて、アンロードも行えるようになってる
例えば OSGi では bundle を uninstall する際にクラスローダの参照消してる
Java class unload で検索すれば山程例も出てくるのに、いつまでお前はその苦しい主張を続ける気なんだ

582 :
3行でまとめられないなんて、なんて頭がわるいんでしょう(驚)

583 :
しつこいキチガイだね
今度はフレームワークのクラスローダーかw
アホ
今までの流れ読めるか?ん?キチガイ
またおまえの馬鹿レスに対して突っ込み必要か?ん?
どうだ?
糞アホ

584 :
馬鹿「自前でクラスローダー作った!これはクラスのアンロードもできる!」
お前の言ってることはこれと同じなんだよね
フレームワークに話逸らせば論破できると思ったアホなんだろうけどw
アホ

585 :
技術的な反論が出来なくてキチガイ、アホ、馬鹿を繰り返すだけ
人には激しく攻撃的なくせに自分が人格攻撃されたら喚く
3行で説明できると豪語しておきながら、一切する気配なし
これまでずっと人の回答にケチつけるだけで、何がどう具体的に違っているのかを一切書かない
自分が間違えても間違いは一切認めない

先生、診断をお願いします

586 :
>ブートストラップクラスローダがアンロードしないからなんなんだ
これだけでこいつが馬鹿丸出しっていうことも自分で理解してないんだよね
今までのレスの流れとブートストラップクラスローダーが何を読み込んでるのか理解してれば
このアホレスといきなりフレームワークのクラスローダーに話がぶっ飛ぶことなんてないんだから
いい加減馬鹿は消えてくれないか?さすがに中身0の馬鹿の相手するも疲れてきたからさ
アホ

587 :
絶対的な正解を教えないのはこういう馬鹿を炙り出すためでもあるんだよね
基本が全く理解できてないから少し濁せば意味不明な反論しだすから面白いし
アホ

588 :
>>585
この業界病んでる人多いけど、こいつは本気で病院行ったほうが良いと思う
こんなところで、中身のないあおり文句言い続けるのはやめとけ
寂しかったり苦しかったりしたら、迷惑かける撒き散らし方せずに、ちゃんと周りの人間に相談しろ
人格攻撃とかじゃないよ、ちゃんとしとけ
技術的な内容のある話するならまだいいが、中身0で暴言だけ吐かれても、回答者も質問者もただただ不快になるだけ

589 :
文盲と人格攻撃はもう飽きたからいいよ
あと1時間以内にちゃんとした反論できなければ俺の勝ちな
まぁ元々クラスのアンロードなんてないから上のアホみたいに
屁理屈以外では反論のしようがないんだけどな
明日までに己がなんでここまで理解力がない馬鹿なのかをじっくり考えてこい
アホ

590 :
>>588
親身で草だけど、そういう正論が通じないからこその病気なんだ

591 :
別にお得意のNG宣言してスルーでも良かったんだぞ?
馬鹿にされて火病起こしちゃって後に引けなくなっただけだろうけど

592 :
俺は別にID変えて人格攻撃とか自演とか一切しないしね
単発IDしかいないのも小物すぎて笑えるけどw
必死に集団で批判してるように見せたいんだろうけどw
アホの心理って全てが透けて見えるんだよね
すぐ人格攻撃に走るような性根の腐ったガキみたいなメンタルだから何一つ理解できないんだよ
アホ

593 :
こんなスレで日付変わってから速攻でID真っ赤にするようなやつお前くらいしかいいないってだけだろ
どこの荒らしもそうだけど必ず自演がどうのとか言い出すよな防衛機制なのかただの病気なのか

594 :
流れまとめるとこんな感じか
・英語のドキュメント持ってきて 「アンロードって書いてる!(キリッ」
 →実際はクラスローダーがアンロードするなんてことは全く書いてない
・「言い訳するな!(ムキッー」
 →言い訳じゃないことを丁寧に説明
・ドキュメント引っ張ってきた本人は消えて単発で大量に人格攻撃する者が現れる
 →人格攻撃を丁寧に諭す
・別の単発が全く関係のないフレームワークのクラスローダーガーとか詭弁を言い出す
 →丁寧に屁理屈であることを教える
・また単発で人格攻撃が始まる

今日はちゃんと薬飲んで寝ろよキチガイ君

595 :
なんでこんなヤバい人住み着いてしまったん?

596 :
真っ赤君は
・過去に誰かに言われた言葉を今発散しようとぶつけてる
・自分の発言がブーメランになってる(自己投影)
ってネタをやってるんかな

597 :
IT業界ってバカみたいなプログラム書いてたら怒られるん?

598 :
「〇〇に言われたことを言っている!(キリッ」 とか
「ブーメラン!(キリッ」 「自己投影(キリッ」 とか好きだねぇアホは
単純に何もわかってない馬鹿だから指摘してやってるのに
そんなに指摘されたことが誰かの受け売りに見えるほど難しいのかね馬鹿的には
それとも図星過ぎて妄想しないとやってられない的な?ん?そうなんか?
もうアンロードなんてないってことで解決したんだから
礼の一つも言えないならおとなしく消えろよゴミ
負け犬の遠吠えのごとくグダグダグダグダと気色悪いね
アホ

599 :
図星過ぎて長文になる真っ赤君

600 :
CheatEngine 使ってメモリ検索してみました
ローカルにString リテラルを宣言してスリープするだけのプログラムで、若いアドレスに3つ、比較的後ろの方のアドレスに2つ その文字列がヒットします
なぜメモリに5つ文字列出来上がるのか分かりません
若いアドレスの3つは多分ヒープで、gc すると1つだけ残って2つ消える
String を new するだけなんですが、途中過程でヒープに2個ゴミが出来るんでしょうか
後ろの方のアドレスの2つは、コード中に文字列リテラルを書かなければ出来ない(char 配列から new String した場合は出来ない)
こっちも gc すると 1つ になります
Run-time Constant Pool には参照しか保持されてないとすると、これは何でしょう?
まとめますと、
String リテラルを宣言すると、gc後、「ヒープ」と「ヒープとは別の場所」に1個ずつ文字列のメモリ実体がある
char配列から new String すると、gc後、「ヒープ」に1個だけメモリ実体がある
リテラルで書くとヒープ(String内のプール)とは別の場所にもう一個メモリ実体ができるようですが、これは何でしょうか…?

601 :
---A---
{
String literal = "JavaNyuumon"
}
---B---
{
char[] chars = new char[] {'J', 'a', 'v', 'a', 'N', 'y', 'u', 'u', 'm', 'o', 'n'};
String litral = new String(chars);
}
---
この後スリープするだけのプログラムです(sleep に gc 挟んで試したり試さなかったり)

602 :
ググれカス

603 :
>>600
GC前にヒープにいくつも文字列の実体がある原因はわかりました
new String の中で、文字コードの変換のため、配列をコピーしてたりしたので、それが反映されたんだと思います
どの公開されてるコンストラクタを読んでもダメそうだったので、パッケージプライベートなコンストラクタをリフレクションで呼んだら、
GCしなくても、ヒープ上の文字列は1つになりました
var con = String.class.getDeclaredConstructor(byte[].class, byte.class);
con.setAccessible(true);
return con.newInstance(chars, (byte)0);
リテラルを宣言した時に後ろの方のアドレスに出てくる文字列に関してですが、周辺のアドレスのバイナリ列を覗いてみると、.
class ファイルをバイナリエディタで覗いた時と似ていました(完全に同じではない)
Run-time Constant Pool に String のメモリ実体が存在してるようにも思えるんですが、
そのアドレスが本当に Run-time Constant Pool なのかどうかは定かではなく、詳しくはわかりません

604 :
あのなぁ
ここはおめーの日記帳じゃねーの
ブツブツどうでもいいくだらないことはチラシの裏かバカッターでやってろよ

605 :
意訳) ぼくのわからない事しゃべらないで

606 :
やってることも滅茶苦茶だしホントキチガイだなコイツ
バイナリエディタでクラスファイル見るとか
とにかく背伸びして適当なことをぐちゃぐちゃやってみて
そのアホみたいなことをここに書き込むのやめろアホ
見ててホント香ばしすぎる

607 :
とにかく基本を全然理解してないのに
こういうアホみたいなオナニー試行レスつけて荒らすのやめろ
エントリポイントすら理解してないのに 「このアドレスはー定かではありません!(キリッ」 とか
この前のアンロードといい、なんなんおまえ?学習能力0か?ん?

608 :
>>603
正直良くわかりませんが、リテラルで記述すると後ろの方に残るというのはファイルのバッファかもしれません。
クラスを読み込む時にはruntimeのネイティブ層(C/C++等で書かれている所)でクラスファイルの内容をメモリに読み込んでから色々行うわけですけど、
バッファをフリーしても0埋めされるわけではないのでそれが残って見えているのかもしれません。
ものすごいいい加減な憶測ですけど。

609 :
ここまでアホだと逆に面白いねw
一行で回答教えてやってるのにそれすらもスルーしてまた茶番始めるとかw
まぁ自演だろうけどさw

610 :
>>608
ありがとうございます
自分もそれは考えたんですけど、CheatEngine 以外でもJNA経由でメモリ読んでみてて、MEM_COMMIT 属性はつけて検索してるんですよね
バッファをフリーした時点で、おそらく MEM_COMMIT 属性って外れて検索対象から外れるんじゃないかと思うんですが違うんでしょうか
System.gc() を何度しても消えないことから、Javaコード内で参照が消えたバッファとも考えにくいですし
後、荒らしに反応するのもあれだけど、エントリポイントってのはコード領域、 .text セクションの話で
今言ってる Run-time Constant Pool ってのは、JVMヒープかネイティブヒープか、そうじゃなくてもコード領域には絶対ない
エントリポイントからのオペコードから Run-time Constant Pool のアドレス領域割り出せるスーパーハカーなら弟子にしてほしいくらい

611 :
小学生しか使わないチートエンジンなんか使っておいて何言ってんだこの馬鹿w
自分でエントリポイントすら特定できないうえに一人でずっと勘違いして関係ないことやってるアホのくせにw
あと自分で理解できない単語を一生懸命並べて背伸びしたつもりになる癖にやめたら?w
滑稽すぎて腹痛いんだけどw

612 :
>エントリポイントってのはコード領域、 .text セクションの話で
全然違うけど?ん?頭大丈夫か?
>Run-time Constant Pool ってのは、JVMヒープかネイティブヒープか、そうじゃなくてもコード領域には絶対ない
支離滅裂。日本語の文章書けるか?ん?
>エントリポイントからのオペコードから Run-time Constant Pool のアドレス領域割り出せる
言ってること滅茶苦茶。完全意味不明

このキチガイ論法で何を言いたいの?w
脳に何か障害でもある?

613 :
自演でやってんだろうけど
何も理解してない奴等同士で一生懸命 「○○かもしれませんね!(キリッ」」 とかやってるのがホント面白いw
で、回答教えてくれる奴に対しては 「絶対にない!(ムキッー」 とかw
なんだろうこのギャグというか壮絶なアホさはw

614 :
なんつーかホントまともな日本語の文章書けないチンパンは何なんだろう
まぁ学生以外ありえないんだけどさ
専門の解読士が必要なレベルで文章自体が破綻してて怖いわ
ほんとマジで

615 :
今日も一生懸命やな
気力がうらやましい

616 :
自分はJavaに詳しい
その心の拠り所が実は誤った思い込みではと揺らがされ
バカどもを嗤う強者のはずの自分が逆に恥をかかされた
何としてでも敵を言い負かす強い自己像でもって心の安定を得ないといけない孤高の人の悲痛な防衛規制
初心者のみなさんは先輩には敬意をもって接しましょう
ときどき記憶違いを教えてくることもあるから折を見て公式情報にあたろう

617 :
きっしょいポエム書くなや

618 :
休校で暇なキッズ説

619 :
どんどん俺のプログラムが美しくなっていくぜ

620 :
>>614
君は馬鹿だからもうここへは書かない方が良いと思うよ。

621 :
いつからこんなスレになってしまったんだろう
前は質問すればちゃんと回答が返ってくる、それだけだったのに

622 :
暴れてるの頭のおかしい一人だけだけどね

623 :
使わなくなった変数にnullを代入したほうがはやくGCの対象になるというのは
今でも本当なのでしょうか?

624 :
>>623
嘘です。なぜならばnullはnullだからです。

625 :
>>623
変数?

626 :
>>623

627 :
>>623
・シリアル、パラレル→本当
・CMS GC→嘘
・G1GC→本当

628 :
初書き失礼します。
JavaScriptで以下のようなものを製作したいのですがやり方がわかりません。
・7×7の神経衰弱
・24通りのペア+特殊なカード1枚の内訳でこれをランダムに配置する
通常の神経衰弱は作ることが出来たのですが・・・

629 :
ググれカス
javaでもねーしjavascriptとかも関係ねーし
荒らすなゴミ

630 :
JavaScript(JS) の質問は、この板ではありません!

web制作管理板のJS のスレに、書き込んでください!

631 :
>>628
ネタはやめてください

632 :
>>629
え?

633 :
>>623
メソッド末尾でローカル変数にnullを代入しまくるおまじないを書き始める人が出るので
nullを代入するよりもメソッドを適正に分割した方がいいと思う

634 :
>>628
スレチ

635 :
>>629
荒らしてた張本人が荒らすなとは一体…

636 :
var って、最近の言語じゃ標準装備だけど、ソースコード読む時わかりづらくない?
ぎっとはぶ とかで動的型付の言語見てると、型は?型はなんなの!?ってならない?
var は動的型付けじゃないから話はちょっと違うけど、型推論とか動的型付けとか、書くの楽だけど読みにくくない?

637 :
最近はIDE前提だから

638 :
うん

639 :
宣言するときに初期値を代入、そういうときに限って使えば困ることはなかろう

640 :
mainメソッドを定義する文で、
public static void main(String... args)
と記述しても問題なく動作しますか?

641 :
ググれカス

642 :
https://docs.oracle.com/javase/specs/jls/se14/html/jls-12.html#jls-12.1.4

643 :
>>637
Java の var ならまだ静的型付けだから IDE でマウスホバーすればすぐ型分かるけど、
動的型付けだと、IDE 使っても型ってすぐわからんのじゃないん?
周りとか使い方見て判断って感じ?

644 :
フリーランスで月15万ほど稼げるまで何年かかりますか?

645 :
3カ月

646 :
>>645
それ頭いい人ですよね?普通〜下の人間ならどのくらいですか

647 :
3カ月で出来ないなら何年やっても無理だ
あとJavaとかんけーねーんだよゴミカス
しねよ

648 :
ひょっとして怒ってます?

649 :
消  え  ろ  ゴ  ミ

650 :
凄く怒ってます?

651 :
余裕しゃくしゃくで人を見下してる感じがね

652 :
>>642
ありがとうございます。
でも英語あまり読めません。

653 :
>>652
String[]でもString...でもどっちでも良いよって書いてあるような気がする
英語は雰囲気や!
実行してみたが早いけど
https://paiza.io/projects/PCP9h2E4PCIiR9-hhX3zuQ

654 :
プログラミングやる上で英語読めないのは致命的
まずは英語の勉強したほうが良い

655 :
>>654
google翻訳があるから良いじゃん

656 :
むしろプログラミングで必要になったら都度調べる感じでもいい
プログラミングで出現頻度が低い単語や文法までやるのは効率悪い

657 :
>>654
いい英語の勉強法はないものか、と常々試行錯誤しています
高校時代に英語構文を200ほど暗記したのは役に立っていますが、英語話者を対象にした英文にトライしてみると知らない単語が多すぎて挫折しますね
beware=take care of,
collusion = conspiracy,
allege = insist, persist,
ellusive = difficult to express/describe,/grasp
benign = calm, kind, mild,
curt = blunt,
espionage = spy agency, …
左側の単語はどれもちょっと難しい、高校生相手の試験問題ではまず右のように言い換えるでしょうね(この言い換えは個人的な主観で適切とは限りません)
かといって、あまり出現しない単語をせっせと覚えるのも、なんだか、って気もしますし…
英語の小説を一冊丸暗記すれば効果が高いそうですが、かといって、英語だけではなく文学的にも興味のわくようないい作品はありませんか?

658 :
だからさぁ
自分語りとかSNSでやれや低能
ホントこの手のキチガイ荒らしはなんなんだ
てめーの低能自慢とかここでするな
ゴミ

659 :
>>653
ありがとうございます。
>>654
英語の勉強はかかる時間の割にリターンが少ないので。

660 :
キチガイ荒らし本人がなんか言ってますね

661 :
>>659
ソフトウェアに関しては英語ができると
できないやつの3倍速で技術を身につけられるよ

662 :
>>652
とりあえずコピペして自動翻訳してみろって。

663 :
てか、URL指定するだけで翻訳できるな。
https://translate.google.co.jp/translate?hl=ja&tab=wT1&authuser=0&sl=en&tl=ja&u=https%3A%2F%2Fdocs.oracle.com%2Fjavase%2Fspecs%2Fjls%2Fse14%2Fhtml%2Fjls-12.html%23jls-12.1.4

664 :
漫画「ドラゴン桜」のモデルになった、竹岡 広信の本

ドラゴン・イングリッシュの2冊、これだけで良い!
必修英文法100・必修英単語1000

分からない単語を、語源から推測して、辞書を引かずに済ます。
例えば、invent のin- は中、innocent のin- は否定。
term は枠とか

イメージからの連想。
ほとんどは、このケースで正解

日本語で言えば、漢字から推測するようなもの

665 :
Chrome なら、英語のサイトを開くと、翻訳しますかって表示される

github とか、おおよそそれで分かる

666 :
Eclipse使ってます。

JavaでPDFファイルを読み込みたいんですが、上手く行きません。
取りあえずPDFBox 2.0.19を外部ライブラリとして読み込めるようにしたまでは良いです。

https://weblabo.oscasierra.net/java-pdfbox-1/
を参考に「簡単なサンプルプログラム」をコピペしただけなのに、

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.pdfbox.pdmodel.PDDocument.<clinit>(PDDocument.java:98)
at sample.簡単なテスト用クラス.main(簡単なテスト用クラス.java:37)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 2 more

というエラーが出ます。
どうしたらいいですか?

667 :
エラーログすら読めないとか
ググル以前にバカすぎるからもう諦めろ

668 :
>>666
>どうしたらいいですか?
エラーの原因を調べてコードを修正すればいいですよ。

669 :
>>667,668
会話のレベルが初歩過ぎてお前らじゃ相手にならん
知ってる奴に回答を求む

670 :
あまりに低レベルすぎて強がりが透けて見えるから
おとなしく回れ右しとけ
嘘でも何でもなく、おまえは向いてない

671 :
ログからエラーの直接の原因は誰でも分かるんだからそれを調べる事からやれよ
それすらできないならほんとに諦めたほうがいい

>コピペしただけなのに
>どういたらいいですか?

この考え方がもうね・・・

672 :
>>670
要するにお前の知能じゃ正解は言えないって事だな
会話のレベルが初歩過ぎるとはそういう事。もう既に証明されてる。

>>671
>>ログからエラーの直接の原因は誰でも分かるんだからそれを調べる事からやれよ
会話のレベルが初歩過ぎる(繰り返し)

このスレにはこんなのしか居ねぇのか?
もう一歩進んだ日本語を喋れる奴を期待したいんだが

673 :
ここは小学生が質問するスレじゃねーんだわ

674 :
>>666の時点既にエラーの原因をググった上で「NoClassDefFoundError」が何故起きるかについて聞いたつもりだったんだが、
会話のレベルが初歩過ぎるって言ってる意味分かって貰えた?
一々こんなクソ低次元な所に立ち止まって説明して貰わないと理解出来ない頭なんかな?
っつーか、こんな様子じゃお前らなんかに聞いても無駄なんだろうな。
期待した俺がバカだったw

675 :
だから向いてないってw
とっとと消えろゴミ

676 :
>>675
発言がどんどん幼稚化して行っててワロタw
お前の語彙力はその程度
低知能だから何の回答も出来ず、クソ低次元な所からの揚げ足取り(実際は揚げ足取りにすらなってない)しか出来ない
で、俺にレスを返されると幼稚な悪口
このスレにはこんなしょうも無い動物しか居ないのか?

677 :
>>675
もうお前の頭の限界は見えた。
少なくともお前には回答を期待してないww

678 :
おーおー好きなだけ荒らしてけ低能
飽きたらとっとと消えろゴミ

679 :
>>664
>分からない単語を、語源から推測して、辞書を引かずに済ます。
それはラテン語系単語でしか使えないですよ…ゲルマン系の単語には無力ですね

680 :
>>666
LogFactoryクラスが見つからないよってことで
ライブラリを参照する必要があるのだろうけど
こういうときは公式サイトで依存するライブラリを調べたら良い

https://pdfbox.apache.org/2.0/dependencies.html
> Minimum Requirements
> PDFBox has the following basic dependencies:
>
> Java 6
> commons-logging

とあるんでcommons-loggingをクラスパスに追加すればおk

681 :
ほんとの意味でログも読めないレベルの馬鹿に
同じレベルの初心者が意気揚々と回答つけるから馬鹿が量産されてくんだよね

682 :
>>680
あざっす!
言われた通りにやったら上手く行きました!!!

683 :
>>681
お、他人が出した答えに乗っかっていく辺りにゴミクズさが出てるね
さすがお前らしい。

684 :
>>683
横からでごめんやけど
少し上の方のググレカス君と思うから相手にしなくていいよ

685 :
ググれカス君は春休みのキッズ

686 :
答えも何もログに書いててお前含めてお前と同レベルの馬鹿以外はみんなわかってんだけどw

池沼「classNotFoundって書いてる!原因を教えろ!(ムキッー!」
ワイ「いや答えかいてるやんw」
池沼「おまえらはレベルが低い!」

THE ガチ池沼
馬鹿すぎて草しか生えんw

687 :
でもここまでの馬鹿ってまずいないから
アンロード君の自演だと思ってる
文体のバカっぽさがアンロード君に似てるし

688 :
クラスアンロードで恥かいたことめっちゃ根に持ってるのは分かった

689 :
英語読めなくて自分が赤っ恥のこきっぱじの醜態を晒したのに
なぜが相手が恥かいたことになってる脳内変換するキチガイっぷりもやべーんだよなアンロード君
こういうのが将来、重大な犯罪とか犯す犯罪者予備軍のキチガイなんだわ
バカなのに一生懸命背伸びしてるのも痛々しかったしw

690 :
この下品な言葉遣いの人いつからこのスレに居ついちゃったの?

691 :
正論言われるとすぐ話逸らすし
ホント滑稽だね

692 :
自分が頓珍漢なこと言ってるのに、叩かれたら全部自演ってことにして敵を一人にしようとする
スレに張り付いて顔真っ赤にしてるお前じゃあるまいし、そんなめんどくせーことしねぇよ

693 :
英語読めなくて自分が赤っ恥のこきっぱじの頓珍漢な醜態を晒したのに
なぜがまたまた相手が頓珍漢なことを言った!と脳内変換するキチガイっぷりもやべーんだよなアンロード君
こういう脳障害者がいつか重大な犯罪とか犯す犯罪者予備軍のキチガイなんだわ
糞バカなのに一生懸命背伸びしてるのも痛々しかったしw

694 :
自分のアホさが理解できなくて相手に八つ当たり攻撃するところとか
このclassNotFound君とそっくりじゃんアンロード君w

695 :2020/03/23
一応ここは初心者スレだからね
英語がわからない人もいるし

[RPA]PC自動化技術総合スレ[効率化] Part.3
***Javaのオススメ入門書*** 『創るJava』 3.0
Java入門・初心者質問スレ Part.10
【License】ライセンス総合【利用許諾】
Xamarin Part6
プログラミングのやる気出す方法教えてくれ
自動巡回ソフトというものを作ってみたい
C#, C♯, C#相談室 Part95
洋書推薦図書/洋書必読書のためのスレッド 1
アセンブラ 13
--------------------
【性商品化議論】FCソウルの「リアルドール」議論、重懲戒で決着 [5/24] [新種のホケモン★]
どうしてB型のスポーツ選手は最強なんだろう
【進撃の巨人】サシャ 放屁6発目【芋女】
【G・ローランズ】 グロリア 【J・カサヴェテス】
自転車通勤スタイル185
【福】模型店の福袋【鬱】14
中国人が偽の薬を売ったとして20億円の大豪邸を政府に破壊される 家族は泣き叫びビニールハウス生活に
一晩寝かせたカレーですが何か?
【芳】4コマ漫画家が集うスレ【きらら専用】
∞ access2017 Sync.104∞
シューティングゲーム製作技術総合 20機目
スパゲッティの麺をバキバキと短くしてから茹でる。
auひかり1000Mbps どっち フレッツ光200Mbps
三大糞デザイン軽自動車 トコット アルト
【恥辱】ポールマッカートニー淋病
サミー777タウン ナナリズム Part106
☆(*^^*)チビ太のおでんの部屋★o(^o^)第23巻
【積水ハウス】最高益
【アラサー】婚活ブログヲチ168【アラフォー】
【kai】xops晒しスレ33【Himagine】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼