Java入門・初心者質問スレ(ワッチョイなし) Part.8

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2018/06/09(土) 23:33:01.33ID:OYOdDBN7
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.7
http://mevius.5ch.net/test/read.cgi/tech/1515549964/

0394デフォルトの名無しさん2023/06/03(土) 19:17:12.08ID:b989Y/JG
JAVAって複雑だよねー
JAVAって本当に奥の深いプログラミング言語だわ
JAVAの素晴らしさがわからない阿呆がかわいそうだよね

0395デフォルトの名無しさん2023/06/03(土) 23:31:07.29ID:b989Y/JG
>>393
JAVAの素晴らしさを理解できないサル脳

0396デフォルトの名無しさん2023/06/04(日) 01:40:31.41ID:70umuYY5
なんだこの馬鹿w必死に俺を煽ってたのかw
気づいてもらえないからまたレスつけたんだろうなw
さすが算数もできないバカw

0397デフォルトの名無しさん2023/06/04(日) 04:59:14.24ID:c/xq8u1e
は~い、お猿さんが釣れました~

0398デフォルトの名無しさん2023/06/04(日) 06:04:15.65ID:70umuYY5
バカが自分のバカさに気づいたから恥ずかしすぎて釣りってことにして逃げたんだろうなぁ(哀れみw
コイツこの前のチンパン学生だろうなw
ホント馬鹿の思考って死ぬほどわかりやすすぎてビックリするわ

0399デフォルトの名無しさん2023/06/04(日) 06:15:18.38ID:c/xq8u1e
>>398
ぷぷぷっ(哀れみw

0400デフォルトの名無しさん2023/06/04(日) 06:51:03.41ID:c/xq8u1e
>>398
恥ずかしすぎてもう出て来れないなw

0401デフォルトの名無しさん2023/06/04(日) 07:26:11.88ID:70umuYY5
このチンパンガチで小中学生ぐらいじゃねーか?w
小中学生が5ch見るとは思えんねーんけど
さすがにこのレベルの精神年齢幼児は見たことねーわ
延々とブーメラン投げ続ける幼さはどう見ても厨房以下だし
これで大学生以上とかだったら親が悲惨すぎるだろw

0402デフォルトの名無しさん2023/06/04(日) 08:23:10.88ID:c/xq8u1e
>>401
子供部屋おじさん大丈夫?

0403デフォルトの名無しさん2023/06/04(日) 09:31:59.52ID:c/xq8u1e
>>401
親が死んでも遺体を放置しちゃダメだぞ

0404デフォルトの名無しさん2023/06/04(日) 13:12:16.82ID:ReNIe+uP
>>401
第三者として言わせてもらうとお前も同じだぞ

0405デフォルトの名無しさん2023/06/04(日) 17:35:14.87ID:T1LmkLX/
つまんねーことばっか書いてんじゃねえよカスw
理論的に書けねーんならだまってろカスw
でも悔しいから書いちゃうんよね?ね?
すっごい顔真っ赤にして書いちゃうんよねバーカ
よく読んでからレスしろひとまずは馬鹿者

0406デフォルトの名無しさん2023/06/04(日) 23:03:01.17ID:m1JLB1wn
Kotlin もよろしく

0407デフォルトの名無しさん2023/06/06(火) 16:43:01.52ID:W7j1snNT
+=a と =+a を間違えてしまうのですがどうすればいいですか?
また
-=a と =-a も間違いやすくて困ります

間違うと結構致命的な欠陥が起きるので
間違わない方法を教えて下さい

0408デフォルトの名無しさん2023/06/06(火) 17:07:41.74ID:FRP+wj7b
間違えない方法を考えるよりも
たとえ間違ったとしても致命的な問題にはならないようにする方法を考えたほうがいいよ
これはあらゆる安全対策に共通する考え方

0409デフォルトの名無しさん2023/06/06(火) 17:32:34.99ID:bPa/UKtc
= +a と見ればaにプラスの記号がついているだけだなとわかる
= -a も同様
こういう風に覚えれば混乱することはない

0410デフォルトの名無しさん2023/06/06(火) 19:55:38.56ID:B6OKgMuL
そのうち慣れるよ

0411デフォルトの名無しさん2023/06/07(水) 01:19:20.64ID:5P0yt83I
なるほど+-でもなかなか深いですね
やっぱり基本は算数だということは痛感します

0412デフォルトの名無しさん2023/06/08(木) 13:43:02.88ID:5YpbVgif
oauthとサーブレットって同じものですか?どう違いますか?

0413デフォルトの名無しさん2023/06/08(木) 16:04:52.14ID:/D7k/eOt
OAuthは認証の仕組みJavaとは関係ない
サーブレットはWebサーバで動作するJavaのプログラム

0414デフォルトの名無しさん2023/06/08(木) 20:16:59.15ID:QfsUSLCb
>>413
ヤバい質問に真面目に答えてて偉い

0415デフォルトの名無しさん2023/06/09(金) 02:24:48.58ID:wa2uQ3H6
>>413
Javaのセッションスコープに入ってるログイン情報を使って他のページに遷移するのとは違うんですね。㌧

0416デフォルトの名無しさん2023/06/11(日) 18:11:14.66ID:UJ5Xglw5
}の位置間違えると本等に大変でつね

0417デフォルトの名無しさん2023/07/08(土) 08:25:58.69ID:4n78TG20
初歩の初歩的な質問で恐縮なのですが
test/Hoge.java内でpackage test;と書くと
The declared package "test" does not match the expected package(宣言されたパッケージ "test "が期待されたパッケージと一致しません。)となり。

test/test/Hoge.java内でpackage test;と書くと普通に実行できるのですが何が違うんでしょうか?

0418デフォルトの名無しさん2023/07/08(土) 09:11:08.45ID:uBfmbO8B
なにかIDE的なものを使ってない?
それで、例えばパッケージ名がmypkgの時に、
PROJECT_HOME/src/mypkg/Hoge.java
PROJECT_HOME/test/mypkg/HogeTest.java (単体テスト用)
の様にファイルを配置するルールになってるんじゃない?

0419デフォルトの名無しさん2023/07/08(土) 11:13:05.01ID:4n78TG20
VSCODEを使用しています(最初に書いておくべきでしたm(__)m)。
PROJECT(VSCODEで開いてる)/
Main.java
pkg/
Sub.java
という構成で練習していて
Sub.javaで package pkg; と書くのは問題ないのですが、
Main.javaで package PROJECT; と書くと前述のエラーになります。

まだjavaプロジェクトのフォルダ構成の知識がないので、ご指摘のようにVSCodeで何かのルールを設定しているというより、私が変な勘違いをしているのが原因だと思います。
改めてお聞きしたいのですが
1.packageはプロジェクトホームの直下に作ったパッケージ用ディレクトリ内のjavaファイルで宣言するものなのでしょうか?
2.packageにプロジェクトディレクトリを宣言するのは根本的におかしいことなのでしょうか?

0420デフォルトの名無しさん2023/07/08(土) 11:19:24.15ID:4n78TG20
すみませんスペースが消えて見にくいので再投稿します;;
PROJECT(VSCODEで開いてる)/
├---Main.java
└---pkg/Sub.java

0421デフォルトの名無しさん2023/07/08(土) 13:15:46.81ID:uBfmbO8B
なんとなく状況は分かりました
まず"2."に対しては、プロジェクト的なディレクトリ(VSCodeだとworkspace folder)の名前をpackage名には普通用いません

次に、Javaのpackageをもう少し理解しましょう
Javaのpackageはsource pathのルート(起点)からの相対で表現されます
例えばMain.javaのpackageが
package jp.example.hoge.myapp;
である場合、
MyAppProj/src/jp/example/hoge/myapp/Main.java
のように配置します(srcディレクトリを作るかは流儀によりますが、ここでは含めるスタイルで書きます)
この例の場合MyAppProjがC:\Users\hoge\Documents\MyAppProjにあるとすると、source pathはC:\Users\hoge\Documents\MyAppProj\srcです
ここで
MyAppProj/src/Hoge.java
のように配置した場合、Hoge.javaにはpackageは指定しません(指定できません)
これをdefault packageと呼びpackage名を持たない特別な名前空間です
(なおdefault packageは通常、簡単なテストや短い書捨てプログラムにのみ用い、実用的なプログラム開発では使用しません)

あなたの場合、PROJECT/pkg/Sub.javaに
package pkg;
と記述するのは正しいですが、
PROJECT/Main.javaは配置場所からdefault packageに属するのでpackage指定は必要ありません(出来ません)

0422デフォルトの名無しさん2023/07/08(土) 13:24:35.77ID:uBfmbO8B
書き足し

あなたの場合、"SOME_WHERE/PROJECT"がsource pathとして扱われているので、PROJECT/pkg/Sub.javaに
package pkg;
と記述するのは正しいですが、
PROJECT/Main.javaは配置場所からdefault packageに属するのでpackage指定は必要ありません(指定出来ません)

0423デフォルトの名無しさん2023/07/08(土) 14:00:31.84ID:4n78TG20
ありがとうございます。やはりパッケージ関連の知識と認識がずれていました。
使用していた教材のパッケージに関する説明が浅すぎて誤解を重ねていたようです。
ご指摘を受けて改めて調べたところVSCodeのsetting.jsonで"java.project.sourcePaths"などを設定できることがわかりました(というかプロジェクトのひな形を作れた)。
また、学習を始めたばかりでディレクトリ構成に対する意識がまったくなかったので新しい課題も見つかってうれしいです。
次はもう少し専門的な質問が出来るように励みますm(__)mありがとうございました!!

0424デフォルトの名無しさん2023/07/08(土) 19:05:48.95ID:o34+FQNw
プログラム書いてるうちに一つのファイルで4000行メソッド数150くらいになったんだけどこれってデカすぎ?

0425デフォルトの名無しさん2023/07/08(土) 19:37:24.42ID:/iPIpjid
>>424
1メソッド平均27行ならそんなにおかしくはないんじゃないの
役割を整理してもう少しクラス(ファイル)を分けたほうがいい気もするけど
内容によっては1クラスに150メソッドになることもあるだろうから何とも言えん

0426デフォルトの名無しさん2023/07/08(土) 21:41:00.88ID:eVw4jtGK
デカすぎるよ
デカすぎる不便をジワジワ感じ取ってほしい
デカすぎないようにいつどうしたらよかったか
それを将来考えることになると思う

ただし、クラスなんてサイズを理由に分割するもんじゃないし
クラス名とクラスの役割の輪郭がハッキリするように
再利用性の高いクラスをつくっていけるように
そんなふうに努力した結果、サイズもちっちゃく収まってくるもんだと思ってる

0427デフォルトの名無しさん2023/07/08(土) 22:17:52.87ID:dF7KJNrB
publicなメソッド数やオーバーロードの数なんかによるな
一般的なアプリケーションプログラムのクラスなら分割考える

0428デフォルトの名無しさん2023/07/09(日) 00:29:21.47ID:LTD59+Eo
びっくりした、メソッド4000かと思ったw

0429デフォルトの名無しさん2023/07/09(日) 00:34:38.78ID:6w1xzOfB
Java はフォルダ構成とか、クソほど難しい

Ruby なんか簡単に動く。
Ruby on Rails でも、フレームワークでプロジェクトのフォルダ構成は決まっているし、
全員が同じ構成を使うから、分かりやすい

0430デフォルトの名無しさん2023/07/09(日) 03:58:45.66ID:vMstJd5P
>>424
なんでそんなにでかくなった?なんか設計おかしくないか?

0431デフォルトの名無しさん2023/07/09(日) 16:18:50.01ID:mN5Eud6o
java.util.Collectionsが
コメント入れて約5600行
コメント抜きで約3500行
インナークラスが約50個
メソッド数が約400(インナークラスのメソッド・コンストラクタも含む、300以上は1行のみ、Unsupported例外を投げるやつも含む)

こういう広く使われるライブラリで
管理上どうしても1ファイルに収めておきたい特殊な事情がある場合のみ
辛うじて許容されるレベルだと思う

0432デフォルトの名無しさん2023/07/09(日) 20:02:57.62ID:gl6FDMI+
jQuery の非圧縮版は1万行で、30KB もある

0433デフォルトの名無しさん2023/07/09(日) 20:09:05.80ID:BekWhEcC
自クラス内なら aMethod(); で済むところ

var otherClass = new OtherClass();
otherClass.aMethod();

めんどくさい。

0434デフォルトの名無しさん2023/08/01(火) 21:46:17.80ID:kDDxMcsN
OutputStreamで謎の文字化けが突然始まり悩んでいたら
UTF-16にしてみたら解決した
何やねんUTF-16ってUTF-8ってもう使えんのか
時代の流れについていけへんわ

0435デフォルトの名無しさん2023/08/01(火) 21:56:56.35ID:/hGhi9yu
16が最新なの?

0436デフォルトの名無しさん2023/08/01(火) 23:05:05.44ID:x1qf9Kxk
令和最新版はUTF-23かな

0437デフォルトの名無しさん2023/08/02(水) 00:15:10.73ID:f2MvDuar
そんなにあるんだ

0438デフォルトの名無しさん2023/08/02(水) 14:51:21.97ID:/XzVRKSs
超古いSDKを使っているせいなのでしょうか?
誤作動します
どうすればいいですか?

0439デフォルトの名無しさん2023/08/02(水) 23:18:22.17ID:OZDRXvgd
Javascriptを学びたいと思います。オンラインで学べますか。どれくらい時間がかかりますか。

0440デフォルトの名無しさん2023/08/03(木) 03:52:33.89ID:/xW45k0z
>>434
Writer使って出力してないの?

0441デフォルトの名無しさん2023/08/03(木) 03:53:23.12ID:/xW45k0z
>>439
それはJavaではない。スレチ。

0442デフォルトの名無しさん2023/08/03(木) 03:54:28.73ID:/xW45k0z
>>438
新しいJDK使えば良いじゃん。

0443デフォルトの名無しさん2023/08/05(土) 16:10:51.46ID:5UuUJr5V
>>441
ありがとうございます。他で尋ねてみます。

0444デフォルトの名無しさん2023/08/18(金) 12:13:46.79ID:Wz69oL2S
εε= ( ~ε~ )y-°°°

■ このスレッドは過去ログ倉庫に格納されています