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

■ このスレッドは過去ログ倉庫に格納されています
2018/01/10(水) 11:06:04.02ID:ijSgjgrG
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.6
http://mevius.2ch.net/test/read.cgi/tech/1513783473/
2018/04/06(金) 20:55:50.36ID:cU5Ki5+d
>>280
ここがジャバスレだからやろなあ
2018/04/06(金) 20:56:25.62ID:cU5Ki5+d
>>281
c#は別スレやろなあ
284デフォルトの名無しさん
垢版 |
2018/04/06(金) 21:22:14.73ID:kq208CNi
むしろweb系以外でJavaって何に使われることが多いの?
swingなんて論外で、JavaFXですらまともに使われてなくない?
大人しくC#かelectronでやればいいんじゃないの?
2018/04/06(金) 21:38:59.15ID:x6lhJUWj
>>284
Web系以外ならAndroidだろう。嘘のように使われまくってるぞ。
286デフォルトの名無しさん
垢版 |
2018/04/06(金) 22:04:44.63ID:JeH9uig4
今後もkotlinと棲み分けていくんだろうか
2018/04/07(土) 01:47:55.25ID:V6nLcwUU
LocalDate.parse("yyyy年MM月dd日")でエラーとなりますが年月日はダメですか
2018/04/07(土) 03:09:34.12ID:ZNJF90jL
LocalDate.parse("9999年12年31日", DateTimeFormatter.ofPattern("yyyy年MM年dd日"))
2018/04/07(土) 03:23:23.02ID:V6nLcwUU
どうも、いろいろ足りませんでした
290デフォルトの名無しさん
垢版 |
2018/04/07(土) 17:16:17.45ID:6TnK6+sh
入力読み込みで
Scanner sc = new Scanner(System.in);

iInputStreamReader isr = new InputStreamReader(System.in);
BuffereReader br = new BufferedReader(isr);

があるんだけどどっちがいいの?どっちも読み込んでる作業は同じ?
2018/04/07(土) 17:21:55.15ID:jVz0WH5c
java.util.logging.SimpleFormatterで
%1$tbがJanとかFebのような英略称3文字にならないで1や2のように
数字になるんですが、どうすれば英略字3文字でログに出ますか?
292デフォルトの名無しさん
垢版 |
2018/04/07(土) 17:41:21.04ID:+hF6bNfk
>>291
aでいけそう
https://docs.oracle.com/javase/jp/7/api/java/util/Formatter.html#syntax
293デフォルトの名無しさん
垢版 |
2018/04/07(土) 17:43:59.47ID:+hF6bNfk
>>290
Scannerは読み込む前に数値か判定したり
数値に変換して読み込んだりできる
単語単位で読み込むときはScanner
行単位で読み込むときはBufferedReaderって感じかな俺は
294デフォルトの名無しさん
垢版 |
2018/04/07(土) 17:45:03.33ID:+hF6bNfk
>>292
曜日と月間違えてた、無視しておk
295デフォルトの名無しさん
垢版 |
2018/04/07(土) 17:46:11.52ID:+hF6bNfk
ロケールに依存してるからロケールを指定する方法があれば良いのか
2018/04/07(土) 23:02:19.15ID:a5Lxo59a
組込Javaはどうなったんだ
AndroidじゃなくてEmbeddedの方の
2018/04/08(日) 06:20:59.37ID:1mmlbc0v
>>290
普通は、Buffering で、バッファにためる。
面倒だから、1文字ずつ処理したりしない

ゲームなどで、キー入力したら、
即座に処理したい場合には、別のやり方を考えればよい
2018/04/08(日) 08:46:55.05ID:bMWcEeSO
Androidの世界から普通のJavaの世界に来たらLooperがいないんですけど、
普通のJavaの世界はwhile(true)でBlockedQueueでメッセージ受信ループを
作るみたいな実装は一般的ですか?
299デフォルトの名無しさん
垢版 |
2018/04/09(月) 03:46:55.69ID:ztjjLPRx
CDI+サーブレットでWebアプリを実装したのですが、(コンテナはTomcat9)
実際DIできているのですが、いつの時点でどのような形でオブジェクトを注入してるのかわかりません。
web.xmlでもfilter等呼び出しは一切してないので、素直に疑問です。
使っているjarはjbossのweld-servletぐらいです。

下記のような順番で処理されているのでしょうか。

リクエスト→Tomcat→クラスローダ→DI→Servlet→レスポンス
30035歳
垢版 |
2018/04/09(月) 08:44:16.96ID:Ptdpw/63
コード見てみないと分かりませんね。
2018/04/09(月) 21:10:38.18ID:Gpm8GpeQ
ググったらタイミング書いてるブログとか出てくるけどな
検索能力低すぎなんちゃう?
アノテーションの種類によっても注入タイミング違うみたいだし
filterみたいなめんどくさい記述無くすためにアノテーションがあるんだから
そんなもん書いてあるわけないじゃん頭大丈夫か?
2018/04/13(金) 07:30:53.48ID:gKD9KCbg
胴元のオラクルが特許ゴロっぽいですがjavaに未来はありますか

googleの件といい、いよいよ回収段階に入りそうでなんか怖いです
2018/04/13(金) 08:23:53.87ID:uvTNpodz
Javaに未来なんかある訳ねーだろ
2018/04/13(金) 08:52:03.60ID:2uthgf+p
>>303
Javaの未来は僕たちの未来だよ
JavaはSUNが潰れてから目覚ましい発展を遂げてる
ラムダ式やvarの導入など
Oracleを信じようよ、絶対正義だよ
2018/04/13(金) 09:13:39.38ID:jXj1f4DQ
でもjavaの方が好きだな
スクリプト言語?は読みづらい
型もはっきりしないし、なんか戸惑う…
2018/04/13(金) 09:20:24.67ID:UFohjy2n
varの利点がわからん
業務ではまず使われることはないだろうがこんなもん宣言できるようにしたが
オラクルなら早く潰れて欲しい
2018/04/13(金) 09:25:40.80ID:sjD16K6P
変数を呼ぶ時、毎回$を書かなきゃいけないのが面倒
エディタにもよるのかな
2018/04/13(金) 16:19:39.02ID:fORiWt/O
>>306
型推論は当然の流れ
2018/04/13(金) 18:13:01.87ID:eqYRUU6q
私が初心者だからかもだが、
変数の型を追えないし、受け渡しもよくわからん。
内部でうまい事やってくれるから問題ないのかな
310デフォルトの名無しさん
垢版 |
2018/04/13(金) 18:40:27.55ID:a23WoZFS
最初が数値からの文字列だったらvarだとエラーが起きるからあんまり使わないな入力が決められてるなら問題はないが
2018/04/13(金) 20:09:20.67ID:EJiIDMs+
>>309
それでもプログラムが書けるってのが、いいことなのか悪いことなのか、議論が分かれそう。
2018/04/13(金) 20:24:45.80ID:Td/Xro+m
>>302
COBOLに未来はないが遺産と仕事はあるだろ
2018/04/14(土) 07:56:47.32ID:Q2BabL7H
JavaスレでちょくちょくJavaアンチの池沼が沸くのはなんなんだろうね
2018/04/14(土) 08:08:16.25ID:INXCDTcL
ちょくちょく沸くってわかっててそれに反応するバカもなんなんだろうね
315デフォルトの名無しさん
垢版 |
2018/04/14(土) 11:06:13.83ID:Z+3xnQ4k
デザインパターンをインターフェースから説明した良心的なブログ
途中で息切れしてるみたい??

https://blogs.yahoo.co.jp/kamyu_2010/35417803.html
2018/04/14(土) 14:05:27.42ID:Q2BabL7H
Java理解できない池沼に逆恨みされてんだろうね
2018/04/14(土) 15:40:05.64ID:Q2BabL7H
ブログみたけどどこがわかりやすいんだ・・・
あまりに説明が下手すぎて逆に初心者が混乱するレベル
アップキャストして処理の汎用性高めるだけの説明に無駄な記述が多すぎるね
2018/04/14(土) 16:33:45.05ID:0zSMjveg
しかもマルチなw
2018/04/14(土) 20:47:22.46ID:MKEedPyW
全くプログラミングしたことないからプログラミングの教科書的なの欲しいんだけどどれ読みながらすればいい?
320デフォルトの名無しさん
垢版 |
2018/04/14(土) 20:56:29.75ID:UvmKC3X6
スッキリのやつが来るぞw
2018/04/14(土) 21:32:19.51ID:eOahq2OZ
>>319
矢沢久雄のなぜシリーズあたり読んでおけば?
2018/04/15(日) 01:48:09.82ID:61a6gR8D
>>320
寝た子を起こしてはいけない
2018/04/15(日) 02:27:17.44ID:n83rdrTz
町の図書館で借りられる入門書を片っ端から試せばいいと思う
それでいい感じの本を見つけたら買う
2018/04/15(日) 05:03:51.42ID:Gtl7AcUt
Javaerならフォローしとけって人とか見とけってwebサイトとかありますか?
2018/04/15(日) 05:52:43.84ID:VXOW+WoG
もう、言いつくされてるけど、
まずこの本で、オブジェクト指向を学ぶのが、プログラミングの基礎

スッキリわかる Java入門 第2版、2014
2018/04/15(日) 06:04:40.36ID:J3KzqagF
>2014

ここ注目
327デフォルトの名無しさん
垢版 |
2018/04/15(日) 11:05:21.57ID:h3uMoiWJ
デザインパターンをインターフェースから説明した良心的なブログ

https://blogs.yahoo.co.jp/kamyu_2010/35417803.html
2018/04/15(日) 11:33:01.92ID:hVyCV0Mc
テスト
2018/04/15(日) 12:11:12.36ID:VXOW+WoG
Java8 以降のstream などは、Java8 の本で勉強すればよい。
長澤 太郎の、Kotlin 本でも良いし

オブジェクト指向の基本は「スッキリわかる Java入門」
2018/04/15(日) 12:18:11.32ID:Eou34W5M
319です
ご教示ありがとうございます。今、visual studio使ってサイトを見ながらやっている
のですが矢沢久雄のなぜシリーズは対応してますか?
331デフォルトの名無しさん
垢版 |
2018/04/15(日) 23:57:57.67ID:VatZ3kXK
visual studioってjava書けるの?
2018/04/16(月) 01:13:04.02ID:wPyRbb+i
IDEとして開発支援が受けられるかは知らんけど、単なるテキストエディタとしては書けるんじゃね?
2018/04/16(月) 05:24:55.36ID:OCfZq+43
visual studio ワロタw
2018/04/16(月) 08:31:51.18ID:7XdbFr6Z
自分が使いやすいエディタ使ってやればいい
2018/04/16(月) 13:27:54.40ID:5rhXD+Wa
サブクラスでオーバーライドしたメソッドでスーパークラスのメソッドを実行することを強制するにはどうしたらいいですか?
2018/04/16(月) 13:31:20.46ID:5rhXD+Wa
すまん自己解決
2018/04/16(月) 13:34:46.66ID:5rhXD+Wa
やっぱしてないや
2018/04/16(月) 13:46:58.30ID:OCfZq+43
強制っていつ実行したいんだよ・・
2018/04/16(月) 13:58:47.61ID:5rhXD+Wa
いつっていうと、そのサブクラスのメソッドを実行した最初にです
そういうことではない?
2018/04/16(月) 14:11:01.94ID:OCfZq+43
サブクラスのインスタンスを作成したときにって言いたいのか?
それともインスタンス作って何かサブクラスのメソッド実行したあと1回だけ
親クラスのメソッドを実行したいのかそれとも
サブクラスのメソッド実行するたびに親クラスのメソッドを実行したいのか
ちゃんと書かないとさぁ
2018/04/16(月) 14:19:17.49ID:5rhXD+Wa
>>340
説明不足ですまん
その3つ目のサブクラスのメソッドを実行するたびに親クラスのメソッドを実行したいです
2018/04/16(月) 14:36:57.30ID:OCfZq+43
単純にメソッド呼ぶ前に親クラスのメソッド呼べばいいだけやん・・
君は目的の具体性がなさすぎなんだよね
2018/04/16(月) 15:56:23.84ID:OCfZq+43
それか抽象クラス作ってテンプレメソッドパティーンみたいな感じにするかだな
必ず実行したい親クラスの具象メソッド内にサブクラス用の
抽象メソッドを呼び出しておいて、この具象メソッドだけを実行するようにすれば
必然的にお前のやりたいことと同じになるだろう
2018/04/16(月) 18:19:12.08ID:5rhXD+Wa
なるほど理解しましたありがとうございます!
2018/04/18(水) 00:49:06.79ID:V/uZYmoA
フォルダを階層構造にするのが複雑なので、統合開発環境を使わず
コマンドプロンプトでパッケージ化する手法はマスターしなくても
いいでしょうか?
2018/04/18(水) 02:15:03.86ID:q6pXgTbr
すみません、長くなるので2つに分けます
public class CopiedMethod {
static int a = 10;
static int b = 20;

public static void main (String[] args) {
printOneValue();
printThreeValues();
}
private static void printOneValue() {
int maximum = a;
if (b > a) {
maximum = b;
}
System.out.println(" 最大値;" + maximum);
}
private static void printThreeValues() {
int maximum = a;
if (b > a) {
maximum = b;
}
int minimum = a;
if (b < a) {
minimum = b;
}
int average = (a + b) / 2;
System.out.println("最大値:" + maximum);
System.out.println("[最小値:" + minimum);
System.out.println("[平均値:" + average);
}
}
というコードについてなのですが、
2018/04/18(水) 02:40:02.45ID:q6pXgTbr
すみません、>>346は長いコードになってしまったので、こちらのコードでお願いします;

public class OneMethod {
static int a = 10;
static int b = 20;

public static void main (String[] args) {
printThreeValues(); /////A
}
private static void printThreeValues() { /////B
int maximum = a;
if (b > a) {//[22]
maximum = b;
}
int minimum = a;
if (b < a) {//[25]
minimum = b;
}
int average = (a + b) / 2;
System.out.println("[28] 最大値:" + maximum); /////C
System.out.println("[29] 最小値:" + minimum); /////D
System.out.println("[30] 平均値:" + average); /////E
}
}

実行結果↓
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15

こちらについてなのですが・・・
2018/04/18(水) 02:53:29.54ID:q6pXgTbr
1
実行結果は、A(/////A)の部分から出力されているのでしょうか?
もしそうなら、C、D、Eの部分も続けて読み込まれて、実行結果は、
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
[27] 最大値:20
[28] 最小値:10
[29] 平均値:15
と2回同じのが繰り返される実行結果表示にならないのは何故でしょうか?
mainメソッドの中にBのprintThreeValuesメソッドがあるのならわかるのですが、
コードを見た感じ2つは平等(?)な立場の位置に見えまして・・・

2
こちらのコードを上から順番に読みますと、
最初にAの部分が目に入り、ここだけですとこのメソッドが何なのかわからず、
続けてBからEまで読んで初めて理解できると思うのですが、
先にB-Eまでを表記して、その後にmainメソッドを書いた方が読みやすい気がするのですが、
それではなぜ駄目なのでしょうか?

質問が伝わらなかったらすみません
宜しくお願いします
2018/04/18(水) 03:08:54.99ID:1MQV5vND
>>348
1行ずつ命令を実行していくという考えが間違え
このプログラムはOneMethodというものを定義しているだけ

ただし指定したクラスのmainメソッドが呼ばれるという特例ルールがあるだけ
2018/04/18(水) 12:44:11.63ID:Rjtb0hvw
>>349
そんな説明でなにかが伝わるとは思えないんだけど
どんだけ説明ヘタクソなんだよ
2018/04/18(水) 13:37:38.62ID:kBhJS0dX
>>350
嫉妬か?
2018/04/18(水) 14:05:49.15ID:AEcEsWpP
まぁ言いたいことはわかるけど ID:q6pXgTbr レベルの奴に返す回答ではないね
基本的このスレは俺を除いて質問者も回答者もほぼ全員が誇張なしに馬鹿だと思う
353デフォルトの名無しさん
垢版 |
2018/04/18(水) 14:09:44.34ID:gg2GabAw
>>348
コンピュータは人間が文章を読む時と同じように上から下にプログラムを読んで実行して行くが、
その文章の途中に「○○を読め」と書いてあり、それが出てきたら馬鹿正直にそちらを読んで実行し、
それが終わったら元に戻って続きを読む。

そんな感じで実行していくので文章の見た目の上下とは無関係に上に行ったり下に行ったりする。
同然文章の終わりが一番下になっているとは限らず、真ん中で終わることもある。

見た目に惑わされてはならない。
2018/04/18(水) 15:02:23.36ID:q6pXgTbr
>>349
>>353
ありがとうございます
そういう仕組みなのですね

どこを見れば
「ここのメソッドはあちらの方で処理されるからここでは処理されない」
といった判断ができるのでしょうか?

処理されるのはMain関数の中身だけ、といった訳ではないのですよね
2018/04/18(水) 15:29:51.02ID:yobQufC7
実行されるのは main 関数の中身だけだよ
2018/04/18(水) 15:39:39.32ID:EU/tZBmZ
>>354
関数が実行される順序は
最初はmainで後の法則は>>353
ファイルの先頭からではなくmainの先頭から

mainのAでprintThreeValuesに入ってBへ
そこから1行ずつ進みC, D, Eの順に通り
printThreeValuesの}に到達したらAの次の行へ
mainの}に到達したので終わり
2018/04/18(水) 16:04:40.45ID:AEcEsWpP
お前らって断片的な回答ばっかで質問者が求めてる根本的な回答を全くできないよね
2018/04/18(水) 16:24:51.29ID:q6pXgTbr
>>355
>>356
実行されるのはmainのみなのですね;
知りませんでした・・・

今回のコードはmain以外のメソッドが1つしかありませんが
これが数百、数千のコードになっても
結局はmain関数の{から}までしか実行されないということでしょうか?
359デフォルトの名無しさん
垢版 |
2018/04/18(水) 17:57:52.91ID:HOJmEonZ
>>358
そう。しかし普通はmainの中から他のメソッドを使うように書いてあるのでそこでそちらに処理が移って終わったら帰ってくるという形式になる。
2018/04/18(水) 19:34:08.75ID:1MQV5vND
こうやってひとつの関数に全部書いた方がわかりやすいって奴が育っていくんだな
2018/04/18(水) 20:15:05.19ID:La1cFYoE
>>358
mainは書かずにJUnitのようなテストランナーで実行した方がいい
その方がクラスをコンポーネントとして捉える感覚が身に付く
mainを基準にすると処理を連続した手続きとして捉える考え方が染みついてしまう
仕事でプログラミングする場合もmainを書くことは殆どない
2018/04/18(水) 20:40:56.23ID:AEcEsWpP
お前らのアドバイスって段階がおかしいんだよね
初心者に対してそういうのってアドバイスになってないどころか悪手中の悪手なんだわ
物事には学習する順序ってもんがある
総じてレベルが低い
363デフォルトの名無しさん
垢版 |
2018/04/18(水) 20:47:37.52ID:DGBedneT
そう?
364デフォルトの名無しさん
垢版 |
2018/04/18(水) 20:48:23.55ID:DGBedneT
>>362
お手本を見せてくれ。
2018/04/18(水) 20:54:21.02ID:EvWKjHxH
ID:AEcEsWpP先生が、レベルの高い返事の見本を書いてくれればいいよ
そしたらテンプレにするから
366デフォルトの名無しさん
垢版 |
2018/04/18(水) 21:08:08.83ID:UGx4xvOk
+   +
  ∧_∧  +
 (0゜・∀・)   ワクワクテカテカ
 (0゜∪ ∪ +        
 と__)__) +
2018/04/18(水) 21:31:40.64ID:mEUoKwFS
>>358
main も printThreeValues も単に定義してるだけでしょ?
定義してるだけなので、呼び出されない限り実行されない。
だが main は呼び出される。これが main の特殊性。
main が呼び出されたので、その記述に従って printThreeValues が呼び出される。
main の中身がカラなら printThreeValues は呼ばれない。
2018/04/19(木) 12:38:13.50ID:zY/x8X7C
継承とかでもここ呼んだらsuper通ってこっち行って…とか言ってるやついるよな
定義に従って完成されたものがメモリ上にロードされてるイメージだろ

んーちょうどいい言葉ではないな
369345
垢版 |
2018/04/20(金) 00:15:24.50ID:KttnuZKi
よろしければ、俺の質問にも答えてもらえると嬉しいです
>>345です
2018/04/20(金) 00:49:16.60ID:K+iBTFnO
言ってることが意味不明すぎて1_も理解できないのでスルー
371345
垢版 |
2018/04/20(金) 01:59:16.14ID:KttnuZKi
すいませんでした
JDKでpackageを使う方法は、出来なくても仕事とかで問題無いでしょうか?
2018/04/20(金) 02:29:27.65ID:8BwjvaFI
>>371
パッケージ使わないと名前が衝突することがあるので無理
仕事なら一人でやるわけでないし尚更
場合によっては知らない人が作ったパッケージをいじることも

CLASSPATHが理解できないのか
373345
垢版 |
2018/04/20(金) 02:37:41.72ID:KttnuZKi
>>372
レスありがとうございます

フォルダを階層構造にするのが煩雑で嫌なんです
(一般に、)統合開発環境を用いたpackage化が出来る、というだけでは駄目ですか?
2018/04/20(金) 13:10:09.62ID:8BwjvaFI
>>373
ファイルが1000個とか煩雑過ぎるだろ
2018/04/20(金) 15:16:16.19ID:bJgJ2nSn
多分話が噛み合ってない
2018/04/20(金) 15:59:16.02ID:5NB8H1Vn
>>373
packageの構成も含めて設計だから、できるようにならないとね
2018/04/20(金) 16:30:35.14ID:bJgJ2nSn
手作りする意味は皆無だけどな
2018/04/20(金) 21:10:35.11ID:qDS4Ifrc
Kotlin は同じディレクトリに全ソースぶち込んでパッケージ違ってても問題ないんだよね。
やっぱ不便だから改良したってことなんだろうな。
2018/04/20(金) 23:24:08.50ID:K+iBTFnO
JavaアンチもそうだけどJavaスレでいつもkotlinガーkotlinガーって言ってる奴って何なんだろうね
2018/04/20(金) 23:57:34.11ID:NIkAJy/D
俺、出来るよ。

あピってるんだよw
2018/04/21(土) 00:31:53.95ID:Oxipuy33
>>379
布教活動
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況