トップページ⇒tech
1002コメント343KB

Java入門・初心者質問スレ [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/05/12(木) 05:18:33.40ID:nzHoBPh8
Java初心者のためのスレッドです。
0253デフォルトの名無しさん2016/06/25(土) 19:50:58.85ID:TogfTX3q
>>249
最初はカプセル化だけ
しっかりやってればおk
0254デフォルトの名無しさん2016/06/25(土) 20:04:24.49ID:Iz7M/0Yc
C言語ならまともに書けるけどね
0255デフォルトの名無しさん2016/06/25(土) 20:22:19.16ID:nVk9lY4N
っ [Java Native Access]
0256デフォルトの名無しさん2016/06/25(土) 20:23:46.27ID:t8HpaPCg
オブジェクト指向の本読むといいと思う
オブジェクト指向でなぜつくるのか、とか
0257デフォルトの名無しさん2016/06/25(土) 20:25:32.81ID:TogfTX3q
Cと構造化の延長で理解してると
オブジェクト指向は分からない
0258デフォルトの名無しさん2016/06/25(土) 21:10:29.79ID:hfQpWsI3
>>244
その状態になる実行環境は?

何らかのIDEのコンソールへの出力がその症状になっているということならばそのIDEの問題だと思う。
プログラムからの出力を溜め込んで最後に画面出力しているんじゃないかと思う。

そのようなバッファリングがされないコンソール(例えば Windows ならコマンドプロンプト)で実行すれば
1秒おきに出力されるんじゃないかな。

あるいはバッファリングされていても出力がいつされたのか分かるようにしておけば実際に時間が掛かって
いることが分かると思う。例えば時刻を出力するとかね。
0259デフォルトの名無しさん2016/06/25(土) 21:21:37.58ID:Iz7M/0Yc
みんなアドバイスありがとう。
0260デフォルトの名無しさん2016/06/25(土) 21:21:48.28ID:hfQpWsI3
>>242
CやC++の#includeはコンパイラがプログラムを解釈する直前に実行されるプリプロセッサで解釈される。
プリプロセッサはCやC++の言語そのものを解釈しているのではなくテキスト変換みたいなことをしている。
そこでは #include を見つけたら該当のファイルを持ってきてその間に挿入した新たなソースファイルを
作る等していて(その他 #define を読んでその後の変換をする等していて)、そうやって作られたテキスト
ファイルをコンパイラが後で読んでコンパイルを行う。

Java の import はそのようなテキスト変換ではなく、コンパイラが読んで直接解釈するものだ。
コンパイラはこれを利用してクラスの在処を探す。
0261デフォルトの名無しさん2016/06/25(土) 23:58:43.68ID:JU8DBS1p
文字列が数値かどうか判定するメソッドがAPIに無い理由ってなんなんですかね?
0262デフォルトの名無しさん2016/06/26(日) 02:36:32.07ID:Fq1EvZdf
>>261
Integer.parseInt()とか使えば例外出るからそれ利用しろってことでは?
0263デフォルトの名無しさん2016/06/26(日) 07:35:53.45ID:zHRvslQr
今現在、JSFでwebページを作ってるのですが、
拡張子がxhtmlだとjspの
<% %>のタグが認識しません。.jspにすれば使えるのですが、なぜでしょうか
0264デフォルトの名無しさん2016/06/26(日) 11:35:41.58ID:6/Qi7lkv
>>261
馬鹿だな。

文字列の文字がすべて数字かどうかチェックしてすべて数字だったら、キャストすればいいんだよ。

キミのいうメソッドがあったら、どれだけ例外を細かく作り分けなきゃいけないんだよ。
0265デフォルトの名無しさん2016/06/26(日) 11:37:47.00ID:6/Qi7lkv
>>263
アプリケーションサーバの設定

JSPだということを隠す必要があるってこと?
0266デフォルトの名無しさん2016/06/26(日) 12:52:19.73ID:45Dp827Y
入門書のスッキリの入門と実践編がもうすぐ読み終わるのだけれど他に何かおすすめの本あるかな?
将来的にはアンドロイドのアプリや趣味でPC上で動く横スクアクションのゲームとか作ってみたいなと思ってる
だけど今はもっとjavaの知識を深めたい気持ちが高い
調べたらEFFECTIVE JAVAがいいみたいなサイトをよく見るけどどうなのかな?
これを読んでない奴はJavaプログラマとしてモグリとか使えないという記述をよく見かける
0267デフォルトの名無しさん2016/06/26(日) 13:01:06.76ID:Fq1EvZdf
>>264
言っていることの意味がよくわからんのだが、String s = "123"; int n = (int) s; と書けるということ?
今の Java ってそこまでやってくれるようになったの?
0268デフォルトの名無しさん2016/06/26(日) 13:14:25.36ID:Fq1EvZdf
Java8でやってみたがキャストじゃ文字列から数値へは出来ないぞ。Integerへのキャストも同様に不可能。
0269デフォルトの名無しさん2016/06/26(日) 13:26:11.52ID:wMYGyLfw
>>266
http://docs.oracle.com/javase/specs/jls/se8/jls8.pdf
http://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf
これらは背伸びしても無駄にならない
0270デフォルトの名無しさん2016/06/26(日) 13:35:21.62ID:45Dp827Y
>>269
ありがとうございます!
んほおぉ英語ぉ!
英語ほとんどわからないけどやっぱ英語できるようになったほうがいいんだろうな
おすすめ本とかでも洋書あげてるの結構見るし
0271デフォルトの名無しさん2016/06/26(日) 15:30:30.27ID:JEZlx75J
>>266
ゲームを作ることと、プログラミング言語の習得は、目的が異なるので勘違いしないように。
0272デフォルトの名無しさん2016/06/26(日) 15:32:19.18ID:JEZlx75J
初心者スレなのを忘れてた。

キャストというとずばりキャスト構文だと思うわけか。

私が言ったのは型変換。
0273デフォルトの名無しさん2016/06/26(日) 15:51:13.76ID:Fq1EvZdf
>>272
>>264と同一人物?
キャストと言ったら形変換だが? 何か用語の定義がおかしくないか?
君は実際どういう風に書いたのを型変換と呼んでいるんだ?
0274デフォルトの名無しさん2016/06/26(日) 16:23:52.43ID:JEZlx75J
>>273
型変換がキャスト式とはかぎらない。
0275デフォルトの名無しさん2016/06/26(日) 17:00:56.77ID:UB82q4A+
>>274
だったらどういうコードなのか書いて示せよ
0276デフォルトの名無しさん2016/06/26(日) 19:20:32.78ID:FUFUwvmK
>>266
良書だけど
ちょい難しいかも

普通にアンドロイドアプリの
作り方の本とか買って
小物作ってみてもいいよ
0277デフォルトの名無しさん2016/06/26(日) 20:00:08.94ID:AN/Vw1H/
javaの知識を広めたいなら
言語仕様書を読むとか
0278デフォルトの名無しさん2016/06/26(日) 20:36:23.66ID:qGDMHb1o
>>266
ゲーム作るなら余計なオブジェクト生成をなるべく避けるべしみたいな所は立読みしておいて損は無いと思う
まぁゲーム作りの本にも出てるかもだけど
0279デフォルトの名無しさん2016/06/26(日) 21:22:46.16ID:45Dp827Y
>>271
はい!

>>276
なるほどー確かに中級者以上的なことも書いてありました
モチベ維持のためにもそうしてみます

>>277
これから長くjava使っていくならそういうのも読んだほうがいいんですかね

>>278
調べたら近くの本屋に置いてるみたいなんで立ち読みしてみます


どうもありがとうございました!
0280デフォルトの名無しさん2016/06/26(日) 21:46:07.67ID:9YyM53VL
昔はゲームならJavaよりC++って言われたけど、いまはどうなんだろう
0281デフォルトの名無しさん2016/06/26(日) 22:31:22.13ID:0+Or/a+e
C# ならありだが Java はない
まあプログラミング一年生にまでやめろとは言わん
0282デフォルトの名無しさん2016/06/26(日) 23:03:16.34ID:yAtATLvz
Java8の本

Java 最強リファレンス、田中裕一、2014

実践Javaコーディング作法 プロが知るべき、
112の規約と21の心得、森崎雅稔(まさとし)、2014

JavaFX GUIプログラミング [Vol.1]、大村忠史、2012

スッキリわかる サーブレット&JSP入門

プログラミング GROOVY、2011

SQL, DBの本
0283デフォルトの名無しさん2016/06/26(日) 23:48:53.59ID:FUFUwvmK
>>280
今こそJavaは大アリだろ
アンドロイドアプリで

Xamarinに期待して
C#でもいいけど
0284デフォルトの名無しさん2016/06/27(月) 00:42:46.54ID:+vyCfN5E
>>283
最近の若いやつって画像を表示するところから作らないからゲームプログラミングの話をすると噛み合わないよな。
0285デフォルトの名無しさん2016/06/27(月) 10:17:26.02ID:85mOU5HS
>>244ですがありがとうございました。
0286デフォルトの名無しさん2016/06/27(月) 19:48:13.28ID:NkkqwDMh
すごく初歩的で馬鹿な質問かもしれませんがよろしくお願いします
エクリプスのエンコードはutf-8でデフォルトになってると思うのですがこれが普通なのでしょうか?
というのも最近エクリプスを使い始めて書いたソースをふとコマンドプロンプトでコンパイルしたらエラーがでてしまって
調べたら文字コードの問題で-encodingコマンドを使ったら実行できたのですが
どうして普通にコンパイルできる文字コードがデフォルトじゃないのかなと気になってしまって
実は最初にエクリプスのエンコード設定で別のにするのが当たり前だったりするのでしょうか?
0287デフォルトの名無しさん2016/06/27(月) 19:54:37.74ID:+vyCfN5E
>>286
Windowsはまだ表面上はSJISです。
0288デフォルトの名無しさん2016/06/27(月) 20:26:40.92ID:NkkqwDMh
>>287
ということはエクリプスでエンコード設定でSJISに設定していたほうが都合がいいということでしょうか?
0289デフォルトの名無しさん2016/06/27(月) 20:32:57.06ID:wojXk3Hk
何が普通かは環境によって違うから何とも言えない
プロジェクトのプロパティのResourceで変更
文字コード以外にも改行が\nか\r\nかで違う、これも見落しやすい
0290デフォルトの名無しさん2016/06/27(月) 20:34:39.21ID:+vyCfN5E
>>288
ソースコードをコマンドプロンプトでコンパイルしたいのならそうなります。
0291デフォルトの名無しさん2016/06/27(月) 20:48:44.20ID:NkkqwDMh
>>289
>>290
なるほどスッキリしました
どうもありがとうございました
0292デフォルトの名無しさん2016/06/28(火) 02:07:46.93ID:IQWCuxBm
ま、コンパイルするたびに毎回 -encoding で指定するのが面倒でないならばなんであっても構わないと言えなくもない。
0293デフォルトの名無しさん2016/06/28(火) 12:50:26.37ID:4sSl9cCN
コマンドプロンプトの文字コードを、UTF-8に設定できないの?

Jenkins, Gradle などを使うと、インターネット上のサーバーにも、
アクセスするだろうし、UTF-8が必須
0294デフォルトの名無しさん2016/06/28(火) 12:57:23.51ID:c2QodO+5
chcp 65001
でUTF-8にできなくはないが動作の保証はされていない
というかまともに動かない
0295デフォルトの名無しさん2016/06/28(火) 16:12:25.82ID:zVyoUqTb
"Jan"→1
"Feb"→2
"Mar"→3
という感じでJavaで英語の月名3文字を数字に変える簡単な方法ありませんかね
if elseと配列以外でやりたいんですが
0296デフォルトの名無しさん2016/06/28(火) 16:20:17.71ID:fkMcptl6
>>295
switchは?

質問
InetAddress.getLocalHostやsocket.getInetAddressで得られるIPアドレスと
コンピュータのシステムで表示されるIPv4が一致しないんだけどどっちが正しいの?

同じパソコン内なら得られたやつで通信できるんだけど端末違うとどっちもできない
0297デフォルトの名無しさん2016/06/28(火) 16:29:48.96ID:zVyoUqTb
>>296
すみません、switchも無しですね
出来るだけ短くできる方法を探しています
0298デフォルトの名無しさん2016/06/28(火) 16:55:53.11ID:oSSei7yC
>>297
Mapか三項演算子の羅列でも使ってればいいんじゃね
結局短く書きたいっていう意図が分からないわ
0299デフォルトの名無しさん2016/06/28(火) 17:02:50.51ID:iF4vz2O7
>>297
Map<String, Integer> m = new HashMap<>();
m.put("Jan", new Integer(1));
int value = m.get("Jan").intValue();
0300デフォルトの名無しさん2016/06/28(火) 17:10:37.05ID:iF4vz2O7
こういうのも
List<String> list = Arrays.asList("Jan", "Feb", "Mar");
value = list.indexOf("Jan") + 1;
0301デフォルトの名無しさん2016/06/28(火) 17:47:19.51ID:842o8d8c
>>300
お。スマートな感じ。
0302デフォルトの名無しさん2016/06/28(火) 20:35:55.41ID:Io4u4DLH
>>295
SimpleDateFormatでもいけるぞ
https://ideone.com/Q8X3IT
0303デフォルトの名無しさん2016/06/28(火) 20:42:31.79ID:D5fDe1MV
たった12分岐なのにアホくさいな。
0304デフォルトの名無しさん2016/06/28(火) 22:19:53.55ID:MoJvcG+3
>>297

�@シンプルにコーディングしてシンプルなコメントを書く
�Aコーディングを1行でも減らそうとしてあまり馴染みのない書き方や関数を使って、それを解説するコメント行数が多い

仕様(テスト問題?)にもよるんだろうが、結果が同じなら�@がいいんでない?
0305デフォルトの名無しさん2016/06/28(火) 22:20:21.95ID:jKjX+7cA
『スッキリわかるJava入門 第2版』もってる人!
p.371の練習問題の�A D)が次ページの解答例に反映されてないっぽいんだが、
「名前を指定しない場合にはインスタンス化することはできないものとします」
これどういうコードになるの?
Cleric() {}じゃだめだよね?
0306デフォルトの名無しさん2016/06/28(火) 22:24:43.86ID:jKjX+7cA
自己解決。
Cleric() {}は書いちゃいけないんだね。
そしたら引数ありのコンストラクタだけになるから引数が空の状態で
コンストラクタ読んだらコンパイルエラーになる。
こういう意味と理解した。
0307デフォルトの名無しさん2016/06/28(火) 23:43:50.77ID:1vh+IkvQ
>>306
コンストラクタをいっさい書かないと、コンパイラが引数なし、処理なしのコンストラクタを追加する。

コンストラクタを明示的に書くと上記のようなコンストラクタは追加されない。
0308デフォルトの名無しさん2016/06/28(火) 23:51:59.70ID:jKjX+7cA
>>307
それそれ。さっきスッキリJava読み返して覚えたよ。
最初、引数なしのコンストラクタ呼んだら(new xx()ね)nullでも
返ってくるのかと勝手に思い込んでいた。
0309デフォルトの名無しさん2016/06/29(水) 00:26:13.22ID:rvkEi9Nh
>>308
Javaの資格本を読むといいよ。
0310デフォルトの名無しさん2016/06/29(水) 01:34:02.25ID:CJ/0Quwm
>>297ですが、提案していただいたもので解決できそうです。
ご意見色々と本当にありがとうございました。
0311デフォルトの名無しさん2016/06/29(水) 02:23:50.85ID:0b8SONCP
スッキリをNGにしとけばいいだろ
ステマ臭くて見てられない
0312デフォルトの名無しさん2016/06/29(水) 11:00:47.75ID:yKd8KiFI
スッキリはJava入門書某ランキングで1位だし今更ステマもないかと
0313デフォルトの名無しさん2016/06/29(水) 12:10:53.42ID:rvkEi9Nh
プログラミングの入門と、Javaの入門が一緒になっているからな。

初めがJavaって教育上、よくないかもしれない。
0314デフォルトの名無しさん2016/06/29(水) 12:23:46.97ID:ynfIfoaY
いいんだよ
それは必要な遠回りなんだよ
0315デフォルトの名無しさん2016/06/29(水) 13:39:39.63ID:Hg0Bm2HH
何かの言語で、初心者がオブジェクト指向を学べればよいけど、
現状では、スッキリJavaしか無い

他の本では、説明が少ないか、難しい

高くジャンプしたけりゃ、逆に、かがみ込まなければならない。
急がば回れ
0316デフォルトの名無しさん2016/06/29(水) 14:31:38.78ID:3P5K1ayE
もうスッキリが初心者を勧誘する怪しい宗教勧誘に見えてくる
いや一概に間違っていないか....
0317デフォルトの名無しさん2016/06/29(水) 16:32:30.16ID:Hg0Bm2HH
しゃーないやん。実践した多くの人が言ってるんやからw

スッキリで、出来るようになった人々の声

「スッキリで勉強したら、C#もすごくよくわかりますた」
「僕もスッキリやったら、C++も出来るようになって、ビックリ!」
「スッキリで、ゲーム制作に自信が持てますた」

など続々と、お祝いの言葉が届いております
0318デフォルトの名無しさん2016/06/29(水) 17:19:39.91ID:1Y4TFFS3
俺もスッキリ読んでお金持ちになって彼女が出来て不老不死になったわ
0319デフォルトの名無しさん2016/06/29(水) 22:04:26.62ID:UoeUIFRO
2ちゃんねる特有の評判がいいものはステマ、陰謀説
0320デフォルトの名無しさん2016/06/29(水) 23:19:02.98ID:tIZAdZda
ボクもちんちんを握っていたらいつのまにかスッキリしました
0321デフォルトの名無しさん2016/06/29(水) 23:38:44.09ID:rvkEi9Nh
いまのJavaのコンパイラが親切すぎるのもよくないんだろうな。

構文エラーがどこなのか、はっきり示してくれるし。

他の言語や古い言語だと、とんでもないところが間違っていると出てくるから、そういう環境の方が勉強になると思う。
0322デフォルトの名無しさん2016/06/29(水) 23:49:32.26ID:tIZAdZda
出るなら良い。昔のC言語だと何にも出ないでOSによってはそのまま暴走なんてこともあった。w
0323デフォルトの名無しさん2016/06/30(木) 00:22:13.71ID:Apg59XEJ
>>322
いまだってスクリプト言語は構文がおかしくても実行してみないとわからないけどな。
0324デフォルトの名無しさん2016/06/30(木) 00:40:10.38ID:LNAC9DQC
;
//ここでセミコロンを打つと何故かコンパイルが通る

昔のコンパイラでよくあったこと
0325デフォルトの名無しさん2016/06/30(木) 00:45:51.01ID:Apg59XEJ
>>324
そんなのねえよ。
0326デフォルトの名無しさん2016/06/30(木) 00:47:38.42ID:Apg59XEJ
ただの昔話は老化現象です。
0327デフォルトの名無しさん2016/06/30(木) 01:01:38.50ID:LNAC9DQC
コンパイラっていってもC言語の初期のやつな
構文解析のバグは多かったよほんと
0328デフォルトの名無しさん2016/06/30(木) 01:13:16.73ID:Apg59XEJ
ただの昔話は老化現象です。
0329デフォルトの名無しさん2016/06/30(木) 01:14:52.91ID:mTfAiRzU
初期っていつ頃だよ
1973年には既にリッチー本人がコンパイラ作ってたようだけど
0330デフォルトの名無しさん2016/06/30(木) 01:31:54.63ID:5tmD9Bik
なんでお前らそんな必死なんだよ
0331デフォルトの名無しさん2016/06/30(木) 01:38:40.75ID:Apg59XEJ
>>329
昔のパソコン用の話じゃないの?

情報が共有されてないから、出来の悪いコンパイラはあったと思うよ。

C言語のコンパイラ規格ってあるのかな?
0332デフォルトの名無しさん2016/06/30(木) 01:43:14.08ID:Apg59XEJ
規格ってどういうマシン語にするかという意味だけど。
0333デフォルトの名無しさん2016/06/30(木) 01:45:34.66ID:nuMRfLhn
言語自体の規格はあるだろ。C99とか。
0334デフォルトの名無しさん2016/06/30(木) 01:50:31.78ID:Apg59XEJ
>>333
そうじゃなくてどういうマシン語にするかだよ。

本家を基準にしてるのかな。
0335デフォルトの名無しさん2016/06/30(木) 01:56:47.21ID:nuMRfLhn
どういうって、そんなのCPUによってどういうのが効率良いかで変わるだろう。
0336デフォルトの名無しさん2016/06/30(木) 02:01:44.97ID:zGuy18cm
昔の業務用なんて言語仕様に完璧なコンパイラがばかりじゃ無かった
0337デフォルトの名無しさん2016/06/30(木) 02:10:13.73ID:Z6gb9kCv
無かったね
0338デフォルトの名無しさん2016/06/30(木) 08:43:46.47ID:bSccWkK0
>>331-332
構文・意味解析なら規格がある

バイナリ生成に関しては無い
リンク時のABIでデファクトと互換性をもたせるかどうかという程度

プリプロセッサも、う〜ん…
0339デフォルトの名無しさん2016/06/30(木) 09:13:00.96ID:Apg59XEJ
そうならJavaでもCでもどういうマシン語はくか不明ってことになるな。

だからこういうマシン語になるんだみたいな話はやっぱりしない方がいいってことだな。
0340デフォルトの名無しさん2016/06/30(木) 15:43:58.54ID:oYnfb6yX
だって色々なCPUがあるんだもん。決められないよ。
0341デフォルトの名無しさん2016/06/30(木) 16:16:42.40ID:8IMpbPEW
Javaは仮想マシン用のコードをはくべ?
0342デフォルトの名無しさん2016/06/30(木) 20:24:54.31ID:rMlxImT8
仮想マシンが未来永劫同じままという保証はない。
普通のCPUが機能追加されアップグレードすることがあるように今後言語の拡張に併せて仮想マシンが拡張される可能性はある。
0343デフォルトの名無しさん2016/06/30(木) 20:32:44.32ID:/XySBwDr
仮想マシン用のコードを直接理解するCPU作ればいいのにね。
最速になるんじゃないの?
0344デフォルトの名無しさん2016/06/30(木) 20:56:41.49ID:bMW7pQBg
昔JavaOSというのがあってな……
0345デフォルトの名無しさん2016/07/01(金) 01:03:59.82ID:p6Mcs4OD
おじいちゃん、昔っていつ?
0346デフォルトの名無しさん2016/07/01(金) 01:15:34.33ID:ZThLUTOM
お前そればっかな
0347デフォルトの名無しさん2016/07/01(金) 02:00:44.25ID:nN7ID4Tm
>>324
コメントだから、文字コードを指定しなくても、日本語を使っても、大丈夫と過信したのかも

日本語は3バイト文字になって、次の改行が1文字だと、合わせて4バイトになる

それを、2バイトずつ処理すると、割り切れるから、
改行が消えて、文が続き、誤動作する

基本的に開発では、日本語を使ったらダメ。
外人は日本語でテストしていないから
0348デフォルトの名無しさん2016/07/01(金) 02:45:05.61ID:fBj5CWQI
日本語が3バイトとは限らんよな。UTF-8 だと3バイトだが、しかしUTF-8なら上位ビット見れば何バイトなのか分かる。
0349デフォルトの名無しさん2016/07/01(金) 02:46:17.67ID:fBj5CWQI
あ、ごめん。UTF-8だと日本語は1文字3バイトなのが多いだけで3バイトとも限らんな。
0350デフォルトの名無しさん2016/07/01(金) 06:02:54.46ID:nN7ID4Tm
どうせコメントで削除されるから、UTF-8 にしなくても良いだろうと、

元の文字コードのまま、コンパイルしたのかも
0351デフォルトの名無しさん2016/07/01(金) 10:26:35.32ID:CKWFVnx8
>>343
それってもはやJavaしか動かないOS
0352デフォルトの名無しさん2016/07/01(金) 10:29:32.19ID:CKWFVnx8
Java自体はUTF-8ではなくて、UTF-16だろ。
■ このスレッドは過去ログ倉庫に格納されています