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

■ このスレッドは過去ログ倉庫に格納されています
2020/04/01(水) 15:09:15.95ID:9COIb57q0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.9
https://mevius.5ch.net/test/read.cgi/tech/1552143555/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2020/09/01(火) 15:56:49.36ID:cIJrFHrq0
Javaが拡張を積極的にやってるのはわかる
でもパターンマッチングひとつ実現するのにJava20くらいまで待たされそうなペースじゃん
null安全がやって来るのはJava40くらいか?
みんな老人になってしまったとさ
めでたしめでたし
570デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 16:57:58.81ID:PZXbhIm50
僕はnull好きだぞ、nullは友達だよ
2020/09/01(火) 18:00:56.75ID:SHJ3oQib0
>>569
まあそうだけどさ3年で6進むからJava 20なんてすぐだよ
Java 6からJava 7まで5年掛かってたというのに
572デフォルトの名無しさん (ワッチョイ 7901-Jo2y)
垢版 |
2020/09/01(火) 18:20:30.29ID:Z9W01AEm0
Genericsの型消去のせいで
new T()できないんだね
2020/09/01(火) 19:31:43.66ID:wOMDGK4nM
ここまで進化が遅いと既存資産だけJavaで新規は別言語で、ってやったほうがいい
.NET 5からJavaクラス呼べるようになるから、もうそっちでいいや
2020/09/01(火) 19:36:45.49ID:+1UaEkn20
Factoryクラスをわたせばいいだろう?
575デフォルトの名無しさん (ワッチョイ 7901-Jo2y)
垢版 |
2020/09/01(火) 19:39:29.54ID:Z9W01AEm0
Javaから別の言語にトランスパイルして移行
とか現実的に可能だろうか
2020/09/01(火) 19:39:42.22ID:+1UaEkn20
商用Javaは8まで
今後は進化のブランチが切られるだろう
2020/09/01(火) 19:47:46.92ID:iM2Va31TM
>>575
参照してるライブラリも全部ソースあるならあるいは
578デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/09/01(火) 19:49:42.84ID:PZXbhIm50
>>573
マジで、ドトネトすごい
2020/09/01(火) 20:03:56.01ID:iM2Va31TM
>>578
csprojにjarのパス書くだけで使えるってさ
580デフォルトの名無しさん (ワッチョイ 8602-vr3K)
垢版 |
2020/09/01(火) 23:58:08.93ID:eZGqCDxn0
有料で配信してる動画を保存するスクリプト作るのってむずかしいです?
581デフォルトの名無しさん (ワッチョイ 5fad-XrX+)
垢版 |
2020/09/02(水) 02:37:45.44ID:R9sLvDbu0
Kotlin もよろしく
582デフォルトの名無しさん (ワッチョイ 7f63-aZLl)
垢版 |
2020/09/02(水) 08:41:21.79ID:yy35G5fq0
>>560
kotlinバカは死んでいいよ。
Javaに出張ってくんなカス。
583デフォルトの名無しさん (ワッチョイ 0701-P8XZ)
垢版 |
2020/09/02(水) 19:01:19.84ID:9/rkp9iy0
Java初心者質問スレでこぞってJavaこき下ろしててわろた
584デフォルトの名無しさん (ワッチョイ bf01-YWaO)
垢版 |
2020/09/03(木) 10:58:06.77ID:9qPM9lLi0
MET10-J. compareTo() メソッドを実装する場合メソッドの一般契約に従う
https://www.jpcert.or.jp/m/java-rules/met10-j.html

こういうのがあるんだーねー
たしかに比較するときにequals使えば良いのかcompareTo使えば良いのか
迷うようなオブジェクトは嫌だわー
2020/09/04(金) 12:19:02.23ID:n9bltVZHM
C#でこういうことができるんだけどJavaで出来る?

void F(A a) { WriteLine("A"); }
void F(B b) { WriteLine("B"); }
void F(object o) { throw ArgumentException("TypeMissMatch"); }

void InvokeF(object o) { F(o as dynamic); }

InvokeF(new A()); // F(A)が呼ばれる
InvokeF(new B()); // F(B)が呼ばれる

一個一個instanceofで分岐しないとだめかな
2020/09/05(土) 02:00:02.55ID:7YdQk2H60
無理
2020/09/05(土) 02:46:07.99ID:9Silsq9N0
初めまして。

割り込んですみません。突然なんですが、掲示板を利用している者が
アク禁で規制が掛けられた場合、自分で解く方法はないでしょうか?。
2020/09/05(土) 03:15:30.18ID:1i4enb9n0
>>585
https://paiza.io/projects/Kznlt6QiTmJCZHErPfcBtA
2020/09/05(土) 09:34:06.70ID:0lqzi+R60
>>587
その質問とJavaの関係を詳しく
2020/09/07(月) 03:18:23.08ID:XdFDRYmV0
CとOCamlとHaskellを少しずつイジってJavaに来たけど妙に難しい
出てくる用語を調べて…サンプルコードと見比べながら理解して…
2020/09/07(月) 09:31:01.16ID:DSNLMJBI0
知識はそうやって肉付けするんや
2020/09/08(火) 00:12:38.18ID:rmjeK4rZ0
誤ってOracle jdkをダウンロードしてまだインストールしていないのですが、これは有償になるのでしょうか?
2020/09/08(火) 00:22:56.77ID:5OkAYp9w0
Oracle JDKも開発・検証用途なら無償で使えるので
インストール=有料とはならない

本番環境で業務運用するときはライセンス契約が必要
2020/09/08(火) 00:28:16.52ID:rmjeK4rZ0
なるほど…ホッとしました
ありがとうございました
2020/09/08(火) 11:16:07.71ID:16zRjsyPM
何でほっと出来るんだろうな。
自分でライセンス読まないやつはそのうち痛い目に合うぞ。
後で嘘だとわかってもOracleは知ったことでないから遠慮なく金取るよ。
2020/09/08(火) 12:52:12.70ID:czqs/X8sp
許諾される個人使用はもとより、インストールもしていない状況です
使うにしても個人の学習用でしかなかったのですが、万一ライセンスに抵触したらと不安になり、インストールせず削除しました
2020/09/08(火) 13:52:51.94ID:5OkAYp9w0
>>595
ビギナーを過度に脅すJavaおじさん
仕事もできなさそうですね
2020/09/08(火) 13:58:24.92ID:/bMSwYSJ0
仮に有料だとしても使う前に入力を求められるでしょ普通
599デフォルトの名無しさん (ワッチョイ bf01-YWaO)
垢版 |
2020/09/08(火) 14:07:14.61ID:r41CjiKh0
おじさんの90%はバイアスでできています
2020/09/08(火) 15:43:17.33ID:/zYkoffM0
経験といいなさい
2020/09/08(火) 21:15:52.22ID:16zRjsyPM
仕事できなさそうってセリフは大抵仕事できない奴が吐くよな。
602デフォルトの名無しさん (ワッチョイ bf01-YWaO)
垢版 |
2020/09/08(火) 21:21:02.03ID:r41CjiKh0
バイアスおじさんだ
2020/09/08(火) 21:40:35.84ID:/bMSwYSJ0
>>601
自己投影だからでは
604デフォルトの名無しさん (ワッチョイ 5fad-KyQf)
垢版 |
2020/09/08(火) 23:58:50.51ID:h7Ynbo6B0
これにしとけ
https://adoptopenjdk.net/
2020/09/11(金) 10:33:52.14ID:dBHDc2uPa
C#のLinqは拡張メソッドで自作のLinqメソッドを追加できますがJava stream apiで同じことをしたい場合はどうすればいいでしょうか
2020/09/11(金) 12:13:47.19ID:JdYmOH8YM
できません
OreOreStream.from(stream).oreOreFunc()
みたいに独自の型にラップするしかない
2020/09/11(金) 12:29:27.73ID:Dgb8b0D7M
>>606
それはちょっと面倒ですね…
不格好だけどこれで妥協します
var ss = myFunc(s);
ss = myFunc2(ss);
ss = myFunc3(ss);
608デフォルトの名無しさん (ワッチョイ eaad-oSME)
垢版 |
2020/09/11(金) 13:41:30.96ID:PBBl1CU30
Kotlin もよろしく
2020/09/11(金) 21:52:07.05ID:u75LGtz/0
>>605
拡張メソッドの考え方は異端だと思ったほうがいい。
スクリプト系だと当たり前のようにできる気もするけど、
OOPとしてはできないのが当たり前。
2020/09/12(土) 00:44:56.25ID:41TrRnRRM
スクリプトのはオブジェクトを変更して後からメソッドを生やすから異端だけど
C#のやってることは単にmethod(obj, p1, p2, ...)の糖衣構文でしかないから別に異端と言うほどのことでもない
2020/09/12(土) 16:41:21.16ID:ZBm+9Y+Jd
真面目にjavaってかプログラムに手をつけたばかりだけど、早く理解したい
612デフォルトの名無しさん (ワッチョイ a95f-Sism)
垢版 |
2020/09/12(土) 22:11:46.86ID:wMTnI8uy0
>>611
オブジェクト指向の話は理解できなくても、スルーして進めた方がいいよ。

強制的にコードがオブジェクト指向設計風になるのはJavaの欠点だから。
2020/09/13(日) 02:03:40.38ID:YF8YS6Ny0
オブジェクト指向を否定してまでjavaを使うシチュはあまりないと思う
ライブラリの都合で他の言語を選べない時はあるのかもしれないけど
2020/09/14(月) 16:20:21.11ID:Im1fOuuHa
Javaがコンパイルできず、困っております。
超基本のコードですがコンパイルすることができません…。

class Greeting {
public static void main(String[] args) {
System.out.println("Hello World");
}
}


これをコンパイルしようとすると

PS C:\Users\Owner\Desktop\jp> javac Greeting.java
Greeting.java:1: エラー: Greetingの書込み中にエラーが発生しました:
C:\Users\Owner\Desktop\jp\Greeting.class
class Greeting {
^
エラー1個

コマンド プロンプトで
\Users\Owner\Desktop\jp内にあることを確認し、
拡張子もjavaで保存してます。

ネットで見た他の人の質問では、javaのファイル場所の問題でしたが
場所を変えてもコンパイルできませんでした。

もし解決策分かれば教えてください!!
615デフォルトの名無しさん (ワッチョイ 9e01-bFss)
垢版 |
2020/09/14(月) 16:55:14.17ID:I0h6BMX60
>>614
Greeting.class
が存在していて読み取り専用になってるんじゃないかな
616デフォルトの名無しさん (ワッチョイ 6aa5-6XXA)
垢版 |
2020/09/14(月) 17:10:37.19ID:xV8mpaUY0
Cドライブ直下に
my_source_code
というフォルダを作って、あとはそこでやる
2020/09/17(木) 17:32:58.00ID:IOLH/98P0
適切なスレが判断出来ないので生きているここで質問させて下さい。
これからJavaを学ぶに当たりメモリ16G、i7 3770のPCでスペックは足りるでしょうか?
調べてもふわっとした解答やら幅があり判断しかねています。
そろそろ潮時とは思っているのですが、いざ新調する場合は別件でDTMと多少ゲームをするので、半端なものよりはある程度のスペックまで盛ろうと思っています。
宜しくお願いします。
2020/09/17(木) 17:47:55.79ID:N0wmq1hya
Javaの勉強なんて8Gあれば十分よ
2020/09/17(木) 18:11:31.58ID:jOMm6/5I0
Javaで〇〇を作りたい
じゃなくて、Java の勉強でしょ?
16G とか完全にオーバーキルだよ
2020/09/17(木) 19:03:04.37ID:RlKjeCDe0
オーバースペック?
621デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/17(木) 19:07:35.20ID:H8Ldt8Jg0
オーバーオール
2020/09/17(木) 19:16:04.70ID:jOMm6/5I0
ふざけた感覚で書いただけだ
日本語おじさんやめてくれ
2020/09/17(木) 19:25:07.99ID:NHfa1bvj0
DTM なら、CPU-i7 で保証期間は最大、メモリ最大(32, 64GB)まで積む

SSD は、256GB 以上。
128GB では、仮想OS では少なすぎる。
Windows・Linux 各50GB ずつで足りない

Windows 10 も、Docker が必要なので、プロ版にする。
プリインストールなら5千円ぐらいで、後で入れると高いかも
2020/09/17(木) 19:46:16.44ID:IOLH/98P0
沢山のレス有難う御座います。
現状でもプログラミングには足りるようなので、DTMに合わせたスペックでじっくり考えたいと思います。
流石にDTMには余裕が無くなってきたので早めに買いたいんですけどね(チラ裏
>>623
後半全く知識がない部分なのでメモさせて頂きました。

皆さん有難う御座いました。
2020/09/17(木) 20:18:40.05ID:RlKjeCDe0
日本語?
2020/09/17(木) 20:51:49.53ID:IOLH/98P0
>>625
暇みたいだから付き合うけど質問者の俺が理解したから問題ない
627デフォルトの名無しさん (アウアウクー MMcb-VvsD)
垢版 |
2020/09/18(金) 22:48:57.99ID:udr5OOFCM
パソコン初心者レベルの話だなw
2020/09/19(土) 16:37:58.10ID:BU6HDwC+a
614です。回答ありがとうございます。
classファイル、ファイル位置も含め色々とやってみましたが
javacできませんでした。。。

インストールからやり直してみたいと思います。
ありがとうございました!
2020/09/30(水) 16:51:29.76ID:EGMYSLZG0
Javaを始めたばかりです
別クラス内の配列(要素数が数千ほどの整数)を使いたいのですが、どのように使ったら良いでしょう

1.ゲッターで毎回配列の先頭アドレスを得て値を取り出す(コストが大きいですか?
2.ゲッターで得た配列の先頭アドレスを、配列を使うクラスのポインタにコピーして、値を取り出す
3.ゲッターに配列のインデックスを渡して、要素を得る(安全?

検索をかけてもよく分からないため、一般的な方法を教えて下さいm(_ _)m
2020/09/30(水) 17:53:59.30ID:WlSk5DgNa
配列そのままゲッターで渡したらあかんの?
2020/09/30(水) 18:09:08.65ID:zgB55E/r0
>>629
1の方法でも大丈夫ですよコストが高いということはないです
あなたが先頭のアドレスと書いている通りJavaの配列はヒープ上に存在するオブジェクトであり参照を介してアクセスされます
メソッドの戻り値を受け取って他の配列(これも参照)に代入しても数千の要素がコピーされることはありません
2020/09/30(水) 19:00:12.93ID:EGMYSLZG0
>>631
ありがとうございます!安心できました。
2020/09/30(水) 22:43:30.48ID:IjY0yzaga
微妙な大きさですね
もう少し大きければRDBお勧めになるのに
2020/10/01(木) 04:02:18.23ID:Z7yFiYSE0
いまや GB オーダーのメモリ積むのが普通だから
整数数千なんて桁がいくつかあがっても余裕
ADVゲームなんかでも、文章をメモリに全のせ余裕
メモリ関連のボトルネックは大体がグラフィクス
635デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:54:11.05ID:ChxT/cO/0
>>629
Javaを無理やりC言語風にしたいの?

getterメソッドがただの関数になっていて、オブジェクトに対して直接、参照するのは、Javaかどうかの話ではないぞ。
636デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 01:58:33.07ID:ChxT/cO/0
>>634
Javaの仕様、OSの仕様、ハードウェアの仕様で、数ギガバイトは大きな壁になる境界です。

すべてをメモリ上に読み込むのは、すぐに破綻する設計で初心者がよくやらかします。
637デフォルトの名無しさん (ワッチョイ f35f-67ZW)
垢版 |
2020/10/02(金) 02:02:10.42ID:ChxT/cO/0
>>632
参照渡しと値渡しはJava以前の話。
2020/10/02(金) 06:34:46.44ID:Whvs+WDZ0
CとJavaには値渡ししかない
C++とC#には値渡し・参照渡しの両方がある
2020/10/02(金) 07:21:03.95ID:pjFaN42j0
Javaをインストールしたパソコンでしか動かせないのに。そしてVM経由で遅いとのこと。
どうせWindowsしか使わないのに、多数存在するプログラム言語の中で、なぜJavaなのか。
2020/10/02(金) 07:25:02.55ID:pjFaN42j0
職場のパソコンでは、Javaインストールされてないし、この言語を使えてもそれを活用できないしな。
2020/10/02(金) 08:46:58.73ID:CXw5HWK1a
Javaはネットワーク前提の家電用だったから
2020/10/02(金) 10:43:43.01ID:ooD45Zz30
セレブエンジニアのフリーエンジニア・クリエイターの小松和貴

Javaの学習だけはやめとけ!その先にあるものは・・絶望
https://www.youtube.com/watch?v=bH3XIIzZxoI

Java をやる会社は、スマホ・インターネット禁止だから、本で調べるw
また、ブラック企業で過労死・いじめられるから、うつ病になって一生終わる
2020/10/02(金) 11:12:26.61ID:Whvs+WDZ0
>>639
Javaはインストールしなくても使えるよ
最近はアプリに小さなJavaランタイムがバンドルされてるからね
2020/10/02(金) 15:59:13.74ID:Yktgr9r30
おまいら、すまないが助けてほしいのだか。。。
LINE notifyを使って自分のライングループに数文字程度のメッセージをテストで送りたい。

今、android studioでコードくんでるのだがうまくいかない。。。。【java】
もう、1weekぐらい悩んでる。。。。
サンプル的なサイト、コードないだろうか?
javaやりだしてまもないから、なんかC#とちがうな。。
2020/10/02(金) 21:28:06.66ID:gnXlCB/RM
>>644
AndroidはjavaともちょとちがうからAndroidスレ行った方が良いかも
2020/10/02(金) 23:14:53.75ID:Yktgr9r30
>>645
androidスレがいいのか。。。。
了解、サンクス。
いってみる。。
2020/10/03(土) 00:21:52.93ID:xp+vOEo30
Android Studioを使ってAndroidアプリじゃないただのJavaのコードを書いてるのかと
2020/10/03(土) 00:27:10.02ID:oWt44Ygxd
こういう質問する人はそもそもcurlで叩いてすら無さそう……

curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" -F "message=test" https://notify-api.line.me/api/notify

をやってみてそれが上手く行ったらJavaに入れてみようぜ
649デフォルトの名無しさん (ワッチョイ b301-DXem)
垢版 |
2020/10/03(土) 16:19:00.16ID:5Ix2WENy0
>>638
えっ?
2020/10/03(土) 19:04:43.96ID:vTsN20CK0
>>636
ふーん、じゃあ具体的にどういうプログラムで、どういうOS、Java、ハードウェアの仕様で大きな壁になるの?
2020/10/03(土) 19:11:10.74ID:5eUUw9pOH
>>649
>>638 で正しいですよ
2020/10/03(土) 19:16:42.79ID:vTsN20CK0
あぁなんだ、GBオーダーのメインメモリを搭載してるPCが普通っていったのを、
この人は数ギガバイトレベルのメモリを使うのが大きな壁とかトンチンカンな事答えてるのか

ADVゲームの文章メモリ全部のせって書いたが、文庫本一冊全部メモリに載せても、数百KB 程度
Java の仕様上重複して文字列保持してたとしても、オーダーが全然違う
ましてや上の質問のは数字配列だぞ
653デフォルトの名無しさん (ワッチョイ f35f-YiW6)
垢版 |
2020/10/04(日) 11:36:28.62ID:2xSNSE5O0
仕様ですから
654デフォルトの名無しさん (ワッチョイ ffad-EdVv)
垢版 |
2020/10/04(日) 13:09:42.25ID:4IGvE5yV0
しようがないなあ
655デフォルトの名無しさん (ワッチョイ f35f-YiW6)
垢版 |
2020/10/06(火) 01:10:23.43ID:1k+Imlj60
>>652
32ビットという意識すべき壁がある、メモリは無尽蔵ではないと初心者に指導すべき責任を感じろ。
2020/10/06(火) 08:26:05.16ID:jmTyfSuH0
メモリのオーダーの違いとボトルネック意識すれば、無尽蔵じゃないなんてわかりきってると思うんだが
32ビットに関しては何がいいたいかわからん
657デフォルトの名無しさん (ワッチョイ 6f01-TclZ)
垢版 |
2020/10/06(火) 19:05:33.30ID:FgWldxW40
>>656
32ビットだ、Javaを使ってればわかるだろ
2020/10/06(火) 22:02:51.08ID:jmTyfSuH0
いや何が言いたいのかさっぱりわからんけど

まさか 32bit JRE のメモリが限られてるとかそのレベルの話をしてるじゃないよね
2020/10/07(水) 20:04:08.14ID:DbQiKeZw0
そうはいってもインデックスはintでとってるの多かろう
2020/10/08(木) 00:07:46.56ID:5T/kK73g0
配列インデックスが int でそれを 「32bit という壁」と表現してるのか?

配列のインデックスを Java の上限まで詰め込んだらって言うのはそれこそ桁の違う話
要素が 4byte だとしても、8GB になる

小説の文章や上の例の数値配列ではメモリ容量のオーダーが小さいという話をしてるのに、
なぜそんな何桁も違う話が出てくるのか

配列の要素数の上限(桁違い)を意識してプログラム組むなんてクソレアケースを、
Java 使ってるならわかってるだろみたいに言われても困る
2020/10/08(木) 08:46:56.98ID:HLbv5TSo0
Oracleの社長が4GB超えたらデータ消えるのは仕様ですと言い放った有名な話
2020/10/08(木) 11:44:36.48ID:fqb/lLT+M
サーバーは64bitなのに対して
組込みIoTの大半は16bitや32bitだからかな?
2020/10/08(木) 12:26:15.41ID:4zSbqWTM0
そろそろマイコンは組み込みから外れて独自のジャンルという気がする。
2020/10/08(木) 13:47:06.05ID:5T/kK73g0
組み込みでメモリ容量が小さいことを意識する必要はあるのは分かるけど
それこそメモリの桁を意識してプログラム組むべきだしな
配列インデックスは無関係
2020/10/08(木) 15:26:15.34ID:HLbv5TSo0
めったに関係しなくても
そんな場所ないと思っても
膨大なプログラム中にたった一か所あると
もうプログラムは動かないんだ
2020/10/08(木) 15:33:37.11ID:HLbv5TSo0
ちゃんと組まれてても32bitで動かなくなるというのはかなり大事な話ではなかろうか?
2020/10/08(木) 15:39:54.22ID:G9DBGWUU0
言ってることがメチャクチャだな
もうこれ以上説いても無駄なんじゃない?
2020/10/08(木) 16:02:59.50ID:5T/kK73g0
確かになんか話が通じてないみたいなので諦めるわ
2020/10/08(木) 16:20:33.82ID:4zSbqWTM0
まあJavaがEMMやsegment方式やPAEみたいなおかしな方向に走らなかったことを
誉めておいてやろう。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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