Java初心者のためのスレッドです。
※前スレ
Java入門・初心者質問スレ Part.2
http://echo.2ch.net/test/read.cgi/tech/1478863511/
探検
Java入門・初心者質問スレ Part.3 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/04/04(火) 20:41:11.59ID:y0EcmGB0
253デフォルトの名無しさん
2017/05/05(金) 20:47:26.36ID:3kP3AuyS GWでJava勉強してるやつ、進捗どう?
手遅れ感感じた?
手遅れ感感じた?
254デフォルトの名無しさん
2017/05/05(金) 20:50:14.80ID:jRdxjTk1 >>252
メモ帳か何かでコード書いてるのだとしたらIntelliJ使ってみるといいかもな
メモ帳か何かでコード書いてるのだとしたらIntelliJ使ってみるといいかもな
255デフォルトの名無しさん
2017/05/05(金) 20:59:16.11ID:Pxg1OvaW >254
netbeansでやってますよ
netbeansでやってますよ
256デフォルトの名無しさん
2017/05/05(金) 21:07:56.45ID:MjMW9HuU この年でJavaとか、他にもっとやることあるだろ
257デフォルトの名無しさん
2017/05/05(金) 21:22:34.99ID:RNJ7gaAH258デフォルトの名無しさん
2017/05/05(金) 21:31:22.44ID:RNJ7gaAH 入門書は大抵古い面倒な書き方->新しい楽な書き方の順で紹介する。
なので長い目で見たら新しい入門書のが良い。
到達出来るレベルは楽な文法覚えてるだけで何か作れる訳じゃ無い。
どっち読んでも大差はない。
英語覚えたから英語ペラペラか?
言語ってのは使ってナンボ。
入門したら、簡単なので良いからさっさと何か作る。
なので長い目で見たら新しい入門書のが良い。
到達出来るレベルは楽な文法覚えてるだけで何か作れる訳じゃ無い。
どっち読んでも大差はない。
英語覚えたから英語ペラペラか?
言語ってのは使ってナンボ。
入門したら、簡単なので良いからさっさと何か作る。
259デフォルトの名無しさん
2017/05/05(金) 21:51:52.06ID:Pxg1OvaW260デフォルトの名無しさん
2017/05/05(金) 21:55:05.15ID:RNJ7gaAH うむ。
最低限はね。
複雑なのはWebで本家のドキュメント眺めながらとか。
あなたのアイデア次第の部分のが多い。
作り方を思いつけるか。
調べられるか。
知ってるか。
最低限はね。
複雑なのはWebで本家のドキュメント眺めながらとか。
あなたのアイデア次第の部分のが多い。
作り方を思いつけるか。
調べられるか。
知ってるか。
261デフォルトの名無しさん
2017/05/05(金) 22:15:47.72ID:Pxg1OvaW >>260
発想の部分は好きだから多分いけると思う
むしろ色々な事をどんどん広げて行きたいと思う
事務職でマクロやってた時も結構複雑な処理をネットで調べたりして実装してた
知ってるか
っていうところがちょっと不安だけど大丈夫かな
でもとりあえず「オブジェクト指向 例 」「メソッドとは」「クラス 定義 必要性」とかわからないままを永遠にループ検索することはとりあえずなくなりそうでよかった
早くAmazonからこないかな
発想の部分は好きだから多分いけると思う
むしろ色々な事をどんどん広げて行きたいと思う
事務職でマクロやってた時も結構複雑な処理をネットで調べたりして実装してた
知ってるか
っていうところがちょっと不安だけど大丈夫かな
でもとりあえず「オブジェクト指向 例 」「メソッドとは」「クラス 定義 必要性」とかわからないままを永遠にループ検索することはとりあえずなくなりそうでよかった
早くAmazonからこないかな
262デフォルトの名無しさん
2017/05/05(金) 22:48:55.45ID:G0OfeBgr しかしJavaで書籍というか入門書無しで勉強する人おるんだな
大体はスッキリの入門、やさしいJava、明解のどれかから手を付けて始める印象が多い
というかせっかく入門書一杯あるんだから利用しない手はないべ
大体はスッキリの入門、やさしいJava、明解のどれかから手を付けて始める印象が多い
というかせっかく入門書一杯あるんだから利用しない手はないべ
263デフォルトの名無しさん
2017/05/05(金) 22:49:01.87ID:RNJ7gaAH 知ってるかは思いつけるかと調べられるかの繰り返しによる積み重ねだから、心配は要らない。
264デフォルトの名無しさん
2017/05/05(金) 22:49:39.29ID:+CHRnsuY エネルギーを2chに使うのをやめないと本読んでも意味ないんじゃないかな
265デフォルトの名無しさん
2017/05/05(金) 23:14:46.17ID:GcsXwLgt 配列について質問です。
…{1,2,3};
という表記法と、
…new int[]{1,2,3};
という表記は何か違いがあるのでしょうか?
…{1,2,3};
という表記法と、
…new int[]{1,2,3};
という表記は何か違いがあるのでしょうか?
266デフォルトの名無しさん
2017/05/05(金) 23:16:03.94ID:yjG7qa8A267デフォルトの名無しさん
2017/05/05(金) 23:39:09.89ID:GcsXwLgt >>266
アラ探しは止めてもらえます?
アラ探しは止めてもらえます?
268デフォルトの名無しさん
2017/05/05(金) 23:42:36.40ID:RNJ7gaAH newの方が本来の書き方で、newしない方はCからの移行組のために単純に書けるように後から作られたもの。
269265
2017/05/06(土) 00:35:25.29ID:gDC1nU6T270デフォルトの名無しさん
2017/05/06(土) 00:39:00.98ID:9tv813Aq 無い。
楽な方選ぶ。
(なので大抵newしない方で書かれる)
楽な方選ぶ。
(なので大抵newしない方で書かれる)
272デフォルトの名無しさん
2017/05/06(土) 02:51:48.75ID:GtACJVEu インスタンスの同一判定で違いが有るという話を見たこと有るが、
配列のインスタンスを判定する事自体がダメな事だと思ってる。
それより、int result[]=new int[10];
なんて書き方は覚えたての頃に少しした程度で、
今は、int result[]={ 0,1,2,3,4,5,6,7,8,9 };こう書くよなぁ…
C言語は知らなくても慣れてくるとみんなこうならない?
配列のインスタンスを判定する事自体がダメな事だと思ってる。
それより、int result[]=new int[10];
なんて書き方は覚えたての頃に少しした程度で、
今は、int result[]={ 0,1,2,3,4,5,6,7,8,9 };こう書くよなぁ…
C言語は知らなくても慣れてくるとみんなこうならない?
273デフォルトの名無しさん
2017/05/06(土) 03:07:22.28ID:9tv813Aq なる。
実はC++だとnewする、しないはスタックかヒープかの違いがあって、new int[n]とか宣言時に[]内に変数使える、使えないとか、配列作れる限界もnewした方が大きいとか違いがある。
でも、Javaは基本型以外は全部ヒープに置くので配列はヒープにしか置かない。
C形式がまだ無かった初期の入門書には何故配列をnewするのかの解説まであった。
Javaにおいてnewするしないに違いが無いなら、してられっかよ。って誰も書かなくなった。
実はC++だとnewする、しないはスタックかヒープかの違いがあって、new int[n]とか宣言時に[]内に変数使える、使えないとか、配列作れる限界もnewした方が大きいとか違いがある。
でも、Javaは基本型以外は全部ヒープに置くので配列はヒープにしか置かない。
C形式がまだ無かった初期の入門書には何故配列をnewするのかの解説まであった。
Javaにおいてnewするしないに違いが無いなら、してられっかよ。って誰も書かなくなった。
274265
2017/05/06(土) 04:21:51.57ID:gDC1nU6T と納得したのですが、突っかかる箇所があるのでまた書かせて頂きます。すいません。
今読んでいる書籍の問題で、(必要な個所だけ抜粋します)
public class Player {
int[] hand; // 手札配列
}
の実行用クラス(Exec)を作成しろという問題で、
Player player1 = new Player();
とした後、player1の手札配列に{2,13,26,13,48}をセットしろとのことなんですが、
player1.hand = {2,13,26,13,48};
とするとコンパイルエラーになるんですよね。解答には、
player1.hand = new int[]{2,13,26,13,48};
と書いてあり、そう入力するとエラーは無くなります。
なのでこの二つの表記法に文法的な違いがあるのでは?
と思ったわけです。
改めて皆さんの見識を伺いたいです。
本には違いはほとんど書かれていませんでした。
今読んでいる書籍の問題で、(必要な個所だけ抜粋します)
public class Player {
int[] hand; // 手札配列
}
の実行用クラス(Exec)を作成しろという問題で、
Player player1 = new Player();
とした後、player1の手札配列に{2,13,26,13,48}をセットしろとのことなんですが、
player1.hand = {2,13,26,13,48};
とするとコンパイルエラーになるんですよね。解答には、
player1.hand = new int[]{2,13,26,13,48};
と書いてあり、そう入力するとエラーは無くなります。
なのでこの二つの表記法に文法的な違いがあるのでは?
と思ったわけです。
改めて皆さんの見識を伺いたいです。
本には違いはほとんど書かれていませんでした。
275デフォルトの名無しさん
2017/05/06(土) 04:31:13.41ID:5R6Ql+c4276デフォルトの名無しさん
2017/05/06(土) 04:34:42.43ID:feNHzNcv >player1.hand = {2,13,26,13,48};
>とするとコンパイルエラーになるんですよね。解答には、
そのエラーメッセージで検索すべき!
それでも分からなければ、そのエラーメッセージをここに書いて、質問する
>とするとコンパイルエラーになるんですよね。解答には、
そのエラーメッセージで検索すべき!
それでも分からなければ、そのエラーメッセージをここに書いて、質問する
277デフォルトの名無しさん
2017/05/06(土) 04:44:15.46ID:feNHzNcv 推測で書くけど、
型 a = {2,13,26,13,48};
これは、配列リテラル。
初期化時の、特別な書き方
たぶん実行文じゃない。この行で実行されるわけではない。
アプリの開始前に、コンパイラが置き換える。
即値、つまり、既に何もせずとも値になってる
型 a = new int[]{2,13,26,13,48};
一方、これは実行文。この行で、newが実行される
型 a = {2,13,26,13,48};
これは、配列リテラル。
初期化時の、特別な書き方
たぶん実行文じゃない。この行で実行されるわけではない。
アプリの開始前に、コンパイラが置き換える。
即値、つまり、既に何もせずとも値になってる
型 a = new int[]{2,13,26,13,48};
一方、これは実行文。この行で、newが実行される
278デフォルトの名無しさん
2017/05/06(土) 08:30:46.24ID:9tv813Aq >>274
Cだとそもそも宣言時以外はそう言う書き方出来ないんだが、そうか、クラスのフィールドだと宣言と初期化が別れるな。
宣言と同時に初期化する時のみの特別な記述としてnewしない記述は使える。
それ以外はnewしないとダメ。
説明が雑ですまん。
理由は基本型じゃ無いから。
ヒープに置くのは全てnewが必要で、記述上特別扱いは配列の宣言と同時に初期化する時と、文字列のみ。
Cなんて、宣言と初期化が別れたらforで一個一個配列に値を入れるしか無いって言う。。。
Cだとそもそも宣言時以外はそう言う書き方出来ないんだが、そうか、クラスのフィールドだと宣言と初期化が別れるな。
宣言と同時に初期化する時のみの特別な記述としてnewしない記述は使える。
それ以外はnewしないとダメ。
説明が雑ですまん。
理由は基本型じゃ無いから。
ヒープに置くのは全てnewが必要で、記述上特別扱いは配列の宣言と同時に初期化する時と、文字列のみ。
Cなんて、宣言と初期化が別れたらforで一個一個配列に値を入れるしか無いって言う。。。
279265
2017/05/06(土) 11:15:43.19ID:gDC1nU6T 多くのレスありがとうございます。
エクリプスでは「配列定数はイニシャライザにおいてのみ使用可能です」と表示されました。
皆さんの言うように{1,2,3}という表記法は初期化時のみしか使えないということみたいです。
でも>>274の場合は初期化に相当しないのかな、と思うのですが…。
エクリプスでは「配列定数はイニシャライザにおいてのみ使用可能です」と表示されました。
皆さんの言うように{1,2,3}という表記法は初期化時のみしか使えないということみたいです。
でも>>274の場合は初期化に相当しないのかな、と思うのですが…。
280デフォルトの名無しさん
2017/05/06(土) 12:34:15.65ID:RxOQwEqu 宣言文の一部分である初期化子やろ
281デフォルトの名無しさん
2017/05/06(土) 13:07:31.76ID:3Bn/MS7d282デフォルトの名無しさん
2017/05/06(土) 13:09:11.36ID:3Bn/MS7d x int[] a;
o int[] hand;
人のコードよく読んで無かった。。。
o int[] hand;
人のコードよく読んで無かった。。。
283デフォルトの名無しさん
2017/05/06(土) 13:44:30.80ID:jYP/Wf/9 >>279
ありがとう。
ありがとう。
284デフォルトの名無しさん
2017/05/06(土) 16:41:50.05ID:5R6Ql+c4 >>277
書き方違うだけでコードは同じように new する形式になっていると思うが。
というのは何れの書き方でも a[1] = 2; みたいに内容を後から変更可能だから。
ただし static の場合は書き換え可能なデータ領域に最初からインスタンスがあって
(つまりコンパイラがそれを含めた形でバイナリを作ってあって)そこへの参照を a に
代入するだけになるかも知れない。
static でない場合は普通に実行人ヒープに領域確保してからリードオンリーの
データ領域(コンスタントプール)から初期値をコピーしていると思う。
書き方違うだけでコードは同じように new する形式になっていると思うが。
というのは何れの書き方でも a[1] = 2; みたいに内容を後から変更可能だから。
ただし static の場合は書き換え可能なデータ領域に最初からインスタンスがあって
(つまりコンパイラがそれを含めた形でバイナリを作ってあって)そこへの参照を a に
代入するだけになるかも知れない。
static でない場合は普通に実行人ヒープに領域確保してからリードオンリーの
データ領域(コンスタントプール)から初期値をコピーしていると思う。
285デフォルトの名無しさん
2017/05/06(土) 16:46:57.57ID:HAuELHoN まあどうなってるか見たいならコード書いてコンパイルしてjavap通せ
287デフォルトの名無しさん
2017/05/08(月) 17:19:02.28ID:C0kEGIYB 今日からjavaの本で学習し始めたんだけど
慣れたらpublicなんたらかんたらとか長い分も自分で一からかけるようになるの
慣れたらpublicなんたらかんたらとか長い分も自分で一からかけるようになるの
288デフォルトの名無しさん
2017/05/08(月) 17:24:11.64ID:3+foG7x1 IDEに生成させるもんだろ
289デフォルトの名無しさん
2017/05/08(月) 18:34:23.43ID:YdKqfeaH 確かに自動生成されるけど、慣れるといつのまにか暗唱できるようになってる。
という感じ。
という感じ。
290デフォルトの名無しさん
2017/05/08(月) 18:54:52.71ID:6xooNmVM IDEでもテキストエディタでも入力補完機能があるから
わざわざ覚える事でもない
わざわざ覚える事でもない
291デフォルトの名無しさん
2017/05/08(月) 20:55:56.19ID:epGpOLAg292デフォルトの名無しさん
2017/05/09(火) 08:36:16.33ID:wOo51I5g まぁでも本で勉強してればmainメソッドの成り立ちなんてじっくりねっとり解説されるから嫌でも覚えちゃうよね
293デフォルトの名無しさん
2017/05/09(火) 12:44:24.36ID:zagaBJts 画像解析のソフトを使うのにJava Library Pathを追加しないといけないのですがJavaをインストールした後の最初から躓いています(;;)
https://github.com/qupath/qupath/wiki/Working-with-MATLAB
この真ん中あたりに書いてある
Option #2: Control MATLAB from inside QuPath
-- Add MATLAB libraries to QuPath's Java Library Path
で,JVMOptionsをどうやって作ったらいいかわかりません
下記のページの最後「パスの設定は完了」ってところまでやったんですが..
http://techfun.cc/java/windows-jdk-pathset.html
関係ないソフトでてきてごめんなさい
https://github.com/qupath/qupath/wiki/Working-with-MATLAB
この真ん中あたりに書いてある
Option #2: Control MATLAB from inside QuPath
-- Add MATLAB libraries to QuPath's Java Library Path
で,JVMOptionsをどうやって作ったらいいかわかりません
下記のページの最後「パスの設定は完了」ってところまでやったんですが..
http://techfun.cc/java/windows-jdk-pathset.html
関係ないソフトでてきてごめんなさい
294デフォルトの名無しさん
2017/05/09(火) 12:49:33.75ID:zagaBJts Win7 64bitです
295デフォルトの名無しさん
2017/05/09(火) 16:18:51.10ID:iKf74YDS296デフォルトの名無しさん
2017/05/09(火) 16:45:19.33ID:dAYvtASF スッキリわかるjava入門でどこJavaじゃダメだからコマンドプロンプトっていうのを使ってくれって書いてあったんだけど、正直よくわからないからそのままnetbeansぇ続けても大丈夫?
297デフォルトの名無しさん
2017/05/09(火) 18:01:00.16ID:xhqm65zv そんなあなたにpaiza.io
298デフォルトの名無しさん
2017/05/09(火) 18:28:25.96ID:zagaBJts >>295
説明不足でごめんなさい
この2つのソフト(コマーシャルのMATLABとオープンのQuPath)はどちらも独立して使えてはいるんですが,片方のソフトからもう片方のソフトを呼び出せる機能があってそのことが書いてあるのが最初に添付したリンクです.
QuPath内にあるQuPath.cfgをJVMOptionに移動させるのが最初のステップなのですがそのJVMOptionが作りかたがわからないのです.
説明不足でごめんなさい
この2つのソフト(コマーシャルのMATLABとオープンのQuPath)はどちらも独立して使えてはいるんですが,片方のソフトからもう片方のソフトを呼び出せる機能があってそのことが書いてあるのが最初に添付したリンクです.
QuPath内にあるQuPath.cfgをJVMOptionに移動させるのが最初のステップなのですがそのJVMOptionが作りかたがわからないのです.
299デフォルトの名無しさん
2017/05/09(火) 18:42:38.34ID:wOo51I5g 大丈夫大丈夫
これからも正直よく分からないところはどんどん飛ばしていけ
そうすれば正直よく分からないところで悩む必要無くなるから
これからも正直よく分からないところはどんどん飛ばしていけ
そうすれば正直よく分からないところで悩む必要無くなるから
300デフォルトの名無しさん
2017/05/09(火) 19:45:49.93ID:41He4fJz >>298
そもそもそのページがMATLAB → QuPath(op #1)とQuPath → MATLAB(op #2)の両方書かれてるのは理解してるよな?
op #1はMATLAB側の環境を整えてる
同#2はQuPath側だな
んで問題の箇所は簡単に済ませるならjava.library.pathをQuPath.cfgの中に記述しろって書いてるだろ?
実際のファイル見てないからわからんが、テキストエディタで見れば最低でも[JVMOptions]の行はあるだろうから、その下に追記してやればいい
例で書かれてるのはMAC版みたいだから自分の環境に合わせて書き換えろよ
そもそもそのページがMATLAB → QuPath(op #1)とQuPath → MATLAB(op #2)の両方書かれてるのは理解してるよな?
op #1はMATLAB側の環境を整えてる
同#2はQuPath側だな
んで問題の箇所は簡単に済ませるならjava.library.pathをQuPath.cfgの中に記述しろって書いてるだろ?
実際のファイル見てないからわからんが、テキストエディタで見れば最低でも[JVMOptions]の行はあるだろうから、その下に追記してやればいい
例で書かれてるのはMAC版みたいだから自分の環境に合わせて書き換えろよ
301デフォルトの名無しさん
2017/05/09(火) 20:00:45.39ID:dAYvtASF public class 素数判定 {
public static void main(String[]args)
{
int sum=0;
int a =new java.util.Scanner(System.in).nextInt();
System.out.print(a+"=");
int m=a;
boolean test=false;
for(int i=2;i<=a;i++){
if(a%i==0){
if(m!=a){
test =true;}
while(a%i==0){
a=a/i;
sum++;
}
if (sum!=1){
System.out.print(i+"^"+sum+"・");}
else{
System.out.print(i+"・"); }
sum=0;}
}
if (test==false){
System.out.println("\n"+m+"は素数です!");
}}}
書いてみたのだがすっきりしない
式の最後によけいな「・」が出てしまうし、iのループ中で一回でもtrueが出ればそのあとは判定しなくていいわけだし
改良点があれば教えてほしい
public static void main(String[]args)
{
int sum=0;
int a =new java.util.Scanner(System.in).nextInt();
System.out.print(a+"=");
int m=a;
boolean test=false;
for(int i=2;i<=a;i++){
if(a%i==0){
if(m!=a){
test =true;}
while(a%i==0){
a=a/i;
sum++;
}
if (sum!=1){
System.out.print(i+"^"+sum+"・");}
else{
System.out.print(i+"・"); }
sum=0;}
}
if (test==false){
System.out.println("\n"+m+"は素数です!");
}}}
書いてみたのだがすっきりしない
式の最後によけいな「・」が出てしまうし、iのループ中で一回でもtrueが出ればそのあとは判定しなくていいわけだし
改良点があれば教えてほしい
302デフォルトの名無しさん
2017/05/09(火) 20:18:00.56ID:smTpNxH0 インデントおかしいし変数名分かりづらいし
303デフォルトの名無しさん
2017/05/09(火) 20:28:39.39ID:/JePIrk9 >>301
trueになった時点でbreakしたら素因数分解できないでしょ
trueになった時点でbreakしたら素因数分解できないでしょ
304デフォルトの名無しさん
2017/05/09(火) 20:32:53.06ID:dAYvtASF305デフォルトの名無しさん
2017/05/09(火) 20:42:22.15ID:60ZWnyEc 100が素数かどうか調べる時は√100まで
つまり2〜10でええんやで
つまり2〜10でええんやで
306デフォルトの名無しさん
2017/05/09(火) 20:45:33.38ID:dAYvtASF307デフォルトの名無しさん
2017/05/09(火) 20:51:57.55ID:SmlWSda1 Math.sqrtの結果をintキャスト
308デフォルトの名無しさん
2017/05/09(火) 20:55:23.79ID:dAYvtASF >>307
なるほど!ありがとう
なるほど!ありがとう
309デフォルトの名無しさん
2017/05/09(火) 22:29:03.24ID:ivwxgVxg >>301
「・」は出すように書いてあるからその通りに出てくるだけ
「・」は出すように書いてあるからその通りに出てくるだけ
310デフォルトの名無しさん
2017/05/10(水) 01:27:24.94ID:BYWHw2Iq プログラミングっていうかゲーム作りって言ったらGUIとかアニメーションを使うのが一番に出て来ると思うんだけど、javaのコーディングでできるものなの?
311デフォルトの名無しさん
2017/05/10(水) 02:06:28.58ID:qeZ1bcfg >>301
4も8も素数と出るのだが・・・
4も8も素数と出るのだが・・・
312デフォルトの名無しさん
2017/05/10(水) 02:07:09.79ID:qeZ1bcfg >>310
できる。
できる。
313デフォルトの名無しさん
2017/05/10(水) 02:24:21.40ID:k+Fw34TB エラトステネスのふるい懐かしい
314デフォルトの名無しさん
2017/05/10(水) 02:25:43.59ID:7vBaEDXu いやエラトステネスの篩いま関係ないっす
315デフォルトの名無しさん
2017/05/10(水) 09:46:36.96ID:BYWHw2Iq >>311
そうなんだよね
自分もそれを投稿した直後に気付いた
If(m!=a)をif(m!=i)にしたら直った
累乗の数はそうなっちゃってたみたい
今はネットビーンズでプログラミングしてコンソール上で処理を表示させてるんだけど普通のアプリと同じようにダブルクリックして起動させるようにするにはどうしたらよいの?
そうなんだよね
自分もそれを投稿した直後に気付いた
If(m!=a)をif(m!=i)にしたら直った
累乗の数はそうなっちゃってたみたい
今はネットビーンズでプログラミングしてコンソール上で処理を表示させてるんだけど普通のアプリと同じようにダブルクリックして起動させるようにするにはどうしたらよいの?
316デフォルトの名無しさん
2017/05/10(水) 12:42:35.37ID:3FTnTomt >>315
jarファイルのMANIFEST調べろ
jarファイルのMANIFEST調べろ
317デフォルトの名無しさん
2017/05/10(水) 13:21:55.97ID:GZ1G5LqK >>310
例えばMinecraftはJavaとOpenGLのライブラリを使って書かれている
例えばMinecraftはJavaとOpenGLのライブラリを使って書かれている
318デフォルトの名無しさん
2017/05/10(水) 19:54:36.55ID:39V1aTUU319デフォルトの名無しさん
2017/05/11(木) 16:34:47.91ID:a7kjTynb お
320デフォルトの名無しさん
2017/05/11(木) 16:36:18.38ID:a7kjTynb クラスのフィールドとかメソッドを書き換えられないようにfinalをつけるっていうけどソースコードそのものを渡さないとクラスが使えないだろうしfinalを外したりするのは自由にできてしまうのではないの?
321デフォルトの名無しさん
2017/05/11(木) 16:50:23.23ID:eS2L0WVj322デフォルトの名無しさん
2017/05/11(木) 20:02:59.23ID:90G5iBS0 継承について質問させてください
public class Parent{
public void hoge(){ System.out.println("p_hoge"); }
private void piyo(){ System.out.println("p_piyo"); }
}
public class Child extends Parent{
public void hoge(){ System.out.println("c_hoge"); }
public void piyo(){ System.out.println("c_piyo"); }
}
public class Main {
public static void main(String[] args) {
Child child1 = new Child();
Parent child2 = child1;
child1.hoge(); // c_hoge
child1.piyo(); // c_piyo
child2.hoge(); // c_hoge
child2.piyo(); // error: piyo() has private access in Parent
}
}
ここで、child2.piyo()がコンパイルエラーになるのは何故でしょうか
確かに型はParent型ですが、単にChildインスタンスへの参照を代入しただけなので
関係ないかと思ったのですが
実際child2.hoge()はChildクラスのhogeメソッドを実行してますし、Parentクラスの
piyoメソッドのアクセス制限をpublicにするとchild2.piyo()は「c_piyo」を出力します
あるいは Parent child3 = new Child();としても同じ結果でした
コンパイルの際、型情報はどういう順番でチェックされているのですか?
public class Parent{
public void hoge(){ System.out.println("p_hoge"); }
private void piyo(){ System.out.println("p_piyo"); }
}
public class Child extends Parent{
public void hoge(){ System.out.println("c_hoge"); }
public void piyo(){ System.out.println("c_piyo"); }
}
public class Main {
public static void main(String[] args) {
Child child1 = new Child();
Parent child2 = child1;
child1.hoge(); // c_hoge
child1.piyo(); // c_piyo
child2.hoge(); // c_hoge
child2.piyo(); // error: piyo() has private access in Parent
}
}
ここで、child2.piyo()がコンパイルエラーになるのは何故でしょうか
確かに型はParent型ですが、単にChildインスタンスへの参照を代入しただけなので
関係ないかと思ったのですが
実際child2.hoge()はChildクラスのhogeメソッドを実行してますし、Parentクラスの
piyoメソッドのアクセス制限をpublicにするとchild2.piyo()は「c_piyo」を出力します
あるいは Parent child3 = new Child();としても同じ結果でした
コンパイルの際、型情報はどういう順番でチェックされているのですか?
323デフォルトの名無しさん
2017/05/11(木) 20:24:14.54ID:qSTwHBOZ >>322
こんパイル時は単純に変数が何クラスなのかしか見てなくて、それの場合はParentクラスだからその定義を見てpiyo()メソッドはprivateだからエラーにしてるだけ。
こんパイル時は単純に変数が何クラスなのかしか見てなくて、それの場合はParentクラスだからその定義を見てpiyo()メソッドはprivateだからエラーにしてるだけ。
324デフォルトの名無しさん
2017/05/11(木) 20:33:32.16ID:90G5iBS0 >>323
なるほど、コンパイル時は型情報のみでチェックをして、中身は実行時に初めて見てるのですね
参考書の「実行時のインスタンスを想像しながらプログラムを書いてはいけない」という意味がようやくわかりました
ありがとうございます
なるほど、コンパイル時は型情報のみでチェックをして、中身は実行時に初めて見てるのですね
参考書の「実行時のインスタンスを想像しながらプログラムを書いてはいけない」という意味がようやくわかりました
ありがとうございます
325デフォルトの名無しさん
2017/05/12(金) 00:38:23.02ID:55apZTWp エクリプスやコマンドプロンプトから別ウインドウを開いてシンプルな折れ線グラフを表示したいのだけど、何をどうすればいいかわかりません。
swingとかいうのを使えばいいのでしょうか?
swingとかいうのを使えばいいのでしょうか?
326デフォルトの名無しさん
2017/05/12(金) 02:22:52.66ID:Otw8y3gH System.exit(1);(数字は任意)はなるべく使わない方がよいのでしょうか?
327デフォルトの名無しさん
2017/05/12(金) 06:49:04.24ID:84Td0x+H >>326
その数字は終了ステータスと言って0以外だと異常終了したって扱いになるからちゃんとしたコマンドを作るなら使い分ける必要がある
その数字は終了ステータスと言って0以外だと異常終了したって扱いになるからちゃんとしたコマンドを作るなら使い分ける必要がある
328デフォルトの名無しさん
2017/05/12(金) 14:49:58.50ID:LGrn4Vkx メソッドの中カッコ(インデント)は改行しないで書くのが習わし?
あと、次の処理を行うまで2秒とか時間間隔を置くコードがあれば教えて欲しい
あと、次の処理を行うまで2秒とか時間間隔を置くコードがあれば教えて欲しい
329デフォルトの名無しさん
2017/05/12(金) 15:28:45.71ID:LGrn4Vkx もう一個質問
クラスから作ったインスタンスって他でも利用できる?
メインでheroクラスのhを作ったとしてhのhpがあるメソッドによってデフォルトの100から50減ったとする
他のメインで呼び出した時hpが50減ったまま反映されてるのかな
クラスから作ったインスタンスって他でも利用できる?
メインでheroクラスのhを作ったとしてhのhpがあるメソッドによってデフォルトの100から50減ったとする
他のメインで呼び出した時hpが50減ったまま反映されてるのかな
330デフォルトの名無しさん
2017/05/12(金) 15:37:25.98ID:LGrn4Vkx つまり
public class main {
public static void main(String[]args){
wizard w =new wizard();
matango m=new matango('あ');
w.name="タカ";
w.attack(m);
w.fireball(m);
System.out.println(m.hp);
}
}
こういうコード書いてるんだけどこれだと毎回実行するたびに新しいmatangoが生成されてhpも全てリセットされちゃうんだ
メソッドで実行したこういう情報を保持しておきたい
他のメインメソッドで一番最後の行のmatango.m..hpをsystemoutしようとしたら変数が見つかりませんってなっちゃう
public class main {
public static void main(String[]args){
wizard w =new wizard();
matango m=new matango('あ');
w.name="タカ";
w.attack(m);
w.fireball(m);
System.out.println(m.hp);
}
}
こういうコード書いてるんだけどこれだと毎回実行するたびに新しいmatangoが生成されてhpも全てリセットされちゃうんだ
メソッドで実行したこういう情報を保持しておきたい
他のメインメソッドで一番最後の行のmatango.m..hpをsystemoutしようとしたら変数が見つかりませんってなっちゃう
331デフォルトの名無しさん
2017/05/12(金) 16:17:48.87ID:8okmpAdZ 実行時引数で受け取るor外部ファイルor共有メモリ
後何があるかな
後何があるかな
332デフォルトの名無しさん
2017/05/12(金) 16:37:05.11ID:QfK6Pl49 外部プログラムに情報を渡したいってこと?
いろんなとこで使うならDB保存でもすればいいんじゃないかな
いろんなとこで使うならDB保存でもすればいいんじゃないかな
333デフォルトの名無しさん
2017/05/12(金) 18:10:13.38ID:80n6+mfo Javaの公式リファレンスは
https://docs.oracle.com/javase/jp/8/docs/api/index.html
これしかないのでしょうか?
出来れば実際にメソッドを使った時の挙動も示してある物が見たいのですが、どこにも見当たらないもので・・・・・・
https://docs.oracle.com/javase/jp/8/docs/api/index.html
これしかないのでしょうか?
出来れば実際にメソッドを使った時の挙動も示してある物が見たいのですが、どこにも見当たらないもので・・・・・・
334デフォルトの名無しさん
2017/05/12(金) 18:18:07.13ID:84Td0x+H >>333
公式はそれだけ、クラス名やメソッド名でググるしかないよ
公式はそれだけ、クラス名やメソッド名でググるしかないよ
335デフォルトの名無しさん
2017/05/12(金) 18:22:29.06ID:80n6+mfo336デフォルトの名無しさん
2017/05/12(金) 18:24:57.87ID:84Td0x+H Pythonのリファレンスとかが詳しすぎるだけで本来こんなもんだよ、(多分俺の読解能力が腐ってるせいで)意味不明だからソース読みにいったりすることがよくある
337デフォルトの名無しさん
2017/05/12(金) 18:28:04.48ID:80n6+mfo338デフォルトの名無しさん
2017/05/12(金) 18:28:26.99ID:LGrn4Vkx 外部に渡すっていうより、
public static void main(String[]args){}の中に一緒に記述してたらインスタンス(勇者)を作るのと敵と戦うが同時に起きてしまって、敵にHPを減らされてもまた同じメインを実行したら勇者のHPも最初からにりせっとされちゃうじゃない
ゲームで言うセーブみたいな機能ってjavaでどうやって実現するのかなってずっと気になってた
public static void main(String[]args){}の中に一緒に記述してたらインスタンス(勇者)を作るのと敵と戦うが同時に起きてしまって、敵にHPを減らされてもまた同じメインを実行したら勇者のHPも最初からにりせっとされちゃうじゃない
ゲームで言うセーブみたいな機能ってjavaでどうやって実現するのかなってずっと気になってた
339デフォルトの名無しさん
2017/05/12(金) 18:42:20.75ID:tAeUMPRn340デフォルトの名無しさん
2017/05/12(金) 19:39:12.19ID:8okmpAdZ >>338
それもう外部ファイルに状態を保存しかなくね
それもう外部ファイルに状態を保存しかなくね
342デフォルトの名無しさん
2017/05/12(金) 20:50:18.79ID:5vkuZfot343デフォルトの名無しさん
2017/05/12(金) 21:02:08.92ID:84Td0x+H >>341
シェルスクリプト等のバッチ処理でコマンドが正常終了したとかの判定に使われるステータスだからそういう用途に使うならちゃんとしとけ、それ以外なら適当でいい
シェルスクリプト等のバッチ処理でコマンドが正常終了したとかの判定に使われるステータスだからそういう用途に使うならちゃんとしとけ、それ以外なら適当でいい
344デフォルトの名無しさん
2017/05/12(金) 23:25:25.16ID:Otw8y3gH345デフォルトの名無しさん
2017/05/12(金) 23:29:51.49ID:84Td0x+H >>344
おk、UNIXのコマンドで実際にヘルプ出した後に1返すやつあるし
おk、UNIXのコマンドで実際にヘルプ出した後に1返すやつあるし
347デフォルトの名無しさん
2017/05/13(土) 13:16:21.43ID:nXg2xudY あー。学校の課題かな?
これから switch 習うところみたいな。
これから switch 習うところみたいな。
348デフォルトの名無しさん
2017/05/13(土) 15:09:30.58ID:nn66e6lH >>347
>>326はプログラマ目指してる34歳発達の無職だよ
あんまり相手にしない方がいい
↓のスレの774とIDが一致
ねねっちと一緒にプログラムを勉強するスレ第2話 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489809785/
↑と↓でトリップが一致
34歳、発達障害の無職ですが…5 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/prog/1492326920/
>>326はプログラマ目指してる34歳発達の無職だよ
あんまり相手にしない方がいい
↓のスレの774とIDが一致
ねねっちと一緒にプログラムを勉強するスレ第2話 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489809785/
↑と↓でトリップが一致
34歳、発達障害の無職ですが…5 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/prog/1492326920/
349デフォルトの名無しさん
2017/05/13(土) 15:20:15.97ID:AEmw9vXq Javaリファレンスを読み始めたのですが
フィールドのサマリーやメソッドのサマリーというのは一体なんなのでしょうか?
java.lang.Systemを見るとフィールドのサマリーの方は
System.[out]←これの事を説明しているのは分かったのですが
メソッドのサマリーの方は検討もつかず・・・・・・
フィールドのサマリーやメソッドのサマリーというのは一体なんなのでしょうか?
java.lang.Systemを見るとフィールドのサマリーの方は
System.[out]←これの事を説明しているのは分かったのですが
メソッドのサマリーの方は検討もつかず・・・・・・
350デフォルトの名無しさん
2017/05/13(土) 16:33:51.59ID:nXg2xudY351326
2017/05/13(土) 16:58:01.94ID:0v4JDuG/352デフォルトの名無しさん
2017/05/13(土) 17:03:10.28ID:AEmw9vXq■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★3 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★8 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★3 [蚤の市★]
- たけし、ダウンタウン、明石家さんまを超えた! 全世代を超えて愛されるお笑い芸人ランキング! 1位決まる [牛丼★]
- 【26年度予算案】防衛費、過去最大の9兆円規模に、政府調整 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- バイクのエンジンがかからないの…
- ドラえもんのいなかったのび太。それが俺とこのスレ見てるお前だよ [769050516]
- 【悲報】30代独身女性「結婚や成功してる友達との差は開く一方、このまま1人で生きて淘汰される人生だと気づいて絶望してる…406万いいね [483447288]
- 女の部下が俺の家に来たいって言ってくるんだが、、、
- 【画像】ドw童貞はw絶ッッッ対"1"を選ぶ卓球 J Kのお食事会の写真見つけちゃいましたwwwwwwwwwww [904880432]
- 日本(政治、司法、警察、資本腐ってます)←こいつがここから立て直す方法www
