Java入門・初心者質問スレ Part.10
レス数が1000を超えています。これ以上書き込みはできません。
次スレを立てる時は本文の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 初歩的な質問ですみません。
win10でJavaをインストールしたのですが起動できません。
コントロールパネルにはアイコンを表示するにしても出来ず、
edgeでは使えないと書かれていたのでエクスプローラーでインストール
しても同じです。
どうすればいいでしょうか? >>2
何を起動できないことをどうやって確認した? >>4
それじゃわからない
あなたがイメージしてる物とレスを見た人がイメージする物が違う可能性が高い
Javaを起動というのはどこからやろうとしてる? >>2
まず聞いときたいのは、
エクリプスなどのIDEを使おうとしてる?
それともコマンドラインプロンプトとテキストエディタでやろうとしてる? すみません、オラクルのJavaとしかわかりません…
エクリプスって何でしょうか?
コマンドラインプロンプト、テキストエディタ、わかりません…
入門書を買って勉強します。 >>7
そのレベルでしたか…
確かに入門書を買った方がいいですね
スッキリわかるJava入門がお勧めです(何を買うか迷ってしまったら、の話です) >>7
あなたは何をする必要があってJavaをインストールしたのか?
また、そのインストールしたJavaとは何処から取得したものなのか? >>7
>エクリプスって何でしょうか?
>コマンドラインプロンプト
>テキストエディタ、わかりません…
さすがにそのレベルの単語は
覚えないとお話にならないね
入門者が開発環境を整えて動かすまでは
最初の難関なのでそこも学習だと思って
検索して調べながら試行錯誤して欲しい java silver se11 のテキスト買ったんだけど8の方が良かったりしますか? GUIアプリ作ろうと思ってるんだが、どのプログラミング言語がお勧め?
JavaでGUIアプリ作るならどういうフレームワークというかライブラリというかお勧め? >>13
Java でGUIアプリはやめた方が良い
ネイティブのメモリと JVM のメモリと、絵が一つでもグラフィックスメモリが2重(ひどいと3重)で存在してるって事が割とある
eclipse とか見てるとわかると思うが、とにかく 動作がくそ遅い
GUIのライブラリに関しては好みがあるから、お気に入りのアプリが使ってるライブラリでも調べてみると良い >>14
今考えてるのはファイル名一括変換アプリを考えてるんだが、Java以外には何が適切? >>15
テキストボックスに法則入力してボタン押して変換って感じでいいん? >>13
>GUIアプリ
そもそも公開しないなら
コマンドラインで済む場合があるし
公開するならWebアプリの方が便利な場合もある
ファイル名一括変換くらいだったら
Excel VBA のようなマクロ言語の方が
手軽に済む場合もよくある
そのうえでJavaでやるなら
メジャーなGUIフレームワークはSwingやJavaFX
Java8までの標準がSwingで8からFXが標準
>>15
Java以外ならたとえばPythonやRubyがあり
両者のGUIフレームワークにTkがある ほんとバカ回答しかなくて笑えるw
初心者未満の質問に初心者未満に毛が生えたレベルの奴が回答する図はなんなんだろうな 今ってJava 13まで出てんのに8の話するのって時代遅れすぎじゃね? まあ、Java8はOracleも有料で更新版を提供続けてるし
RedHatとかAmazonも提供してるから古いとはいえ一応現役よね。 今後Amazonが業界的に爆勝ちを続けるのは明らかだからAWSに興味持ってんだけど、JavaとAWSを上手くつなげて何かの商品って作れないかな 初心者未満のゴミがあーだこーだjavaと関係ない技術に興味持っても無意味だから黙って回れ右
どうしても自分語りしたいならお前らみたい馬鹿専用のSNS!
いい加減うざい
ここはおまえのバカの自己主張する場でも日記帳でもないから こればっかりは同意。そろそろ空気呼んで別のところでやってほしいわ ほんと馬鹿ほど自己主張の自分語りの自己顕示欲塊だからきしょくわりぃんだよな
バカのくせに根底にあるのが承認欲求しかないから
過疎スレには書き込まんくせにちょっと勢いあるスレになると
延々と馬鹿雑談やらバカ回答のレスし続けるんだよな
IPスレの方にいけ低能キチガイども ググって解決できない質問だけここでしろ
雑談はするな
文章まともに書けない池沼と知ったかと
自分でろくにアプリも作ったことのない馬鹿は絶対に回答側にまわらないように >>2-18
とりあえずここで質問も回答もしてはいけない低能たちの例
お前らはレベルが低すぎるから入門書ボロボロになるまで読み直してこのスレも見るな
アホ >>30
う〜ん、それは出来ない相談やな
Javaに関係することならどんなことでも質問していいし、
それに答えられるんならどんなレベルの人でも回答していいと思うんだが
お前さん何の権限があってこのスレ仕切ろうとしてるんや? 前スレからお前らの回答で解決できたことが一つでもあったか?
ないだろ池沼
前のチャイム君も俺の回答があったから解決したのに
同期化君とかお前とかが散々関係ないことのたまって荒らして酷いもんだったな
>>2の質問の回答だってSWTの3文字で解決する問題を
javaは遅いから〜とか「入門書買おう(キリッ」とか「そのレベルでしたか(キリッ」 とかお前が言うなレベルだし
お前らは全く存在価値がないからとりあえず一生ROMってろ
アホ 俺結構Javaは好きだし、このスレも真面目なスレとして見たいから、反社会的コミュ症ゴミ病気障害者はスルーしてくれた方が助かる
ワッチョイ表示されてるから簡単にNG出来ることだし ワッチョイ隠して自演やめろゴミ
お前みたいな低レベルのアホのせいでjavaが土方言語扱いになるんだよ
消えろ低能 >>33
もちろんそれも一つの手だと思うけど、
>>32のような奴でもこのスレの構成要素になってしまっている以上、
無視ばかりもしていられないと思うんだよね
前スレの終わりとか酷かったじゃん 自 演 や め ろ ゴ ミ
まともな文章書けないゴミのくせにプライドだけは一丁前か
アホ 1レスしただけですぐ正体わかるし、まぁ1週間に1回NGすればいいだけなら >>15
よくあるのが、ファイル名の数字の1 などを、001 などに変えるとか、
半角空白を、_ に変えるとか
Ruby のglob, fileutils で作るのが、間違いが少ない!
Windows に最初から入っている、PowerShell も、そこそこ使える。
ただし複雑なものは、やめた方がよい >>38
小手先のテクニック程度はどうでもいい
ってかお前発想のレベル低すぎやろ。 匿名掲示板で言ったもん勝ちだから
レベル低いとかノイズでしかない
自分でレベル高い意見示さないと フォルダ内の該当する、すべてのファイル名を変換する
xxx1.txt → xxx001.txt
拡張子の直前に、3桁以下の数字があるので、0 埋めする
xxx には任意の文字が、任意の数だけ入る。
ただし、数字の直前の文字は、数字ではない >>42
ヒントだけ言うなら
(\D*)(\d{1,3})(\.\w{1,3})
って所か 漏れなら、ファイル名の後ろから走査して、. までを拡張子として分離する。
. から、さらに前へ走査して、数字以外の文字を見つけるまで、数字だけを取得する
ただし、ファイル名に、. は1つだけ存在すること! このプログラムで重要なのはエラーハンドリングやろな ファイルを扱うときは処理ミスがデータ喪失につながるから異常フローの設計が大事 通称プリン先生、本明はセルゲイ・プリン、性別は不明
28歳のときパナマの国立美術館から魔法のランプを盗もうとして捕まり
10年を刑務所で過ごしいまは古物商のコンサルタントをしつつ
Javaの初心者質問スレでググりが足りない質問者を教導するのが日課である Ruby で作った。ファイル名を左右反転して処理した。
xy4_12.txt → xy4_012.txt
NUMBERS = ( 0..9 ).to_a.map( &:to_s ) # 0〜9 の文字の配列
str = "xy4_12.txt"
str.reverse! # 左右反転
dot_pos = str.index( "." ) # 前から探す
num_pos = dot_pos + 1
while NUMBERS.include? str[ num_pos ] # 数字なら
num_pos += 1
end
return if num_pos == dot_pos + 1 # 数字が存在しない
nums = str[ dot_pos + 1...num_pos ]
nums.reverse! # 左右反転
zero_num = "%03d" % nums # 3桁、0 埋め
zero_num.reverse! # 左右反転
result = str[ 0..dot_pos ] + zero_num + str[ num_pos..-1 ]
result.reverse! # 左右反転
puts result >>42
正規表現の方が短く書けるだろうけど
文字列変換なんて基本的な操作だから
(自作)ライブラリにしてもいいかも >>46
>ファイル名に、. は1つだけ存在すること
こういう前提って現実に使用する時に
遵守することは難しくて
2つ以上のファイルがまぎれ込むのが普通
それでたとえば2つ以上あったら
エラーで落ちるとかだとまず使い物にならない
そこで最初にドットが2つ以上あるか走査するとか
いろいろなやり方があるだろう 久々にスレ覗いたらまだゴミみたいなレスの応酬してるw
ゴミみたいなコード書いてる奴もいるし
ほんと自己顕示欲強いだけのゴミ初心者は回れ右してSNS行けってアホ
アホ >>52
スレチだけど、それ、典型的なバグがありますよ。
'xy4_012.txt' を与えたら '012' が8進数として評価されて 'xy4_010.txt' と表示されます。
Rubyなら10進指定のプレフィクスがあるので、せめて
zero_num = "%03d" % ("0d" + nums)
とする必要があります。
どこで文字列が数値として評価されるか意識しないと、
型がゆるいスクリプト系だとよく起きる(もちろんJavaでも起きうる)タイプのミスです。 ナイスデバッグと言わざるを得ない
プリン代理として >>52
File.extnameやFile.basenameを使ってくれ
reverse!多すぎ
>>58
そこは前段でto_iしたほうがいい ゴミコードで初心者未満同士会話するのも
いかにもTHE 低レベルスレって感じなんだよなw >>61
ああ、そうか to_i で良いんですね。
あとJava でも Integer.parseInt(String) は10進数として解析するので、>>58 の 'Javaでも起きうる' は間違いですね。
数値リテラルとして 0123 と書くと10進数値で 83 ですが、Integer.parseInt("0123") は 123 にしかなりませんね。
訂正します。すみませんでした。 もうやめてくれ
レベル低すぎて見てられんゴミカスども
初心者未満は回れ右して入門書!
アホ 入門書って具体的にどれ?
電機大出版が出してる本とか? 相変わらずレス番飛んでるが、ググレカスくんはワッチョイ更新後の最初の1レスに全力かけると良い
それがみんなに見てもらえる唯一のレスだ スレが入門初心者向けなんだからレベル低くて当たり前。
なんで怒ってるのかね? 18時間が久々とかwwwwwwwwwwwww
って突っ込み待ちだったとか? むかしむかし、あるところにプリンちゃんという偏屈なプログラマーがいました
プリンちゃんは思い込みが激しく他人とうまく関われません
いつも見下されているように感じ日々ストレスを抱えていました
プログラミング知識が心の拠り所です
「世の中アホばっかりじゃ!」
ある日、初心者スレならイキり散らしてストレス発散できるのではと気付きました
「これは有頂天じゃなあ!ワハハ」
しかし怒った住人たちにアンロードやクラス変数の記憶違いを指摘され笑い者になってしましました
プリンちゃんは発狂して荒らしになってしまいましたとさ
おわり >>52
さすがに、糞コード過ぎたw
それに拡張子(ドット)が、0以上すべての場合に、動くように作るべきだった
>>65
スッキリわかる Java入門 第2版、2014
ベストセラーはこの本で、文法・オブジェクト指向を学ぶ本 多少間違いがあっても
サンプルコード出す方が
少なくともただ煽る奴よりは
何十倍もマシだからね オーバーロードのありがたい例というのはありませんか?
例として挙げられているのはありがたみがよくわかりません。
同じメソッド名で別の機能を実現するというのはバグの原因になりませんか? このスレって入門スレだけど、答えれる奴らですら入門書を1冊終えられたレベルなんじゃね?
最低限、入門書・アルゴリズムとデータ構造・リファクタリング・JSP&サーブレットの入門ぐらいは終えてる奴のレスを聞きたいもんなんだがな >>70
スッキリは俺も(大体)良書だと思うけど、
文字列入力を、
String str = new java.util.Scanner(System.in).nextLine();
としてその後補足説明を加えてない所が気に入らなかった
別スレに書いたけど、
例えば名前と年齢をキーボード入力して出力するコードが
public class Main {
__public static void main(String[] args) {
____System.out.println("名前を入力して下さい");
____String name = new java.util.Scanner(System.in).nextLine();
____System.out.println("年齢を入力して下さい");
____int age = new java.util.Scanner(System.in).nextInt();
____System.out.println("私は" + age + "歳の" + name + "と申します");
__}
}
のような感じで解答例に載っている
これは冗長でもあるが、それに加え処理系によってはエラーになってしまう
インスタンス化に触れる前に教えないといけなかったからこうなったんだろうが、
import java.util.*;
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
と分けて教えるべきだと思う >>72
オーバーロードは悪というのが近年の流れで、バグの原因になるというのもの通り
GoやRustなど、実際最近の言語ではオーバーロードは無くなっている >>72
例としてはStringBuilderのappendメソッドがObjectと全プリミティブをオーバーロードしてるのはありがたいと思う
いちいちappendLongとかappendCharとか呼び分けさせられたらアホかと思うし、用途的にオーバーロードも適さない
ほかにもJavaが言語仕様としてデフォルト値や名前付きの引数をサポートしたり、JEP360がらみでKotlinでいうsealed classのような代数的データ型を効率的にサポートするようになったりするまでは次善の策として便利な言語仕様だと思う
用途の異なるメソッドに同じ名前を付けたらそりゃ有害だけど、名付けが狂ってることの有害性はオーバーロード以前の問題でもあるし >>76
訂正
×オーバーロードも適さない
◯オートボクシングも適さない >>72
オーバーロードがイヤなら別にIF文でもいいが
複雑なIF文の分岐だってバグの原因になるだろう?
個人的にはネストしたIF文よりマシだと考えてる
なおポリモーフィズムも似たようなことね
>>75
Goは手続き型でCの後継言語みたいなもんだから
Javaとはぜんぜん方向性が違う >>81
なんかいろいろと繰り返してるの気になった
特にcanDigit3()とtoDigit3()でのロジック重複
スレチのRubyで書いてみたけどこういうのはbashで十分な気がする
https://ideone.com/jFdnv9 >>82
Rubyは良いよねーbashもみたいなー あのなぁ・・
ここは初心者未満のチンパンの糞コード発表会の場じゃねーんだよ
ぼくのオナニー見せあいっこはSNSでやれゴミ
初心者未満が集まるとこうやって
低レベルな糞コード貼り付けだすからホントきっしょくわりぃんだよな プリン先生の秀逸コードでぐうの音も出ないほど黙らせて欲しい 池沼の自己顕示欲の強さは異常だな
どいつもゴミみたいなコード書くのに何時間もかけてるみたいだし
アホ XMLで読み込んだ要素が数値って分かっている場合、
一々、Integer.parseInt(ほにゃらら〜)って使わずに直で数値として値を得る方法って無い? 例えば,今Elementクラスの変数elemがXMLの要素(何でもいいけど、例えば、<hello>要素)を指してて、
その属性値が数値だと分かってる時、例えば<hello price="500">の時、
一々、Integer.parseInt(elem.attr("price"))って書くよりももっと綺麗な方法はあるかな?って質問。 一人でキモチわりぃゴミだな
おまえはまともな文章書けない時点で終わってんだからとっとと消えろゴミ 2次元のレイキャスティングを作成しようとしてます。
ttps://github.com/OneLoneCoder/olcPixelGameEngine/blob/master/Videos/OneLoneCoder_PGE_ShadowCasting2D.cpp
にあるコードを現在javaで書いており、
ttps://youtu.be/fc3nnG2CG8U?t=1519
のように縦に長く1本線が出来てほしいのですが、
縦やにブロックを並べた時に、なぜか1ブロックごとに線が出来てしまいます。
どうすれば動画みたいに、縦に長い1本線が出来ますでしょうか?
コードは
ttps://ideone.com/spxzNE
に載せてみました。 ByteBufferに書き込みと読み込みの2スレッドからアクセスしています。
読み込み側でFlipしてLimitが設定されたあと、Get、Clearし終わる前に
書き込み側が書き込みにより、Limitを超えるPositionを設定しようとしてしまい、停止してしまいます。
読み込み側でGetし終わるまで、書き込みアクセスをブロックするような方法はありますか。 >>100
おまえあわしろいくやだろ。
イジメはホドホドにしとけよ。
評判悪いぞ。 >>101
213行目 cc.setEdgeExistance(EAST, true); のEASTをWESTに >>91
老害が幅きかせているコミュニティは廃れるんだから落ち着けって
元々できないポンコツが一つ優れた武器を持つと輩になる典型っすよ >>104
ありがとうございます!
1本の長い線が作成されるようになりました。 >>102
synchronizedでアトミックに処理したいところを囲んで
2つのスレッドでロックオブジェクトを共有したら良いよ 整数が複数入った配列があり
そこからランダムで一つ選びポイントとして加算していき10を超えたら終了というゲームがある
たとえば [ 10, 4 ] なら最低1回最大3回で終了し
確率は1回1/2, 2回1/4, 3回1/4 となる
最低1回最大3回選択でき、且つすべてを等確率にするにはどのような配列にすればいいか × いいか
〇 いいですか?
バカか?
あと宿題はママに聞けゴミ
アホ 丁寧にNGマーカーつけてくれてありがとう
一撃NGです、また来週会いましょう java 初心者でyoutube検索かけるとyoutuberが毎回mac買おうmac買おうって言ってるけどなんでそんなにmac推すんだ?
osなんてlinuxで十分だろ JavaでLibreOfficeのファイルを読み込んで処理したい
現状、LibreOffice と LibreOffice_6.4.2_Win_x64_sdk.msi はインストールしました。
出来ればLibreOffice Calcのシート1のセルA1で1+1の計算結果の表示までをさせたいんだが、ここからどうすればいいのかが分からん
Eclipseは起動済み
一応新規プロジェクトも作った
ここからどんなファイルのロードやコーディングをすれば良いのかが分からん × 分からん
〇 分かりません
バカか?
新人研修の課題はママにでも聞いてろゴミ
アホ >>114
Office側のスクリプト使った方が早い
覚えるの面倒だろうけど >>114
ここ見れば何かわかるのでは?
LibreOffice 6.2 API Documentation
https://api.libreoffice.org/ >>117
普通外部のAPIを取り込む時って、Eclipseのプロジェクトのプロパティから外部Jarを読み込んで、サンプルコードを見ながら簡単に「Hello World」が試せるもんなんだけど、
LibreOfficeはそんなシンプルなサンプルが全然無いし、探してもクラスの解説してるサイトが全然見つからなくて、マジで何して良いか全然分からん感じ >>118
何をしたいの?
LibreOfficeのオートメーションがやりたいの?
OpenDocumentを読み書きしたいの? プログラムでファイル作るだけだったら
LibreOfficeはOpenXMLも扱えるから
Apache POIでOpenXMLの読み書きするのが良いと思うけど >>119
今俺が持ってる表計算ファイルの各セルには、文字列が規則的に分類されて並んでるから、
それらをJavaで一括で抽出整理してXMLファイル等に出力したい おまえさぁ
IDEの使い方もろくにわからん馬鹿のくせになんでそんな舐めた口聞けんだ?あ?
100万回ググって回れ右しとけ雑魚カス
アホ IDEの使い方わからない
文章がアホすぎて何書いてるか意味不明
質問する立場の奴が書く言葉じゃない
回れ右! >>124
>>124のライブラリが簡潔っぽそうだな
俺が今取り扱いしたい表計算ファイルの拡張子は「.ods」
特に複雑な計算をしたいわけじゃ無く、各セル内の文字列を逐次に抽出できたらそれで良しって感じ いい加減くだらないゴミレス付けて荒らすなカス
初心者未満はIPスレの方行けゴミ
アホ >>124
>>121
私も xlsx を poi を使っています androidアプリで5chブラウザのようなもの(別の掲示板向け)作りたいんだけど、Java初めての場合おすすめの参考書とかサイトありますか?PG未経験です。 >>124
Installationの所を見てもJarファイルの落とせる場所が分からんのだが? >>124
https://github.com/jferard/fastods/releases/
の0.7.0を落とせっていうのか?
これはJarファイルじゃないし、解答しても分けの分からんファイルの集合だし…
どうすりゃいいんだ? ってか、FastODSって
It won't even read ods files.
ってLimitationの所に書いてたんだが、書き出し専用APIなんか?
だとしたら俺の望む所じゃ無い ピーピーと教えて教えてうるせぇ低能だな
ググる知能もねぇアホはSNSに帰れ
荒らすなゴミ
アホ >>131
書き込み専用みたい
java opendocumentでググったら読み込みできるライブラリ見つかるんじゃないかな >>128
掲示板にはサーバが必要になるはずなので
Webアプリとして作ることになるだろう
Java一本だけでいけなくもないんだけど
レンタルサーバが高くついてしまうので
別言語(PHPとか)を覚える必要がある
未経験でいきなり掲示板は難しいので
やさしいサンプルからスタートしよう
https://www.javadrive.jp/start/ >>136
ブラウザで表示するにも
サーバサイドは必要だろ?
それがどういうものにしろ
クライアント側(アンドロイドのアプリ)では
2ちゃんの専ブラみたいなものを
作ることになるだろうけど
2ちゃん本体に相当する掲示板の
Webアプリ(サーバ)が必要 あまたの悪い奴等同士で会話してスレを荒らさないように
アホ ヘイトスピーチでスレを荒らすプリンちゃんはマスクした方が良いと思うの >>137
質問者が「別の掲示板向け」って言ってるんだからどこか既存の掲示板に対して専ブラを作りたいって話だと考えるのが自然だよ
フルスクラッチで掲示板システムを開発したいならこういう聞き方にはならない >>140
専ブラのみを作るって意味?
ならサーバはいらなくなる
(その掲示板のサーバは使うけど) >>124
POIをつかってエクセルファイルを読み込むサンプルに挑戦しています
https://itsakura.com/java-poi
ここのいう通りにやってるんだが、上手く行かない。
Mavenはインストールが面倒だから飛ばしたんだが、これって飛ばしたらダメなん?
「2.Jarファイルの取得」ってところの1.Mavenの〜ってのを飛ばした。
MavenってJavaプログラムをビルドするためのツールらしいんだが、こんなシンプルなプログラムに挑戦してるんだから、Mavenは飛ばしてもよさそうなんだが? ここはお前の学校じゃねーんだよゴミ
ググって3秒でわかることを何回も書いてきっしょくわりぃ奴だな
アホ プリンちゃんのヘイト会場でもないでしょうが
ここは私の日記帳です >>142
メイブン使うとライブラリ用意するのが楽になるってだけだと思う
ライブラリをクラスパスに追加すれば問題ない
何がどうなってうまくいかないと思ったのかを言って
もらわないとアドバイスしにくいっす
ってプリンちゃんが言ってました >>145
レスサンキュー。
Mavenについては俺もその感じで理解してた。>>142のページの説明が下手なだけで、Mavenの所で読み込んでたライブラリを外部Jarとして読み込むようにさせたら上手く行けた。
あと、反社会性人格障害のゴミ産廃はとうの昔にNGしてて、改めて視界には入れたくないから言及はしなくて大丈夫 mavenはビルドツール+ライブラリインストールツールだよ。
さすがに今時はライブラリ管理もしてくれないとつらいもんがあるから必要かと。 必要に思った時に導入してから最初から入れておけばよかったと思うケースか 今書いてるコードは個人レベルの300行程度だからまだ大丈夫 自分の馬鹿を棚に上げてサイトの説明にする低能初心者怖すぎだろ
●でID隠してからID出してる方で自演して一生懸命レスつけてるし
バレれてないと思ってんのかねコイツw
アホ 前自分が質問した時は相手にして貰えなかったのに
今は皆相手にして貰ってるずるい!
まで読んだ まともな文章書けない
IDEの使い方もわからない
ググってもmavenが何かも理解できない
超絶池沼くせにやたら偉そうなレスつけてるのがヤバすぎなんだよなコイツ
で、自演と文章書けない池沼同士でレスつけあってるっていう構図
THE アホ Maven は、リポジトリがない、生 jar ライブラリ の扱いが面倒くさくね?
今はなんか簡単にできるようになってたりする?
ビルドスクリプト的なのも、Java で書いたほうが楽…
Groovy は eclipse のプラグインがうんこだから限定的にしか使ってない >Maven は、リポジトリがない、生 jar ライブラリ の扱いが面倒くさくね?
>今はなんか簡単にできるようになってたりする?
THE 馬鹿 python みたいに
$ pip install
みたいに簡潔にできないのか? pipもnpmなどに比べたらダメな方の代表格だろw npm, yarn は、Ruby のBundler のコピーだから
Android で使う、Groovy のGradle は、どう?
mavenCentral リポジトリだろ
これも、Bundler そっくりじゃないの?
Bundler は、rubygems.org リポジトリ JavaでXMLファイルを書き出す方法って何種類かあるんだな
どこがどう違うんかな Document doc = Jsoup.parse("", "", Parser.xmlParser());
(docに対して色んな要素を追加(略))
Transformer tf = tfFactory.newTransformer();
tf.transform(new DOMSource(doc), new StreamResult(new File(【ファイルパス】)));
↑このコードは「コンストラクター DOMSource(Document) は未定義です」となってエラーとなるので、
docを適切に変換しなきゃ行けなくなりますが、どうすればいいですか?
それとも、docをファイル出力する方法として別の良いやり方はありますか? >>161だけど、
今俺がやろうとしてることは、Jsoupを使って、全く無の所からXML文書を作ろうとしてるんだけど、
Document doc = Jsoup.parse("", "", Parser.xmlParser());
こういう書き方でいいんかな?
JsoupはHTMLを解析する用のライブラリっぽいから、XMLを扱いたいという意味で↑上の書き方をしたんだが。 誰かこの場違いな池沼を介護してくれる池沼にふさわしいSNSに誘導してやれよ
頭悪すぎて見苦しすぎる org.jsoup.nodes.Document を org.w3c.dom.Document に変換する方法が知りたい org.jsoup.nodes.Documentで作った(XML)ドキュメントをファイルに書き出す方法が分からん ファイルのダウンロード方法をググっても色々流儀があるようでどれがベストなのか分かりません
どういう基準でどういうやり方を取れば良いですか?
俺が今やろうとしてることは、ローカルのテキストファイルにダウンロードリンクがあるので、それを読み取りながら逐次5MB程度のファイルをダウンロードしたいって感じ >>153
うわっ!君ここにも張り付いてたのか…病院行けよマジ simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0 わざわざID出して別人装わなくてもいいぞ低能
アホ 自分の敵は何人もいるはずが無いと思い込みたいキッズ Ruby では、Nokogiri で、XML/HTML を扱う
Groovy なら、メソッドチェーンで、ネスト構造を作れる
MarkupBuilder
https://docs.groovy-lang.org/latest/html/api/groovy/xml/MarkupBuilder.html レス読んで相手してやるとか博愛精神の塊かよ
即NG ここで質問すべきか迷いましたが中身がJavaなのでここで質問します。
Webシステムでよくあるパスワード初期化メールについてです。
URLパラメーターが暗号化されたアドレスにアクセスすると思いますが、こういうのってどんなプロトコルを使ってパラメーター暗号化してるのでしょうか。 単なるアクセストークンで暗号化とは違う可能性もあるが
暗号化ならAES-GCMかな >>178
AES-GCMちょっと確認してみます。
パスリセを例として出したのは例として分かりやすいかなぐらいな感じで、要は解読できないパラメーターがどんな風な作りになってるのか知りたかったんです。 エクリプスでjunit使いたいんですけど、うまくいきません…
ここ見れば使い方わかるみたいなサイトってありますか?
自分でも調べたんですけど、「テストランナーjunit4のテストが見つかりません」と出てしまい困ってます… 並列ダウンロードのやり方について解説してるサイト教えてくれ 複数のPDFファイルを沢山ダウンロードしたいんだが、逐一だととても遅くてやってられない
並列処理で効率化したい
あと、ダウンロードエラー時のリジューム機能も実装できたら文句なし ファイルをダウンロードする処理って
Files.copyでやるやり方と
byte dataBuffer[] = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
fos.write(dataBuffer, 0, bytesRead);
}
でやるやり方があるけど、どっちがどう違うん? 今後質問はもう1つの方のスレでした方がいいかもね
こっちだと約1名のドアホのせいでスレが盛り上がらない >>180
例えば、Ruby on Rails なら、test フォルダ以下のすべてのファイルをテストする
# (test/ 以下の)すべてのテストを実行する
$ bin/rails test
# 複数のフォルダ以下のすべてのテストを実行する
$ bin/rails test test/models test/jobs
>>184
wget, curl などで、並列ダウンロードは出来ないの? ググれば解決するようなアホな質問をなぜか上から目線でする
己の糞馬鹿を棚にあげてよく言うわ
クソガキッズはID変えて自演するまえに自分の馬鹿さを自覚しろ クソガキッズ・・・
キッズキッズ言われたのを根に持ってる証拠か こんなところでしかマウント取れないとかたかが知れていますな
生産性のないことしか言えないなら黙っていたほうがお互いのためよ そらID消してタメ口で質問するようなアホに回答する奴なんておらんわな
クソガキッズは回れ右な Eclipse Memory Analyzer っていい感じだね(しょっちゅうエラー吐くこと以外は)
メモリリークの原因一撃で特定してくれた >>184
マルチスレッドでやれば良いのではないかな。
シングルスレッドでやってやれないこともないだろうが面倒になりそう。 質問です。
戻り値のあるメソッドの作成において、条件によってはSystem.exit()で処理を終了
させたいのですが、「return文が無い」とコンパイルエラーになってしまいます。
どうせexitメソッドの後の文は実行されないので無駄だと思うのですが、
コンパイルを通すためだけにどうでもいい値をreturnしないといけないでしょうか?
例)
if (isFlag) {
__return 1;
} else {
__System.exit(3);
__return 0; // ←この文です
} >>200
そうです
普通はJVMを終了させるようなメソッド書かないよ
例外投げて呼び出し元でSystem.exitしたがいんじゃない? 5日ぶりについた糞な質問に20分でアホな回答つけてるとか自演か?
自演じゃなくてもなんで即レスでアホな回答する馬鹿しかここにはいないのか
ほんと理解に苦しむ >>202
まあまあ
普通はどうやるんだろ
・Eitherで正常値と異常値をわける
・OptinalでEmptyを返す
・例外を投げる
あたりかなー
jvmを終了させるのはないわー
そんな凶悪メソッド使いたくないわー >>203
おいプリン俺を誰だと思ってるんだ
プリン先生の大ファンです、サインください Eclipseでエラー箇所にカーソルを当て、提案された解決策に従うのが吉。 答えてくれた方、ありがとうございました。
>>204
exit()を使うより、例外を発生させて終わった方がいいですか? >>200
この質問デジャブかな
https://mevius.5ch.net/test/read.cgi/tech/1588770728/23
そこらの関数に自由にVM終了されたらテストコードもまともに書けない
致命的エラーならランタイム例外投げてmainメソッドでリターンコードにまつわる処理を集約だろ >>207
値を返すメソッドの中でjvmを終了させない方が良いよ
それはそれとして終了ステータスを3にしてるのはjavaを実行したあとに
終了ステータスで処理を変えたいとかがあるわけっしょ?
そういうのがなくてなんとなく3にしてるだけだったら
例外投げて終わりでよいと思うけど、何をしたいのかわからないので
System.exitを使わなくてよいかはわからぬよ
System.exitを使うならmainメソッドで使ったが良い >>208
それ俺の質問です!
その時は別の解決策を見つけたんでよかったのですが(finallyをせずに処理を書く)、
今度はうまくいかなかったんです。
例外を検討してみます。
ありがとうございました。 >>209
参考までに書いているコードをアップします。
https://pastebin.com/62aSxerK
じゃんけんをするプレーヤークラスのサブクラスを書いています。
5回誤入力があると、主工程の次のステップに進ませず終了させたいので、
exitメソッドを思い付きました。
前述の通り例外を発生させたいと思います。 これは終了理由のエラーメッセージも詰め込んで例外スローだな
一介のPlayerクラスがVMの命運を握ってるのはおかしいので
古典的には不正な入力に対して-1を返してもいい
それをもっとJavaっぽく書くならグー、チョキ、パー、不正の4値のenumで いや4値より3値でOptional<Hand>を返すのがいいか >>211
>exitメソッドを思い付きました
っつってもJavaだけやっててexitなんてそうそう思い付くモンじゃないよ
たぶんC言語からの流れじゃね というかコードの書き方がCだな。
str系の代わりにStringだのScannerだの使っているだけで。 >>210
エラーが取れて動けばいいって思っていそうな感じだけど、
メソッドの設計やどうあるべきかってのをよく考えような。 ここは宿題スレじゃねぇからゴミコードにゴミコードを貼り付けるなゴミ
ほんとなんでこういう場違いな自己顕示欲低能しかいないのか
アホ 質問した人と僕が同一人物だと疑ってるわけですね
それが事実だったとして一番得をするのはプリン先生です
つまり犯人はプリン先生です
プリン先生は僕の才能に嫉妬しています
僕はプリン先生の一番弟子としてそれを誇りに思うしプリン先生を尊敬しています 『プリン先生の深層心理』
質問した人と僕が同一人物だと, どうしてプリン先生が得をするか
それは, 僕の才能あふれる回答が自作自演によるものならプリン先生が僕の才能を否定できるからです
そればかりか卑劣な行いとして僕を糾弾する正義の立場に立てるからです
プリン先生は自分よりも才能のある人を恐れています
自分の方が優秀だと思いつつも僕の才気あふれる回答を目にしてとまどっています
質問した人と僕が同一人物ならばその葛藤に折り合いをつけることができます
このことが原因でバイアスが発生します
おそらくプリン先生はそのことを自覚していません
深層心理は無意識下で働き, 意識の表層には苛立ちとして現れます
俗に言う嫉妬です 女が友達がヤバかった話するときは、自分がヤバかった話だからな。 まだ話続いてたんですね…。
>>217
ありがとうございます。
しかしJava8までしか知らないので読めないです…。
例外処理で終了するようコードを修正しました。
https://pastebin.com/8hjNRc4C
それと先(>>211)のコードでは、数字以外を入力したときにうまく動作しないので、
改行文字を読み捨てるようnextLineメソッドを追加しています。 入力を誤るとRuntimeExceptionなのか。
意味を何も考えないで結果しか見てないな。 >>225
5回試行してそれでもダメなら例外なので
良いと思うけどね 想定される例外なら検査例外そうでないなら実行時例外というわけ方はあるけれども
検査例外を捕まえるのは正常フローから外れた処理を正常フローに引き戻すという目的があって
やることなので今回の場合はプログラムを終了させたいわけだから実行時例外で問題ないと思うけどね 検査例外はそもそも大失敗な機能なんで正しく運用するなんて不可能
GroovyやKotlin等の後発JVM言語にすら省かれてるし、Java自身もラムダと相性悪過ぎてついに失敗を認めUncheckedIOException追加しちゃった 単純にはもともとがexitなのだから代替はRuntimeExceptionでもいいとは思うが、
これは複数人のじゃんけんなんだろうから、そのたった一人の入力ミスが
exitやRuntimeExceptionで全体を強制終了に追い込むのは、それもおかしい。 >>227 >>229
まあexitの代わりってことならそれでいいのかもな。
exitが出てきた時点でしっかりとしたメソッドを作ろうという考えではないのだろうし。 >>229
なるほど、それもそうか
>>228
HDDに対するIOの例外は検査例外ではなくて実行時例外であるべきだとは思うけど
それ以外の検査例外もなくして良いかは微妙なところ
検査例外の利点は例外のハンドリングが抜けてることにコンパイル時に気づけることなのであっても良いと思う
Javaを設計したゴスリンは航空機のシステムを開発してて例外のハンドリングが抜けてることを見落として
航空機が墜落することを経験してたから検査例外を作りましたっていう物語を読んだことがある
Javaでミッションクリティカルなシステムを作ってる人は少ないだろうけど 知っていますか、そのじゃんけんプログラムを書いた御仁は、
Javaをもう二年以上勉強していて、
Javaはマスターした、オブジェクト指向は完璧に理解したと豪語しているということを あのレベルでJAVAをマスターしたって言っていいのか!
それじゃあ今日から自分もJAVAマスターだ! RuntimeExceptionなんて名前を付けちゃったから混乱するんだけど、
IOExceptionやSQLExecptionなども「実行時例外」ではあるぞ。 Javaは非チェック例外をRuntimeExceptionとしたが、
チェック例外も非チェック例外も実行時例外であることに変わりない(だからカッコ付けたんだけど)。
RuntimeExceptionを実行時例外と訳すのは、Classクラスをクラスクラスと訳してしまう同じ過ち。 >>238
文法や構文の誤りはコンパイル時に検出されるけど例外は実行時にスローされるのだからすべて「実行時例外」だという主張ですか?
実行時例外をそんな意味で使ってる人見たことないです 質問です。
https://ideone.com/K2YLZm
上のコードでは、なぜNoSuchElementExceptionが発生するのでしょうか?
どなたかよろしければ返答よろしくお願いします。 >>241
ScannerがInputStreamをバッファリングして読み込んでてInputStreamが空になってるからでしょ
Scannerを共有すれば良い >>242
回答ありがとうございます。
でも俺頭が悪いのでそれがどういうことなのかよく分からないです…。
修正はしてみました。
https://ideone.com/ZA15Gv
こんな感じでよろしいでしょうか? すいません、間違えました。
正しいリンク先は以下です。こちらをご参照下さい。
https://ideone.com/zK0JTK >>245
回答ありがとうございます。
>>241、>>244では別メソッドという観点からアプローチしましたが、
本当は>>243のように別のクラスでどうか、という観点でやりたかったんです。
JPCERTの記事はまだ理解出来ていませんが、
・別メソッドでScannerを使う場合は、そのクラスのフィールドでscanner変数を宣言してそれぞれ利用
・別クラスで使う場合は、scanner変数ををstatic付きで(Mainクラス等に)宣言し、クラス変数としてそれぞれ利用
という理解でいいですかね?
以下は、後者の場合のコード作成例です。
https://ideone.com/3YvgD5 >>246
どうしてエラーになるかの説明でリンクを貼った
どういう理由でクラス分けようとしてるのかわからないけど
フィールドにScannerをもたせるならこうじゃないかな
https://paiza.io/projects/kIlKd0LmbbTwohyXEL0Glw
可変のフィールドをパブリックに公開するのは責任の範囲がわからなくなるので
よろしくないし、それに依存するクラスもよろしくないと思うよ >>247-249
ありがとうございました。
理解できてないというのは、意図が分からないということではなく、
読んでみたものの内容が理解できなかったという意味です。
ちょっと俺にはその水準のコードはまだ書けないですね。
もう少し本を読んでみようと思います。 超はじめたてです。質問があります。
関係演算子と分岐分を用いる問題です。
「int型の変数a,b,cを宣言し、それぞれ適当な整数を代入する。
a.b.cのうち最大値を求めてその値を表示してください」というコードはどうすればいいですか? >>251
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
System.out.println(max(max(a, b), c));
}
static int max(int x, int y) {
if (x >= y) {
return x;
} else {
return y;
}
} もしくはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
if (a >= b) {
if (a >= c) {
System.out.println(a);
} else {
System.out.println(c);
}
} else {
if (b >= c) {
System.out.println(b);
} else {
System.out.println(c);
}
}
} あるいはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
System.out.println(Stream.of(a, b, c).max(Integer::compareTo).get());
} またはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
System.out.println(Stream.of(a, b, c).reduce((x, y) -> x >= y ? x : y).get());
} >>256
またはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
int[] xs = {a, b, c};
Arrays.sort(xs);
System.out.println(xs[xs.length - 1]);
} >>256
またはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
TreeSet<Integer> tree = new TreeSet<Integer>();
tree.add(a);
tree.add(b);
tree.add(c);
System.out.println(tree.last());
} >>256
またはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(Comparator.reverseOrder());
maxHeap.add(a);
maxHeap.add(b);
maxHeap.add(c);
System.out.println(maxHeap.remove());
} >>256
またはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
int[] xs = {a, b, c};
int max = 0;
for (int i = 0; i < xs.length; i++) {
if (i == 0 || xs[i] > max) {
max = xs[i];
}
}
System.out.println(max);
} >>256
またはこう
public static void main(String[] args) {
int a = 3;
int b = 1;
int c = 2;
int max = a;
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
System.out.println(max);
} >>256
つまりこう
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
System.out.println(a >= b ? a >= c ? a : c : b >= c ? b : c);
} >>251
3枚のトランプa,b,cがあったとき、どうやって一番大きい数字のカードを見つけるかを、まずは日本語で順を追って書いてみな。
初めから効率とかきれいに書こうとか考えず、漏れなく正しく判断する手順を考える。
選んだカードの比較結果によって次に行う手順が変わるから、そういう可能性を漏れなく考えて、a,b,cがどんな組み合わせでも大丈夫な方法を見つける。
ここまででちゃんときてから、実際にJavaのコードを書き始めてみな。 【悲報】まさかのMath.max(int, int)氏
これだけコードを書かれたのに存在を無視される >>271
初心者だが普通に参考になったわ
あざす 37歳だかの無職荒らし発達障害者が住み着いてこんな風になってしまった。 なんか頭のおかしい奴がいつも一人で低レベルな質問と回答の自演連投してるんだよな >>276
俺のせいじゃねーよ
人のやり取りに文句ばかり言って自分は何もしない奴のせい >>278
お前が37歳だかの無職荒らし発達障害者なのか?
人のせいにしてるんじゃねーよ。
>人のやり取りに文句ばかり言って自分は何もしない奴のせい
自分のことだろ。他人を検索システムや採点システムとしてしか見ていないで
ただ人に行為に甘えるだけの努力しない幼児が。 >>232
>Javaはマスターした、オブジェクト指向は完璧に理解したと豪語しているということを
そんなことは言ってない
>>279
>自分のことだろ。他人を検索システムや採点システムとしてしか見ていないで
>ただ人に行為に甘えるだけの努力しない幼児が。
そんなことはない 黙ってろ 過去にはこんな事も
720 名前: ◆BrBq2CJg6HGd [sage]
:2019/01/15(火) 17:39:56.71 ID:fyCw1kpR
>>711
Amazonで評判のいい本の内、なか見検索があるものということであの本になった。
それとスッキリ入門はマスター。 俺のせいで変な奴連れてきちゃってすいません。
変なレスはスルーして下さい。 System.out.printlnに、日本語が含まれたプログラムをコンパイルするとき
文字化けするので、いつも-encording utf-8するのですがみんなそうなんですか? うん、それはソースコードをUTF-8で書いてるってことだからとても良いことだよ
ソースコードをShift_JISで書けば-encoding指定を省略できるけど、いまさらShift_JISファイルを量産するのはおすすめしない >>288
ideでソース書いて実行する人がほとんどだと思う
javacを手打ちしてる人は少ないんじゃないかな
試しにjavacを実行してみたけど-encodingの指定は必要だった
入力するのが面倒ならbatファイルやps1ファイルにパラメータを書いておいて
batやpowershellからjavacを実行したり
gradleやmaven、antなどのビルドシステムを使ったり
ide使ったりとか Robert Sedgewick & Kevin Wayne著『Algorithms 4th Edition』に以下の記述があります。
『One of Java's characteristic features is its policy that references cannot be modified.』
この意味が分かりません。リファレンスを変更できないとはどういうことですか? >>291
C/C++言語で言うところのポインタ(または参照)という意味だろう。
オブジェクトのインスタンスは動かせない。 >>292
回答、ありがとうございました。
メモリ上に存在しているオブジェクトのインスタンスの場所を動かせないという意味でしょうか?
たとえば、1000番地にあるオブジェクトのインスタンスを2000番地に動かせないということですか?
もし、そういう意味だとしての質問なのですが、オブジェクトのインスタンスを動かす必要なんて起こる場合があるんですか? >>293
その辺は、C/C++が自由すぎて自分の靴も撃てるという話。そこまで行くとプログラムのマネジメントがおかしいとしか言えない。 >>293
いや、Cだと、
BYTE *ptr = top;
for ( i = 0; i < 100; i++ ) {
(ptrを使った処理)
ptr++;
}
とできるが、このptr++のようにポインタを変更する処理がJavaではできないという意味と見た。
なお、Javaでも、
TYPE aaa = new TYPE;
としておいて、もう一度、新たに
aaa = new TYPE;
とすることは出来るはずだが。 ちょっと違うと思う
modify referenceと言うように参照側を動かせるかどうかの話
Cの場合、たとえば配列を参照しているポインタをひとつインクリメントすると配列の次の要素を参照する
ポインタが指し示す番地を書き換えられるということ
Javaの場合、オブジェクトや配列に対する参照に加算するような概念がない
変数に新たな参照を代入して上書きすることはできても、既に作られた参照をずらしたり書き換えたりができない
その意味はJavaがCのような言語と比べて高級言語であるということ >>291
同じ章のQ&Aにある「What is a pointer?」に少し詳しい説明が書いてある
他の人が書いてるようにp++のようなポインタ演算ができないってこと Javaは、アドレス演算子も無くて、Cの
BYTE *ptr = buf + i;
BYTE *ptr = &buf[i];
TYPE *ptr = &type_data_s[i];
に相当することができなかったと思う。
だから、結構めんどくさい事になる。 インスタンスの配置されたメモリアドレスを変更できないという理解でいいよ
そうすることで「効率的なガベージコレクションができる」と説明が続いているので
プログラマーが勝手にインスタンスのアドレスを変更したり他のメモリーに複製できてしまったらガベージコレクタがそのインスタンスを破棄できなくなる 「プログラマが」メモリアドレスを変更できない
ガーベッジコレクタがメモリアドレスいじる場合もある
どれくらいの頻度でそういう事するのか知らんけど swing を使ってプログラムを書いてるんですが、SwingWorker のなかで
@Override
public Integer doInBackground() {
int[] a = {0, 1};
System.out.println(a[2]);
・・・
}
とやってもEclipseのコンソールにエラーが表示されないんですけど、どうしてでしょう?
例外自体は投げられてるようで、その後のコードは無視されます。 Javaでは別スレッドで例外が発生しても無視される
その別スレッドが終了するだけでメインスレッドは何事もなかったかのように継続する
別スレッドの例外を補足したい場合はThread.uncaugtExceptionでリスナーを登録してね >>303
ありがとうございます。これから使い方を調べます。 SwingWorkerは
doInBackgroundが別スレッドで処理されて
doneがedtで処理されて
doneの中で結果をgetするときに例外投げられるはず >>305
ほんとですね。今回 done の中で get してなかったので気がつきませんでした。
get を書いてみたらスタックトレースされました。 >>307
250はこれでもJavaを3年も勉強してるんだぜ
先日まで「Javaの基本はマスターした」「オブジェクト指向は理解している」と豪語していたくらい >>307
ありがとうございます。
そのレベルはもう大丈夫です。
Java Bronze持ってます。 instanceof が遅いって昔聞いて頻繁に呼ばれる箇所で使うの躊躇してたんだんけど
さらっと調べた限りじゃ、今はそんなことねーんかな
こういうのは実環境で実際ためしてみないとあれだけども 今も昔もそんなことない
昔遅いと言われていたのはリフレクション
早すぎる最適化は諸悪の根元というセオリーがある
10倍100倍遅いと聞いてビックリして忌避するのは素人
たったの100倍、10万回呼ぶようなときに気にすればいい
instanceofは別の理由であまり使わない
オブジェクト設計が失敗してると多用しがち eclipse(プレアデス)で書いてます
同じパッケージに二つのクラスをいれて片方にコンストラクタ、片方はmain型でnewを実行しているのですが、
実行した際にメイン型が含まれていないと言われます
異常を示すマーカーはないです package ex3;
public class Naming{
public static void main(String[] args) {
Nanashi nanashi = new Nanashi(10, 10);
System.out.println(nanashi);
}
こんな感じです
NamingクラスからNanashiクラスのことは認識できているようです 左側のプロジェクトエクスプローラーNamingを選択してアプリケーション実行
Nanashiを選択して実行するとNanashiにはmainがないからエラーになる >>316
実行するときに選択したのはパッケージなんですがそれで動かないです
Naming選択するとJavaアプリケーションでなくサーバーで実行しかできなくなります https://ideone.com/LpcGxJ
↑のコードですが、ideoneでは意図通りに動作します。
ところが、Eclipseで標準入力から用意した整数の入ったファイルを読み込ませても、最後の"Hello World"がプリントされません。
というか、プログラムが終了しません。
原因は何でしょうか? 他の方に聞いて解決しました。
身バレ防ぐために改変したあたりが間違い箇所でした。本当に申し訳ありません。
ご指導ありがとうございました。 カッコ内にString型を入れる意味をよくわからずに改変していたのが原因でした。
勉強します >>319
Windowsなら標準入力を終わらせるためにCtrl + zを入力しないといけないよ >>323
ありがとうございます。標準入力を利用して、ファイルからデータを入力しているのですが、その場合にはどうすればいいのでしょうか? コンソール上で、手入力でCTRL + Zを入力したら行けました。 Eclipse でインポート文が突然アクセスできないってエラーになります。
コードを何もいじってないのに、突然エラーになって、import 文を削除して改めて Eclipse にインポートとしてもらうか、
あと関係ない部分のコードをいじると直ってしまうとか、謎な振る舞いをするんですが、これって何なんでしょうか?
この二つのインポート文にそういう症状が出ています。
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; エラーできたときはエラー文を一字一句変えずに書きだせ
これは質問するときの絶対条件 低レベルな内容です。
interfaceには、Objectクラスに備わっているtoStringやequalsメソッドは
備わっていないのでしょうか? >>329
ありがとうございます。
でもインタフェースは抽象メソッドしか持てないって本には書いてありましたが… interfaceそのものにはなくてもクラスに実装された形でnewされればどんなクラスでもObjectクラスから派生したクラスのインスタンスになるからなあ。 >>331
ではインタフェースにはtoStringやequalsの抽象メソッドだけ
宣言されているのですか?
例えば
/* public abstract */ String toString();
のような感じで Java で正規表現やるとぐちゃぐちゃにならん?
(?<!\\\\)(?:\\\\\\\\)*
とか、どんだけバックスラッシュだらけやねんて感じ
二重にエスケープ入るのほんとうんこだよね Javaはシンプルな言語仕様が売りだから仕方ない
快適を求めるならKotlin使おうぜ >>331
ありがとうございました。
>>333
>>334
ありがとうございました。 初めまして。大学生でJAVA未経験のものです。以下のような課題が出ました。
ユークリッドの互除法に従い,while文を利用して変数m=12707と変数n=12319の最大公約数を求めてください.
コンソールには,結果の最大公約数に加えて,変数m,nの値の変化も出力してください.
分かる方いらっしゃいましたら教えてください。環境はできています。 >>338
それは質問じゃなくて丸投げ
何がわからないん?
ユークリッド互除法のアルゴリズムがわからないのか、
プログラムの書き方がわからないのか
やってみようとしてどこまでできて何がわからないのか >>339
レスありがとうございます。
プログラムの書き方がわからないんです。
今まで int x = ~までしからなかったので、数が複数出てきたとき?でした。
私が自力でできたのはここまでです。
int x = 1;
while(x < 100){
x = x * 2;
System.out.println(x); 漏れが、Haxe で、互除法を書いたもの
最大公約数 : greatest common divisor, Greatest common factor
最小公倍数 : least common multiple
公式 : a * b = G * L
static function gcd ( a:Int32, b:Int32 ) :Int32 {
var min = a, max = b;
if ( a > b ) { min = b; max = a; } // min/max を設定
while ( true ) {
var mod = max % min;
if ( mod == 0 ) { break; } // 割り切れたら
max = min; min = mod;
}
return min;
}
// gcd を使って、lcm を求める
static function lcm ( a:Int32, b:Int32 ): Array<Int32> {
var res: Array<Int32> = [ ];
res[0] = gcd ( a, b );
res[1] = Std.int ( a / res[0] ) * b;
return res;
} .collect(Collectors.toList())
この文法うんこじゃね?
頻繁に使うし、一撃 toList で省略して書けるようにしろや Java世界では直行性は利便性よりも優先される
直行する関心事はクラスとして分離され、必要に応じて組み合わせて使用できなければならない
これはJava誕生時点から続く絶対不可侵な設計思想なので、気に入らないならJava自体やめた方がいい (´-`).。oO(staticインポート、忘れられててかわいそう) てかうんこ連呼しやんでKotlin使えよ、知ってて煽ってるのか そうそう。Kotlinなら例えなくても後から作れる。 プロジェクトが eclipse に強依存してる
Kotlin が eclipse でまともに使えるようになったら起こして(現時点で使えるなら教えて)
Groovy と lombok でしのいでるけど、Groovy editor もバグりまくりで結構うんち spring の公式ドキュメントってどこにあるの?
公式ページを探しても見つからないのだが >>351
これトップページから見えないよね・・・ 知らん
「spring document」と検索してトップに出てきた
所要時間二秒
つまり公式ページからは探してない
「探しても見つからない」って言ってんだから別の方法で探せばいいし、
そう言われてて再度公式ページは漁りたくない eclipse ってラムダ式に全然最適化されてないよね
一回 eclipse まるごと何回再起動してもフリーズして、
外部エディタでラムダ式の書き方変えないとだめだった事あるわ
補完もかなり雑 まだeclipseなんて使ってるのITドカタだけだろ
どうせラムダは規約で禁止されてるから問題ないんだよ eclipseにはもう二度と関わりたくない
Javaが嫌いになった理由は9割以上eclipseのせい
VSCode乗り換えたらJavaもそんなに悪くなかった 宗教はSNSでやれゴミ
そもそも補完機能ないとラムダも書けんアホはもうやめた方が良い
アホ eclipse使うぐらいなら一般のテキストエディタとコンソールのほうがまだマシ >>358
調べなくても書けるけど補完が利くと便利ですよ
>>359
それはさすがに・・・
IDEAのJavaエディタだけ移植することできないものなのかね 同じ奴だと思うけどちょくちょくエクリプソン使えない馬鹿が騒ぐよなここ
新卒あたりだろうけどエクリプソンすら使いこなせない奴は迷惑だからとっとと転職しとけ
アホ >>361
騒いでないしeclipseはラムダ式が苦手なんよeclipseエアプなん?eclipseキチガイなん? IntelliJ って Swing だったのか
クソクソ言われ続けた Swing くんでも本気出せばあそこまで作り込めるんだな
eclipse RCP みたいな、もしくは SWT/JFace みたいな、
IDEで使ってる UI コンポーネントのセットみたいなライブラリって IntelliJ にもあります? 初めて1週間くらいだけど、フィールドと普通の関数の違いが分かりません
Cみたいにクラス外で宣言でないからクソだわ スコープの違い
ローカル変数 => メソッド/コンストラクタ/ブロック内のローカル変数
インスタンス変数 => 俗に言うフィールド
クラス変数 => static変数 Ruby でもクラスに、外からインスタンス変数にアクセスできる、
accessor(setter/getter)を定義したら、
関数だけど、変数のように見える
@hello は、インスタンス変数
class A
def hello # getter
@hello
end
def hello=( val ) # setter
@hello = val
end
end
a = A.new
a.hello = "ハロー"
p a.hello #=> "ハロー" >>368
なんかダサくない? Javaの方が良くない? class A
attr_accessor :hello
end
で>>368が書いてるのと同じgetter/setterが設定される
Javaにもproperty導入されたんだっけ? Javaだとkotlinのプロパティになるのかな・・
kotlinのプロパティとカスタムアクセサ kotlinのプロパティとカスタムアクセサ
https://qiita.com/Black_Kite/items/a9fc406c3cbfeac463ea
public class Address {
public var name: String = ...
}
fun copyAddress(address: Address): Address {
val result = Address() // 'new' キーワードは Kotlin にありません
result.name = address.name // プロパティの利用。
// ...
return result
} Javaも早くdata classを逆輸入してほしい
data class Address(var name: String)
val result = address.copy
println(result.address) classとstructを分けなかったC++の設計は正しかったのか・・・ C++のclassとstructは違うよ
structにも関数が定義できるからclassと同じだと思ってる人いるけどさ
structはメンバーがデフォルトpublicなんだよね
だから従来通り構造体にはstruct使うのが適してる
Javaにもstruct欲しかったなー
アクセサ絶対作れおじさんとかうるさいんだもん # A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc10d4f98a, pid=16056, tid=3844
#
# JRE version: OpenJDK Runtime Environment (13.0.1+9) (build 13.0.1+9)
# Java VM: OpenJDK 64-Bit Server VM (13.0.1+9, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C [awt.dll+0x8f98a]
以上のようなエラーが出ます。
swingを使っているせいだと思います。swingを使わないプログラムだと出ません。
Eclipse 2020 だとJDK14、及びJDK11でこのエラーが出ます。
JDK8に戻すとエラーが出なくなります。
Eclipse2019だとJDK13でこのエラーが出て、JDK11でエラーが出ません。
今は2019のEclipse、JDK11で使っていますが、どうしたらいいんでしょうか? Javaやると拒絶反応起こすんだが、またCの勉強やりたくなってきた >>379
オラクルJDK11を使ってswingで書いたのを
OpenJDK13でコンパイルしようとしてるの?
JRE13のawt.dllのアクセス違反って出てるから
エクリプスの実行環境設定を変えるか
Windows10のコントロールパネルのJavaアイコンから環境設定のチェックしてみたら? 環境変数設定しないでJava扱う方法ない?
フルパスならいけるが。 >>383
Javaのディレクトリに移動したらいい >>382
設定 → Java → コンパイラー
コンパイラー準拠レベル 13 にしておいて、
プロジェクトのJREシステム・ライブラリーを11と13で切り替えると13でエラーになります。 >>383
IDE使って、相対パスでJDK設定すれば? >>384
その手があったかthx
>>386
客先端末にそんなもん入れられん コマンドプロンプトやbatファイル単位で環境変数を設定すればシステム全体には影響を与えないよ フルパスを変数として使えばその変数を呼ぶだけで呼び出せるが コレクションクラスで、要素の昇順の取りだしとその削除を同時にでき、かつならび順を判定するデータに重複を許すクラスはありますか?やりたいことは例えば、
作業のリストから最も優先度の高いものを取りだし作業した結果、さらに複数の作業が発生し、それを優先度のつきで元の作業リストに追加登録したあと、更新後の作業リストについて同じことを繰り返す。(同じ優先度の作業が複数存在する)
といったことです。(実際の処理はもう少し複雑です) Comparable なオブジェクトを TreeSet に入れてみましたが、compareTo()==0 な2つオブジェクトは共存できずダメでした。(Comparable の API ドキュメントのequalsの説明どおり) >>393
ありがとうございました。まさに求めていたものでした。
自分で探せずおはずかしい。 Java初心者です。
プロパティーファイルを読み込む問題でエラーが出てしまい困っております。
まずeclipse上でプロパティーファイルを作成して、次にFileInputStreamを使ってファイルのストリームを作成して、propertiesクラスを使ってストリームからロードし、try-catch-finallyを用いて、
nation1,nation2に対応するプロパティーをそれぞれ表示するコードを作成したいです。
私は以下のように作成したのですが2つうまくいかない点があります。
・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。
・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。
重い様なので二つに分けますね。 ーーーーーーーーーーーーーーー
<プロパティーファイル名:java.properties>
#国の名前を表示したい
nation1=japan
nation2=china
nation3=brazil
ーーーーーーーーーーーーーーー 以下の様に作成しましたがエラーが出ます。
ーーーーーーーーーーーーーーー
package main;
import java .io.FileInputStream;
import java .io.IOException;
import java .io.InputStream;
import java . until.Properties;
public class Main{
public static void main(String[] Argos){
properties pr= new properties();
String strpass = “Users/Shared/java/properties/java. properties”;//ファイルが見つかりません
try{
InputStream istream =new FileInputStream(strpass);
pr.load(istream);
System.out.println(pr.getProperty(“nation1”));
System.out.println(pr.getProperty(“nation2”));
}
catch(IOException e) {
e.printStackTrace();
}
finally{
pr.close();//エラー表示
}
}
}
ーーーーーーーーーーーーーーー
こちらのサイトを参考にしました
https://www.sejuku.net/blog/20794 文字コードかも
try {
InputStream istream = new FileInputStream(propertiesPass);
InputStreamReader isr = new InputStreamReader(istream, "UTF-8");
properties.load(isr);
} catch (IOException e) {
e.printStackTrace();
} これそのままコピペしてる?手打ち?
java.propertiesの拡張子の前にスペース入ってるけど >>399
コピペではなくて手打ちですね。
確かにjava.propertiesの所にスペースが入ってました。すみません。 相対パスの指定あってるのかな?
絶対パスにしてみてうまく行ったりしない? >>395
>・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。
prはProperties型の変数
Propertiesはストリームではないしcloseメソッドはないよ
>・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。
実行時のカレントディレクトリからの相対パスだから
実行時のカレントディレクトリがどこなのかわからんから相対パスの指定が正しいかわからない
ファイルが見つからないのなら間違ってると思う
> https://www.sejuku.net/blog/20794
リソースリークしまくり・・・これを真に受けてプログラムを覚える人がいると思うと・・・ try (var in = new FileInputStream(strpass)) {
pr.load(in);
}
ストリームを閉じるのはこれでよい >>401
絶対パスにして実行しても何も起きないですね…
String strpass = “java.properties”;
>>402
ありがとうございます。
eclipseで相対パスを求めるにはどうすれば良いですか?
無知ですみません。
>>403
すみません。問題にfinallyを用いてストリームを閉じるようにとの指定があるので… そのサイトは先にC言語でもゴミを排出してる
侍エンジニア塾のC言語のサンプルがヤバすぎる。 - Qiita
ttps://qiita.com/hamichamp/items/7b7a7ee091a6856ac900
ハッキリ言ってこの世に存在しちゃいけないクオリティだよ
日本の生産性下げるためにわざと、としか思えない >>405
そうなんですね。信用していたのですが…
教えて頂いてありがとうございます。 >>404
> String strpass = “java.properties”;
コレハ絶対パスとは言わないよ、ファイル名だよ、ルートディレクトリからのパスを記述するのが絶対パス
> eclipseで相対パスを求めるにはどうすれば良いですか?
System.out.println(Path.of("").toAbsolutePath().normalize());
> 問題にfinallyを用いてストリームを閉じるようにとの指定があるので…
明示的に閉じるならこんな感じ
var in = new FileInputStream(strpass);
try {
pr.load(in);
} finally {
in.close();
}
tryの中で例外が投げられてfinallyでも例外が投げられると
例外の情報が上書きされてしまうから業務でプログラム書くことになったら
try-with-resourcesを使ったが良いよ >>407
絶対パスで実行したところうまく行くことが出来ました。
もっと勉強します。
みなさん本当にありがとうございました。 >>2さんがちょっと進歩したくらいの超初心者です
オープンJDK最新版(14.0.1)インストールして環境設定?みたいなのもググって見よう見まねでやりました
それでメモ帳とコマンドプロンプトでまたも見よう見まねで簡単なコードを書いてコンパイルして実行しようとするとエラー
調べてみるとJREのバージョンが古いから最新のやつには対応してないみたいな感じでした
JDKにはJREも含まれてるはずなのでおかしいなと思いましたがPCに元から入っているJREが悪さをしてるんじゃないかと思ってJRE8(1.8.0?)を1度削除しました
そして再度実行しようとすると今度はJREがないので実行できないと…
結局JRE8をインストールしなおしJDKのバージョンを8まで下げて解決させましたがどういうことだったんでしょうか
無知ですみません >>409
Java 14でコンパイルしたものをJava 8で実行しようとしたのじゃないかな >>410
それはそうなんですが、JDK14ってインストールするだけ(正確にはそうではないですが)で書くのも実行もできるようになってるんじゃないんですか?
自分はそう思ってたんですが… >>411
それは知らない
僕は事象だけみて説明がつく理屈を考えた どのJREで実行するからちゃんと指定したいなら、コマンドプロンプトから java.exe もしくは javaw.exe をフルパスで叩いて直接実行しなよ OSさんからしてみりゃ、どっちのjava.exeですか?弊社にはjava.exeは2人おりますが…ってな感じだ
環境変数でパスを通す方法と優先順位を調べるとよい javac コマンドにtarget 1.8オプションなかったけ? >>409
よくわからないが8のjreだけでなくjdkもアンインストールしてみたら? 例えばコマンドプロンプトで、メモ帳の.exe を探す。
もし複数表示されたら、上の方が実行される
where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
つまりグローバルで、notepad というコマンドは、
上の方の.exe に関連付けられている
これが環境変数PATH。
環境変数には、(ユーザー)環境変数とシステム環境変数の2つある。
(ユーザー)環境変数は、そのユーザーだけに適用されるが、
システム環境変数は、すべてのユーザーに適用される
環境変数PATHを知らない香具師は、すべてのOS でプログラミングできない! 香具師
ヤシ
ヤツ
奴
2ちゃんねるがまだアンダーグラウンドだった暗黒時代に流行った隠語だよ Java の正規表現で、メタ文字じゃないのにエスケープできる文字って、単にミスを回避する目的のためだけですかね?
例えばセミコロンとか正規表現のメタ文字じゃないからエスケープする必要ないけど、\; と書いてもエラーでませんよね? \あ とかも出来るのか仕様上
英字以外は意味無しエスケープもできるのね… ミス回避にはなってないんじゃね?
意味無しは意味無し。それだけのことだろ。
余分なセミコロンと一緒。 JSPでJavaScriptを吐く時はセミコロンのエスケープいるかも?くらい? perl時代の謎機能を引き摺ってるとか
正規表現のパターンそのものをprintしたいとか
その時は全部の文字の前にとりあえず¥を差し込めばいい
なんにせよ正規表現の闇は深い logをファイルに出力したいのだが、何か参考になるサイト等教えてくれまいか? >>428
java logger とかのキーワードで検索すると沢山出てくると思う。 swingでウィンドウアプリケーション作りたいんやがやり方がわからんので教えて頂きたいです。
とりあえず一旦ウィンドウ表示させる所からやりたいんやけどそのやり方が分からん。
言語はJavaで開発環境はAtom
ドシロート丸出しの質問失礼しますm(_ _)m それは大変でございましたね。
自力で最低限の部分すら調べられないのであれば、
まあswingとはご縁がなかったということで。 そうそう、ドシロート丸出しじゃないですよ。
ドシロートというのは自分で調べる努力くらいはしているものです。
よって、何がわからないかくらいは把握しているものです。
あなたの場合は、努力を放棄して、全てを召使にでもやらせる感覚ですね。
人間のクズ丸出し、とでも申しましょうか。
他人を便利な道具としてしか見ていない、まあ端的に申しまして
ただのキチガイでございますね。 5chや掲示板の利用者としてドシロートという意味なら間違いではないと思うよ 色々本読んだりネットで調べたりして調べたんですが…
すみません… >>437
ここで手取り足取り教えることなんてできないんだから、質問内容をもっと具体的に絞り混んだりしないと答えようがないよ。
まずは一通りやりたいことがかかれてる入門書を買って頭から順に学習して、具体的に分からないことが出てきたらそれを質問してみたら誰か答えてくれると思うよ。 具体的…
atomのスクリプト使ってGUIの実行は出来ないのですか? 掲示板でSwingのウィンドウの出し方から教えるってのは無理があるねえ
初歩から解説してる良いサイトないですか?という質問だったら分からなくもないんだが
Googleで検索したら解説サイトくらい見つかるだろ?
プログラミングは躓く部分多いから検索の仕方を覚えることから始めたほうがいいよ >>440
NetBeansでJFrameを作成して実行すればいい
1行で説明可能 atom触ったことないけどjavaのコード実行できるならGUIだろうと実行できるだろう >>433
JavaDrive
Home
Swingを使ってみよう
https://www.javadrive.jp/tutorial/
メモ帳にコピペしてjavacでコンパイルしてjavaで実行するべし
import javax.swing.JFrame;
class JSample1_2{
public static void main(String args[]){
JFrame frame = new JFrame("MyTitle");
frame.setBounds(100, 100, 600, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
} import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.Container;
import java.awt.BorderLayout;
class Sample extends JFrame{
public static void main(String args[]){
Sample frame = new Sample("MyTitle");
frame.setVisible(true);
}
Sample(String title){
setTitle(title);
setBounds(100, 100, 600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
JButton nbtn = new JButton("NORTH_Button");
contentPane.add(nbtn, BorderLayout.NORTH);
JButton sbtn = new JButton("SOUTH_Button");
contentPane.add(sbtn, BorderLayout.SOUTH);
JButton ebtn = new JButton("EAST_Button");
contentPane.add(ebtn, BorderLayout.EAST);
JButton wbtn = new JButton("WEST_Button");
contentPane.add(wbtn, BorderLayout.WEST);
JButton cbtn = new JButton("CENTER_Button");
contentPane.add(cbtn, BorderLayout.CENTER);
}
} >>444,445
お前ら・・・
SwingのイベントはEvent Dispatch Threadで処理されるのだけれども
SwingのコンポネントはスレッドセーフではないのでEDT以外のスレッドで
インスタンス作ったり状態を変えたりするとデータ競合が起こるよ
mainメソッドはmainスレッドで処理されるのだけれども
mainスレッドはEDTとは違うものなので例外ではないよ
ちゃんと書くならこう
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
GUIデザイナを使えばソースが自動生成されるからそれを参考にするのが良いと思う
GUIデザイナはNetBeansなら最初から使える、EclipseならMarketplaceでWindowBuilderをインストールできる
EclipseのWindowBuilderはOracle JDK8じゃないと動かないかも //んどくせぇからコレで良いよ
import javax.swing.JFrame;
class a{ public static void main(String a[]){
new JFrame().setVisible(true);
} } 他人のMODを改造して、オレすげ〜 したいのに
リバースできないんだ。JAVAアプリのウィンドウが最近、絵画調に
すげー見にくい。ググっても同じ症状のやついないし、わかる人いる?
https://i.imgur.com/59nyRLW.png このようなバグが出ました
オラクルのサイトの説明等も見たのですがよくわかりませんでした。
改善方法等わかる方いましたら教えていただけると幸いです。
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffcee97f74a, pid=12912, tid=8984
#
# JRE version: Java(TM) SE Runtime Environment (14.0.2+12) (build 14.0.2+12-46)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (14.0.2+12-46, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C [awt.dll+0x8f74a]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows JVM側のバグじゃないか?
グダグダ悩むよりバージョン乃至リビジョンを変えてみるのがいいだろう。 >>450
JDK入れなおします
推奨のヴァージョンとかってありますか? 推奨バージョンはない
awt.dllのクラッシュはJDKが新しければ出ないというわけでもない
新旧いろいろ試してみるしかあるまい いやメジャーバージョンだけでなくマイナーバージョンも変えてみて
たとえばIntellJのawt.dllクラッシュはJDK11.0.6で発生してたけどJDK11.0.5では発生しないとかあった
バグフィックスはマイナーバージョンのほうが重要 多くのマイナーバージョンを試せるLTS(1.8または11)がよい
9,10,12,13,14はサポート期間が短くマイナーバージョンが少ないから >>458
>>459
アドバイス見れてなかったすまん
とりあえず1.8にしてできるようにはなりました
このアドバイスは後々の参考にします
ありがとうございます
教えてくださった皆さんありがとうございました。 この先ずっと1.8を使い続けなければならないのか、そこが不安なんですけど。
最新のJDKで使えるようにする方法があるのか、または今後修整されるのか、そこはどうなんでしょうね。 $JAVA_HOMEで簡単にJVM/JDKを切り替える方法も覚えておくといい。 JavaEEってなんか他の団体に寄贈されたんだろ?
まだ、使ってるところあるのか?SpringFrameworkとかすげえつかわれてんのか?
俺はその昔、JavaとかOracleだけで覚えるのが精一杯だったのに、さらにStrutsとかEEサーバーとか
弄くらされて頭パンクしてから、もうホントJavaは嫌になった。
JSP(JSTL)とサーブレットだけのシンプルな奴で勘弁してくれてほんとに。 Websphereとかはまだいいけど、JBossとか死んでくれて。まじで。 ApacheとかTomcatとかフリーウェアはノイローゼの元にしかならんかったな・・・
素直にマイクロソフトに従ってれば良かったわ。当時はASPだった。まだ、ドットネットはなかった。 >>465
渋いね、生のサーブレットと生のASP
シンプルで良い JavaFXが廃止になって、「今もっともモダンなGUIプログラミングSWING」みたいな本が
CUTTSYSTEMから出てるのは爆笑を超えて呆れ果てるしかない。 最近出た本がそれ↑? Kotlinじゃなくて?
えーと、つまりまとめて
Java1.8まで:サンマイクロソフト
↓
Java9以降:オラクル
嫌がらせって事でFA? class studentCard{
int id;
String name;
int age;
}
public class lesson22{
static void PCI(studentCard card){/*studentCardのインスタンスの参照をcardという変数で受け取る*/
System.out.println("IDは"+card.id);
System.out.println("名前は"+card.name);
System.out.println("年齢は"+card.age);
}
static void CCI(studentCard card){
card.id = 0;
card.name = "未定";
}
public static void main(String[] args) {
studentCard a = new studentCard();
a.id = 1234;
a.name = "KK";
a.age = 18;
PCI(a);
CCI(a);
PCI(a);
}
}
実行結果が
IDは1234 名前はKK 年齢は18
IDは0 名前は未定 年齢は18
こうなるんだが
PCI(a);
CCI(a);
PCI(a);←これが動いてないのはなぜ? PCI = Print Card Instance
CCI = Clear Card Instance
かな
CCIを呼び出すとIDと名前がクリアされるからその後のPCI呼び出しではID 0、名前 未定が表示されるのは正しい
ていうかこれで何を学ばせたいんだろうな
出題してる先生もあまりプログラミング分かってないんじゃないか public classだとインスタンス作んないでいいんだっけ? 1回しかnewしていないんだから値を変えたらメソッドを跨いでも変更は反映されたまま
参照渡しと値渡し的なものの不理解をはっきりさせるコードだな そこじゃなくて
2回目のPCIがなぜ動いていないと思ったのかじゃないの 「動いてない」というのは間違ってて
「期待した値とは違う値で動いてる」というのが正しい理解
些細な言葉尻の問題のようで意外と大事なこと
そのうえで、期待した値と違う理由は上で説明した通り 余計な事を言って混乱させる前に
動いていないとは?からが重要 ・CCIでageを消去してない
・そもそもカードの中身を書き換えて新しいカードを作る・使い回すってのはおかしい
カードそのものの破棄をしないと学生証としてはヤバい
ならメンバが全部finalになってないとダメ
Javaは全て参照ってのを言いたいんだろうけど、例題が悪すぎる クラス名がstudentCard(小文字で始まってる)
メソッド名PCI,CCIが大文字&省略
こんな先生にJavaを教わってる学生さん可哀想だ card.id = 0;
こんなこと出来るのかと思ったらこの場合OKなんだな。
構造体代わりに使えるじゃん。 構造体としてイメージしてるなら
>>470の課題作った人はC言語出身なのかもね >>473
そんなことはない。
何かと勘違いしてないか? >>485
>>475で回答いただきました
ありがとうございます 「serialVersionUIDが定義されていません」
これの解決方求む(・ω・)
Qiitaの記事見てもよくわからなんだ
ただ動作は普通にしてるし無視してもいいのだろうか。 >>487
そのクラスをデータ(フィールド)の運搬役として使わないと断言できるなら無視していい。
詳しくはSerializationで調べる。 >>487
ObjectXXXputStream()?
コードないとどーもわからん 何もわからなくて不安な場合はおまじないでこれ書いておけばイイよ
private static final long serialVersionUID = 1L;
手抜きだけど、シリアル化を積極的に活用していない場合これでまず問題ない それを書くよりは@SuppressWarnig("serial") のほうがよい 1Lは単に警告を消すだけのおまじないではないよ
省略すると、異なるVM間でのやりとりで望まない例外が出るケースもある
起こってから対処してもいいから、心配性でないなら無視が手っ取り早いのは確か クラス構成が変わるとシリアライズした結果のバイト列も変わる
クラス構成を変えたらUIDも変える
これで異なるクラスバージョンで直列化・復元がおこなわれないようにチェックできる
UIDを-1に固定するというのはクラス構成が変わっても直列化互換性がありますと宣言していることになる
訳も分からず -1 を指定するのはオススメしない
むしろIDEでランダムUID振ったほうがいい たしかに
他のホストに送るとか長期的に復元したいならJSONとか汎用フォーマット使ったほうがいいからね
でもAndroidだとアクティビティの状態保存でシリアライズ多用するぞ 俺、ubuntu使いだけど、JavaFX始めるのOpenJDKとかOracleJDKとかめっちゃ苦労した。
で、liberikaJDKとかいうの入れたら一発でコンパイル&実行できるようになった。
OpenJDKとかOracleのJDKはなんであんなにJavaFXを使いにくくしてるのか?
今どきSwingを使えというのか?ちょっと考えてくれ。 Ubuntuで音楽再生ソフトとか簡単なやつ作るのにJavaFXがちょうどいいんだよ。
WindowsはC#で作ったけど、Ubuntuだと適当なのなくてPythonとかも音楽周りは以外に面倒であとはQtQuickとか割と良さそうだけどそうでもないし、JavaFXが一番いいんだよ。
SwingでつくるならJMFだったかそんなん使わないとだめだろ?
頼むて! 俺もJavaFX好き
LibericaJDKの他にZuluもOpenJFXをバンドルしたJDKを配布してる >>496
JavaFXは公式には既に廃止されている >>499
Javaの実行環境に含めて一緒に配布するのを止めただけでは? Pure Javaってなんだっけ?
ネイティブコード使わないんだっけ?
もしそうならJavaFXはPure Javaではない
レンダラーとかDLL/SOだらけだよ
だからJavaFXが提供されているプラットフォームでしか動かない Pure Javaの条件は、Javaの標準APIのみを使用していること
標準APIの中で用いられているネイティブコードはノーカン
そしてJavaFXはもう標準ではないのでPure Javaではない 質問です。
Java8とTomcat 8.5のWebシステムの環境構築をしています。
プロジェクトがいくつかあってSVNからソースを落とすのですが、
プロジェクトAはビルドするとWebContent配下のjarファイルがWeb Appライブラリーに入るのに、
プロジェクトBはそのようになりません。
プロジェクトを右クリ→プロパティ→Javaのビルドパス→ライブラリー→Web Appライブラリー→編集
からプロジェクトの設定はしています。リフレッシュやクリーン、Eclipseの再起動も試しました。
丸コピする手も一応はありますが、
後学のためにどうすればWeb Appライブラリーにコピーされるようになるのか設定方法を教えてください。
よろしくお願いします。 >>504
FacetsでDynamic Web Projectにチェックを付ければOK JavaでWindowsのスリープはどうやるんですか?
「Java スリープ」とかサスペンドとかハイバーネートとかぐぐると
Threadクラスの情報やら果てはHibernate(ORマッピング?)の情報しかでてきません。
キーワードだけでもいいので教えてくれたら嬉しいです。 >>508
ユーザーの許可なく
はた迷惑なイタズラソフトが出来てしまうので教えられません 単なる1つのアプリが、OS をスリープさせる?
そんな事が、できるわけない
OSとは、システム全体のこと
個別ユーザーには、出来ない。
すべてのユーザーが、OSを使っているから
OSの支配者・アドミニストレーターしかできない! java単体じゃ難しいね
てかキーロガーとかもそうだけどモノによってはやり方書くの違法じゃなかった?
一応javaから他のソフトとかexeファイルとか実行できるよ
とは教えておくわ >>512
> てかキーロガーとかもそうだけどモノによってはやり方書くの違法じゃなかった?
そんな話聞いたことない
法令名なんじゃい そんなんで違法とか公式ドキュメントすら作れないなw 幇助(ほうじょ)とは、刑法において、実行行為以外の行為で正犯の実行行為を容易にする行為一般を指す。
幇助行為を行った者は、刑法第62条1項で従犯(幇助犯)とされる。 得体の知れないアプリを管理者権限で動かすってこと自体がウイルス歓迎の自殺行為なんだよ
スリープさせるくらいなんでもない
普通にWindowsAPIを呼べばいいだけだから、マルチプラットフォームを志向するJavaじゃなく、PowershellなりC#なり呼び出せばいい スリープ状態を変えたりOSをシャットダウンさせるフリーソフトなんてごまんとある
配布サイトはさしずめ悪の枢軸組織ギフハブみたいなもんか?
線引きに勘違いがあることに気付いてほしい for文で5000回メール流してプロバイダに赤チン食らったバカならしってる。 JavaでGUIのプログラム作る場合ってJavaFXが主流ですか? 技術的に新しいのはJavaFXだけれどもJavaFXは標準ライブラリから削除された
標準ライブラに残ってるSwingが主流ともみなせるので好きにしたら良い Runtime.getRuntime().exec m9(^Д^)<wwwwwwwwwwwwwwwwwwwww >>515
幇助犯の線引きは曖昧だから、判例なしに素人が幇助だと言っても意味は殆どないと思う >>522
両方試してみることにします
ありがとうございました >>513
じゃなかった?って聞いてる人に聞いて分かるわけないだろw
頭悪すぎだな ブラウザは変えたけどIDは変わってなかった悔しいってネタかな >>521
swing + awtかSWTの二択。
Swingでワイアーシャークのような解析アプリを作ったけど、途中から素直にC#で作るべきだったと後悔しながらコーディングしてた。
Windowsでしか動かさないなら.net使った方がいい。 Iteratorインターフェイスを実装するクラスに必要なメソッドは
hasNext(), remove(), next()
だとRobert Sedgewick & Kevin WayneのAlgorithms 4th Editionに書いてありました。
ですが、Eclipseでそのようなクラスを作ろうとして、自動生成された雛形となるメソッドは、
hasNext()とnext()しか用意されませんでした。
remove()がなくてもOKみたいですが、これはどういうことでしょうか? >>532
ありがとうございます。
それでは、なぜ、hasNext()とnext()にはデフォルトの実装がないのでしょうか?
そのデフォルトの実装を確認する方法はありませんか? >>533
default実装の内容はリファレンス見て
>それでは、なぜ、hasNext()とnext()にはデフォルトの実装がないのでしょうか?
自分で考えて ab, c では、どっちが先か?
アルファベット順なら、ab が先だが、
文字数なら、1文字のc が先になる
つまり、何が基準か分からないので、デフォルトの実装は書けない
でも、次の要素があるかないかは、次がnull pointer なら、要素はないと言える JavaFXの音楽再生について教えてください。ちなみに、よそでも質問しててマルチポストです。
だれか、教えてくれ。 音楽再生の何について聞きたいか言わなきゃ分からん
一からここでレスして教えろとは言わないよな?
分からないこと上手くいかないことを具体的に書け
あとは自分で調べろ
https://nompor.com/2018/01/14/post-2373/ >>533
> そのデフォルトの実装を確認する方法はありませんか?
ソースコードはこちらで見れます
jdk/Iterator.java at master ・ openjdk/jdk ・ GitHub
https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/Iterator.java
> default void remove() {
> throw new UnsupportedOperationException("remove");
> }
removeのデフォルトの実装は例外投げてるだけですね
削除の機能が必要ならオーバーライドしてください
削除の機能が必要ないなら実装しなくていいですって感じ
hasNext()やnext()はIteratorの動作上必要なので実装しないとダメなのよ Arrays.binarySearch使いたくて
ソート対象のオブジェクトに対して
@compareTo実装したら
Aequalsも実装しろと警告でたから実装したら
Bequals実装するならhashCodeも実装しろと警告しやがった💢 それがヤクの毛刈りですよ。
次から次へとやるべきことがワンサカ湧いてくる、これが楽しい毛刈りです なんで自動実装できないかわからないってかわいそうだな
何を持って同値とみなすか、お前が作ったクラスにどんなメンバがあるかなんて分かりようがないだろ ほとんどのケースは自動実装できるでしょ
できないケースだけ自分で書けばいい まあ分からなくはないな
IDE使うとフィールドを元にhashCodeとequalsを自動生成できたりするから
JavaコンパイラかJavaVMで同じことしてくれよって思う人もいるだろう
そして登場するのがRecordな
フィールドを元にhashCodeとequalsが自動生成されるよ アノテーションでビルド時に自動生成してくれるようなライブラリいくつかあるよ
IDEの機能だとクラスの変更時に再生成忘れたら災難に会う Record───!!!!
はやくきてくれ───っ!!!! >>544
いや、@compareToだけで十分なはずの状況でも
A,Bの実装を強いられるのがクソ
といいたい なるほど
全インスタンスが異なる状況ならhashCodeはアドレスのままでいいね
たしかにそういった状況はある
警告はやりすぎだったかも ごめんね >>549
実装を強いているのはJavaなの?
おせっかいなIDEの仕業じゃない? Javaが女とするとIDEは妹
にーにequalsも実装して欲しいの
と言われたらたとえ必要なくても嬉しいだろ
そういうことです Javaは細かい不満が積み重なって大きなストレスになってる
プロパティが言語機能じゃない
yield returnがない
async awaitがない
ジェネリックが型消去
ラムダが検査例外に引っかかる
null合体演算子がない
null伝搬演算子がない
標準のDIが使いにくい
文字が==で比較できない
実数型の四則演算がメソッド
例外メッセージが不親切
アノテーションだらけで気持ち悪い
…
数え上げたらキリがないね comparableの実装ってcompareToだけでequalsの実装まで求められなくね? compareToとequalsとの一貫性は強く推奨されるという位置付けで
必須ではないね 強く推奨されちゃってるからLintとかに引っかかる
→ コミットできない(職場のルール) そうやって妥協した結果がJavaの使いにくさに繋がった
KAIZENを怠ったのだ Java氏の生きづらさの主因は既に普及しすぎていること
船頭多くして船動かず、役人多くして事絶えず
ちょっとした予約語すら追加できやしない
幸せになるには皆がえいやとKotlinに移行するしかない 最近のJavaは言語自体の拡張も積極的にやってるぞ
昔はクラスライブラリを充実させるばかりで構文拡張は不可侵聖域みたいな感じだったのにな genericが型消去になるとか構造体がない問題とか
ランタイムまで修正しないと対応できないっぽいクソが結構あるからなあ
リフレクション使ったコードにも影響でそう
javaはもう詰んでる感じがする なんかハリボテジェネリクス問題ばかりが変にフィーチャーされたせいで、JVMの仕様弄るなんてとんでもない絶対無理みたいな謎の認識がある人が多いみたいだけど、
実際にはOracleになってからJVMは拡張されまくってるんだよ
単純に資金力の問題でしかないの 型を一生懸命やりたければScalaがある
コードを簡潔に書きたければKotlinがある
Javaは互換性持たせつつベストを尽くしてる じゃあなんですか、RubyもPythonもJavaじゃないというんですか!? PythonはJavaだけど、RubyはPerlでしょ。 Javaが拡張を積極的にやってるのはわかる
でもパターンマッチングひとつ実現するのにJava20くらいまで待たされそうなペースじゃん
null安全がやって来るのはJava40くらいか?
みんな老人になってしまったとさ
めでたしめでたし >>569
まあそうだけどさ3年で6進むからJava 20なんてすぐだよ
Java 6からJava 7まで5年掛かってたというのに Genericsの型消去のせいで
new T()できないんだね ここまで進化が遅いと既存資産だけJavaで新規は別言語で、ってやったほうがいい
.NET 5からJavaクラス呼べるようになるから、もうそっちでいいや Javaから別の言語にトランスパイルして移行
とか現実的に可能だろうか 商用Javaは8まで
今後は進化のブランチが切られるだろう >>575
参照してるライブラリも全部ソースあるならあるいは >>578
csprojにjarのパス書くだけで使えるってさ 有料で配信してる動画を保存するスクリプト作るのってむずかしいです? >>560
kotlinバカは死んでいいよ。
Javaに出張ってくんなカス。 Java初心者質問スレでこぞってJavaこき下ろしててわろた MET10-J. compareTo() メソッドを実装する場合メソッドの一般契約に従う
https://www.jpcert.or.jp/m/java-rules/met10-j.html
こういうのがあるんだーねー
たしかに比較するときにequals使えば良いのかcompareTo使えば良いのか
迷うようなオブジェクトは嫌だわー 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で分岐しないとだめかな 初めまして。
割り込んですみません。突然なんですが、掲示板を利用している者が
アク禁で規制が掛けられた場合、自分で解く方法はないでしょうか?。 CとOCamlとHaskellを少しずつイジってJavaに来たけど妙に難しい
出てくる用語を調べて…サンプルコードと見比べながら理解して… 誤ってOracle jdkをダウンロードしてまだインストールしていないのですが、これは有償になるのでしょうか? Oracle JDKも開発・検証用途なら無償で使えるので
インストール=有料とはならない
本番環境で業務運用するときはライセンス契約が必要 何でほっと出来るんだろうな。
自分でライセンス読まないやつはそのうち痛い目に合うぞ。
後で嘘だとわかってもOracleは知ったことでないから遠慮なく金取るよ。 許諾される個人使用はもとより、インストールもしていない状況です
使うにしても個人の学習用でしかなかったのですが、万一ライセンスに抵触したらと不安になり、インストールせず削除しました >>595
ビギナーを過度に脅すJavaおじさん
仕事もできなさそうですね 仮に有料だとしても使う前に入力を求められるでしょ普通 仕事できなさそうってセリフは大抵仕事できない奴が吐くよな。 C#のLinqは拡張メソッドで自作のLinqメソッドを追加できますがJava stream apiで同じことをしたい場合はどうすればいいでしょうか できません
OreOreStream.from(stream).oreOreFunc()
みたいに独自の型にラップするしかない >>606
それはちょっと面倒ですね…
不格好だけどこれで妥協します
var ss = myFunc(s);
ss = myFunc2(ss);
ss = myFunc3(ss); >>605
拡張メソッドの考え方は異端だと思ったほうがいい。
スクリプト系だと当たり前のようにできる気もするけど、
OOPとしてはできないのが当たり前。 スクリプトのはオブジェクトを変更して後からメソッドを生やすから異端だけど
C#のやってることは単にmethod(obj, p1, p2, ...)の糖衣構文でしかないから別に異端と言うほどのことでもない 真面目にjavaってかプログラムに手をつけたばかりだけど、早く理解したい >>611
オブジェクト指向の話は理解できなくても、スルーして進めた方がいいよ。
強制的にコードがオブジェクト指向設計風になるのはJavaの欠点だから。 オブジェクト指向を否定してまでjavaを使うシチュはあまりないと思う
ライブラリの都合で他の言語を選べない時はあるのかもしれないけど 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のファイル場所の問題でしたが
場所を変えてもコンパイルできませんでした。
もし解決策分かれば教えてください!! >>614
Greeting.class
が存在していて読み取り専用になってるんじゃないかな Cドライブ直下に
my_source_code
というフォルダを作って、あとはそこでやる 適切なスレが判断出来ないので生きているここで質問させて下さい。
これからJavaを学ぶに当たりメモリ16G、i7 3770のPCでスペックは足りるでしょうか?
調べてもふわっとした解答やら幅があり判断しかねています。
そろそろ潮時とは思っているのですが、いざ新調する場合は別件でDTMと多少ゲームをするので、半端なものよりはある程度のスペックまで盛ろうと思っています。
宜しくお願いします。 Javaで〇〇を作りたい
じゃなくて、Java の勉強でしょ?
16G とか完全にオーバーキルだよ ふざけた感覚で書いただけだ
日本語おじさんやめてくれ DTM なら、CPU-i7 で保証期間は最大、メモリ最大(32, 64GB)まで積む
SSD は、256GB 以上。
128GB では、仮想OS では少なすぎる。
Windows・Linux 各50GB ずつで足りない
Windows 10 も、Docker が必要なので、プロ版にする。
プリインストールなら5千円ぐらいで、後で入れると高いかも 沢山のレス有難う御座います。
現状でもプログラミングには足りるようなので、DTMに合わせたスペックでじっくり考えたいと思います。
流石にDTMには余裕が無くなってきたので早めに買いたいんですけどね(チラ裏
>>623
後半全く知識がない部分なのでメモさせて頂きました。
皆さん有難う御座いました。 >>625
暇みたいだから付き合うけど質問者の俺が理解したから問題ない 614です。回答ありがとうございます。
classファイル、ファイル位置も含め色々とやってみましたが
javacできませんでした。。。
インストールからやり直してみたいと思います。
ありがとうございました! Javaを始めたばかりです
別クラス内の配列(要素数が数千ほどの整数)を使いたいのですが、どのように使ったら良いでしょう
1.ゲッターで毎回配列の先頭アドレスを得て値を取り出す(コストが大きいですか?
2.ゲッターで得た配列の先頭アドレスを、配列を使うクラスのポインタにコピーして、値を取り出す
3.ゲッターに配列のインデックスを渡して、要素を得る(安全?
検索をかけてもよく分からないため、一般的な方法を教えて下さいm(_ _)m >>629
1の方法でも大丈夫ですよコストが高いということはないです
あなたが先頭のアドレスと書いている通りJavaの配列はヒープ上に存在するオブジェクトであり参照を介してアクセスされます
メソッドの戻り値を受け取って他の配列(これも参照)に代入しても数千の要素がコピーされることはありません >>631
ありがとうございます!安心できました。 微妙な大きさですね
もう少し大きければRDBお勧めになるのに いまや GB オーダーのメモリ積むのが普通だから
整数数千なんて桁がいくつかあがっても余裕
ADVゲームなんかでも、文章をメモリに全のせ余裕
メモリ関連のボトルネックは大体がグラフィクス >>629
Javaを無理やりC言語風にしたいの?
getterメソッドがただの関数になっていて、オブジェクトに対して直接、参照するのは、Javaかどうかの話ではないぞ。 >>634
Javaの仕様、OSの仕様、ハードウェアの仕様で、数ギガバイトは大きな壁になる境界です。
すべてをメモリ上に読み込むのは、すぐに破綻する設計で初心者がよくやらかします。 CとJavaには値渡ししかない
C++とC#には値渡し・参照渡しの両方がある Javaをインストールしたパソコンでしか動かせないのに。そしてVM経由で遅いとのこと。
どうせWindowsしか使わないのに、多数存在するプログラム言語の中で、なぜJavaなのか。 職場のパソコンでは、Javaインストールされてないし、この言語を使えてもそれを活用できないしな。 セレブエンジニアのフリーエンジニア・クリエイターの小松和貴
Javaの学習だけはやめとけ!その先にあるものは・・絶望
https://www.youtube.com/watch?v=bH3XIIzZxoI
Java をやる会社は、スマホ・インターネット禁止だから、本で調べるw
また、ブラック企業で過労死・いじめられるから、うつ病になって一生終わる >>639
Javaはインストールしなくても使えるよ
最近はアプリに小さなJavaランタイムがバンドルされてるからね おまいら、すまないが助けてほしいのだか。。。
LINE notifyを使って自分のライングループに数文字程度のメッセージをテストで送りたい。
今、android studioでコードくんでるのだがうまくいかない。。。。【java】
もう、1weekぐらい悩んでる。。。。
サンプル的なサイト、コードないだろうか?
javaやりだしてまもないから、なんかC#とちがうな。。 >>644
AndroidはjavaともちょとちがうからAndroidスレ行った方が良いかも >>645
androidスレがいいのか。。。。
了解、サンクス。
いってみる。。 Android Studioを使ってAndroidアプリじゃないただのJavaのコードを書いてるのかと こういう質問する人はそもそもcurlで叩いてすら無さそう……
curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" -F "message=test" https://notify-api.line.me/api/notify
をやってみてそれが上手く行ったらJavaに入れてみようぜ >>636
ふーん、じゃあ具体的にどういうプログラムで、どういうOS、Java、ハードウェアの仕様で大きな壁になるの? あぁなんだ、GBオーダーのメインメモリを搭載してるPCが普通っていったのを、
この人は数ギガバイトレベルのメモリを使うのが大きな壁とかトンチンカンな事答えてるのか
ADVゲームの文章メモリ全部のせって書いたが、文庫本一冊全部メモリに載せても、数百KB 程度
Java の仕様上重複して文字列保持してたとしても、オーダーが全然違う
ましてや上の質問のは数字配列だぞ >>652
32ビットという意識すべき壁がある、メモリは無尽蔵ではないと初心者に指導すべき責任を感じろ。 メモリのオーダーの違いとボトルネック意識すれば、無尽蔵じゃないなんてわかりきってると思うんだが
32ビットに関しては何がいいたいかわからん >>656
32ビットだ、Javaを使ってればわかるだろ いや何が言いたいのかさっぱりわからんけど
まさか 32bit JRE のメモリが限られてるとかそのレベルの話をしてるじゃないよね そうはいってもインデックスはintでとってるの多かろう 配列インデックスが int でそれを 「32bit という壁」と表現してるのか?
配列のインデックスを Java の上限まで詰め込んだらって言うのはそれこそ桁の違う話
要素が 4byte だとしても、8GB になる
小説の文章や上の例の数値配列ではメモリ容量のオーダーが小さいという話をしてるのに、
なぜそんな何桁も違う話が出てくるのか
配列の要素数の上限(桁違い)を意識してプログラム組むなんてクソレアケースを、
Java 使ってるならわかってるだろみたいに言われても困る Oracleの社長が4GB超えたらデータ消えるのは仕様ですと言い放った有名な話 サーバーは64bitなのに対して
組込みIoTの大半は16bitや32bitだからかな? そろそろマイコンは組み込みから外れて独自のジャンルという気がする。 組み込みでメモリ容量が小さいことを意識する必要はあるのは分かるけど
それこそメモリの桁を意識してプログラム組むべきだしな
配列インデックスは無関係 めったに関係しなくても
そんな場所ないと思っても
膨大なプログラム中にたった一か所あると
もうプログラムは動かないんだ ちゃんと組まれてても32bitで動かなくなるというのはかなり大事な話ではなかろうか? 言ってることがメチャクチャだな
もうこれ以上説いても無駄なんじゃない? まあJavaがEMMやsegment方式やPAEみたいなおかしな方向に走らなかったことを
誉めておいてやろう。 初心者です、知識無し一人で導入からコンパイルまでできたので褒めて下さい >>671
今から Java はマジでおすすめしないぞ
入門用にしても別の言語選びなさい
該当分野に過去の遺産があって仕方なく Java 使うしか無い場合以外ではやめとけ >>673
おすすめの言語を教えて下さい。
Robert Sedgewick and Kevin Wayne著『Algorithms 4th Edition』では使用言語がJavaです。
非常にスッキリ書けて良い言語だと思ったのですが、どこがまずいんですか? >>673
apache poi は Java で記述されているのみなんですが、誰か C++ とかに移植してくれませんか? OLE2 とかわけがわかんなくって‥‥ >>674
分野による
最近の AI 関連のライブラリ とかは Python が多いし
デスクトップアプリ作りたいなら、C# とか、Electron (js) とか(デスクトップアプリは言語より、GUIライブラリ見て決めたほうが良い/軽快に動作するアプリが何を使ってるか調べる)
科学技術関連の計算(物理シミュレーション)とかなら、C/C++ や Python が多い(細分化してるので、専門分野で主流の言語を調べる)
Web 系なら、Javascript が必須
Algorithms 4th Edition ってのは読んだこと無いが、レビュー見ると Java であることに文句言ってる人もいる
古い本だから Java 使ってるだけじゃないの
10 年経てば、かなり進化するよこの分野
Java をスッキリ書けて良い言語ってのは他の言語知らないから言えることで、Java はそれ以降の言語と比較してかなり冗長
かつ、歴史がそこそこ長いので、レガシーな仕様と最近の仕様で2通りにも3通りにもやり方があったりして、
どれが最新で適切な方法なのかいちいち調べる必要があり、初心者は混乱すると思う
他の言語にも少なからずそういう点はあるけど、Java は顕著
標準ライブラリの中にスペルミスがあるけど、互換性のためにそのままになってるのは有名な話
あとは、OSネイティブの機能にアクセスしづらい
別に必要ないと思うかもしれないが、今はいろんな言語でいろんなライブラリが書かれてるので、多言語で書かれたプロセスへのアクセスが不便なのは結構問題になることが多い
Windows API とかも叩こうと思えば叩けるけど、かなり面倒な手順が必要
良い点は、過去の遺産(ライブラリ)がたくさんあることだから、それを利用しなければいけない状況やメンテが必要なら使わざるを得ないが
今から新しくプログラミングを勉強する人が、はじめて学ぶ言語として Java というのは現在はもう不適切
C/C++ とかは、Java よりも歴史が古く複雑化してるけど、こちらはまた話が別で、勉強する価値はあると思う
機械語に近い内容が学べるので Robert SedgewickのAlgorithm本は今も多くのCSコースで使われてる超有名教科書やぞ
元々はC++だったもの
Javaにこだわる必要もないが
あの本を真面目にやりきるレベルの人間ならJavaから始めても別にいいよ >>677
よくもまあ、そんなにどうでもいいことを書けるね。 javaでコンパイルしたことを褒められにきたのに別言語オススメされているこれは一体
java含めて一度調べなおしてきますね
後ARで仕事探すならどの言語が有利ですか?JS? すいません、寝惚けて変なレスしてしまいました
普通にスレ違ですね >>677 の知識の薄っぺらさは雑誌の編集者か何かか?
ライブラリの話をこのスレで持ち出すのはよくわからない。
PythonはJava以上にハードウェアから離れた存在なんだから。 YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる
アラフォー大逆転プログラマー たけ
【Rails】(送信時のリロード無し!)Action CableでSlack風チャットアプリを作成
https://www.youtube.com/watch?v=o6PuxDr8Meg
プログラミングを始めて半年で、Java からRuby へ移って、
こういうのを作って発表する怪物もいる
この人は、数学の博士課程まで行ってた人。
地頭さえ良ければ、Ruby on Rails 1年で、他言語の10年ぐらいの実力がつく 言語障壁で守られた業界だから、どんどん判りづらくして保身を図らないといけない
英語通訳なんかと違うのは、言語の仕様をどんどん変更して年寄りをついていけなくできること
Javaの文法は、「山田家の山田太郎さんに山田太郎の名刺をもらった」みたいにムダが多すぎる
「山田太郎さんに名刺をもらった」で済む話 >>687
書く側としては前者はだるいが
読む側としては不確定要素がなくてありがたい
貰ったのは誰の名刺?山田太郎ってどの山田太郎?ってな認識のズレが起こらないから
不都合なミスが置きにくい
大規模開発に向くわけだよね 保守開発とか運用するならJavaが楽っちゃ楽なんだよなー
新規開発では触りたくない >>677
ありがとうございました。
Algorithms 4th EditionでJavaが採用されたのは、著者らがやはりデータ構造を記述する上で良い言語だと思ったからだと思います。
C言語を少し知っている状態で勉強していますが、データ構造とアルゴリズムのプログラムでのジェネリクス使用には感動しました。 >>690
Javaはまだ無料だった頃、絶大な人気だったってだけだよ。
仕事で使う時にお布施しないと訴えられるかもってなったから、みんな逃げちゃって・・・。
オープンソースのJavaもあるけど、色々しがらみあるっぽい。
似た文法でC#が仕事で使うにも大人数になったり大儲けしたら払ってねとか、クラウド鯖にAzure使ってねとか、そう言う無料の意図が見えて安心かな。
データ構造やアルゴリズムならHaskellが一番美しい言語だけど、関数型言語だからね・・・。
需要が無いんだ・・・。
Haskell -> オブジェクト指向言語が学習曲線緩やかで良いと思うんだが。 Javaが無料だった頃?
いまでもJavaは無料ですよ
あやふやな理解でJavaが有料になったみたいな嘘を撒き散らすのやめてくださいね >>692
正解はどうなのか知りたい
OracleのJDKだけ有料になったみたいな感じ? Javaは昔から無料だったし有料でもあった
昔からSun/Oracleとのサポート契約は有料だった
そして有料契約ではJavaの一部の高度機能を使うことができた
昔は有料だと機能アップ&サポート付きだった
Oracleは無償版をOpenJDKに移管することにした
このとき有料だった機能も無料のOpenJDKで使えるようにした
現在では有料サポート契約ができるOracleJDKと無料のOracle OpenJDKの2つがある
実際はIBMやマイクロソフトなどが支援している無数のOpenJDKが存在するが
Oracle自身がOracle OpenJDKを提供していることに注目してくれ
OracleはOracle OpenJDKとOracle JDKには機能差・性能差はないと明言している
違いはサポート契約だけだと 昔は有料だった高度な機能がOpenJDKに移管されたことで無料で使えるようになったのだから
むしろ「有料だったJavaが無料になった」と言ってもいいくらいなんだよ >>691
haskell より前に偉大なる lisp 様がいるというのに、その lisp 様を差し置いて haskell を従容するとは、恥知らずですね‥‥ Java Mission Controlも昔は有料だったけど無料化されたよねーいい時代になったわー Oracle JDKとOpenJDKの一番重要な違いはアップデートを入手できるバージョンとその間隔
有償サポートを全く受けない場合は現行バージョンが6ヶ月でサポート切れになり
それ以降はセキュリティアップデートも入手できない
Javaの主戦場の業務アプリだと
6ヶ月ごとのバージョンアップにキャッチアップしていくのは非現実的なので
事実上何かしらの有償サポートを受けることが必須になってる
ただOracleJDK+Oracleのサポートである必要はなく
IBMやRedHatなど有償サポートを提供しているベンダーとその指定JDKを選択可能 >>699
おしい
それはOracleJDKとOpenJDKの違いではなくOracleJDKとOracle OpenJDKの違いだよ
他のOpenJDKディストリビューションではJava8やJava11をLTSと位置付けていてセキュリティアップデートが手に入る
いまは11.0.8まで来た
有料でないと長期サポートが得られないなんてことはないから安心してね
ちなみに俺のお気に入りはLibericaJDKとAdoptOpenJDK
Oracle OpenJDKは使ってない
無料とはいえOracleのユーザーアカウント作らないとダウンロードできなきのが面倒でね オラクルアカウントを作るのが面倒などというやつは、製品マニュアルの存在も知らないんだろうな。 マニュアルだけなら完全有償製品のものでもアカウント無しで見られるだろ。
KROWNとかになると無理だけどさ。 openjdkでもマイクラ動いた
もうオラクルさんいらない オラクルなくなったらopenjdkはどうなるのかと オラクルが無くなったときに起きることとして考えられる最悪のケースは、
オラクルの死の間際に特許がパテントトロールに売却され、
オリジナルから改変されてJavaとしての正式なライセンスを受けていない非公式なOpenJDKのフォークに対して特許訴訟を起こされること
今はそういうのはグレーとして黙認されてるけど、特許訴訟のリスクがあるんだよね >>694
oracle databaseと同じで個人のPCで勉強に使う程度なら無料でいいけど
公開したり業務で使うなら金払ってねってことだよな? >>709
ちがうよ
公開したり業務で使うなら有償サポート付きのOracleJDKか、無料で使い続けられるOpenJDKどちらかを選択してね
OracleJDKに無断で業務利用はしないでねってことだよ OpenJDKを業務で使ってもいいよ
ただし各バージョンがセキュリティーアップデートを保証する期間は昔より短いから定期的にJavaをメジャーアップデートしないと危ないよ
入れ換えの度にテストを頑張るか、多少止まっても困らない業務で使ってね
日本だと品質神話を妄執していて些細な不具合でも執拗に責め立てられるから後者は難しいだろうけどね
ディストリビューションを使えばサポート期間は長くなるよ >>711
それもちがうよ
セキュリティアップデートが短いのはOracle OpenJDK固有の話だよ
他のAdoptOpenJDKやLibericaJDKは8/11をLTSと位置付けていてOracleJDKよりも長い期間アップデートを提供すると表明しているよ
OpenJDKすべてがサポートが短いというのはよくある勘違い >>710
ちがうよ
OrackeJDKは商用か非商用かを問わず開発に使うだけなら無償、運用したら有償
個人的なエロ画像収集ツールであっても、作ったものを実際に自慰行為のために使ったらアウト OpenJDK8はFXが別だからいつまでも存続させる価値があるのかどうか。
さっさと11に移行してしまえばいいのに。 >>713
個人的なエロ画像収集ツールをOracleJDKで動かしてもいいよ
それは有償サポート契約を結ぶ必要ないケース AdoptOpenJdkはオラクルのJDKベースだよね?
オラクルが無くなったら全てのOpenJDKは使えなくなるんじゃ? >>709
Oracle DatabaseだってExpressは無料で商用できて、JDK8もサポートがいらないなら、無料。 >>721
すぅ・・・(息を吸う音)
、えっ???
もう参照渡しとは言わせない
https://qiita.com/mdstoy/items/2ef4ada6f88341466783
↑少なくともこの人は2つ目のコードで自分が何やってるか分かってないよね >>721
ポインタを操作してるわけじゃなく
参照先の値をコピッてるだけっていうのが
javaしかやってない人には分かりづらいんだろうな プリミティブは値だけ飛んできてObjectはそのまんま飛んでくるって覚え方してるんだけどなんか不味いケースあったりしますか? ・メソッドの仮引数aのメンバーを書き換えれば呼び出し元にも結果が反映される
・メソッドの仮引数aに別のインスタンスを代入しても呼び出し元は影響を受けない(実引数は影響を受けない)
これがJavaとCの値渡しね
C++とC#には参照渡しがあって仮引数aへのインスタンス代入が呼び出し元の実引数に反映される
というか実引数=仮引数になってる
たとえば引数で結果を受け取りたいときJavaでは引数の型をIntegerにしてもダメ
メソッド内で仮引数に新しいIntegerを代入しても呼び出し元には反映されないからね
Javaの場合はInteger配列やIntegerフィールドを持つインスタンスを渡して要素としてのIntegerを書き換えるしかない
C++やC#で参照渡しを使えば結果を受け取る引数に直接Integerが使える あー仮引数に別のインスタンスを代入するケースはこの覚え方じゃよろしくないですね
理解できましたありがとうございます cはポインタあるしjavaはポインタ経由でシステムメモリを外部に転送するときしか困らんから気にしなくていいけどね。
ポインタ扱うときも既に配列とNIOでやってるし。Unsafe封印されたし。
shenandoahとZGCはいいぞ!IDEが早いぞ!メモリ食うけど。 本で勉強する場合、さいつよの参考書はスッキリJavaですか? >>729
Javaで何をつくりたいかだなあ
この本の作りは小さいシステム向け
Javaがよく使われている大規模プログラミング
だと話が相当ずれている >>729
そうです
初学者は網羅的に簡便なコードで学ぶべきですから
すっきりが割とさいつよだと思います ありがとうございました
Progateもやってみたんですがあまり記憶に残らないんですよね… プログラム書きながら設計してるとごっちゃになるので、そろそろ設計をちゃんと学びたいのですが、デザインパターンの本を買えば事足りますか?
クラス設計の時点でつまずいてます。 いいえ
デザインパターンはオブジェクト指向の機能を使ったハックのテクニック集であり、モデリングの参考にはなりません
エリックエヴァンスのドメイン駆動設計とか読みましょう 分かりやすくありがとうございました。
その本も含めてモデリングについて勉強してみます。 >>735
クラス図は設計ではなくて、クラスをただ書いたものです。 >>736
フローチャートやUMLも全くと言っていいほどわからないので勉強しないといけないですね。
自分の中では要件から必要なクラスを割り出すようなところでつまずいている感があったので、まずはここをどうにかしようと思ったわけです。
それ以前の問題もありそうですが…
またこれ以降も、オブジェクト指向の機能をどう効果的に使うか、というのがいまいちわかってないので、それについても勉強する必要があると思っています。 コードなりなんなりを眺めていると、念力により、その内部にナントカmanagerというものが埋まっていることに気付く
念力でも法力でも思考力でも何でもいいが、その発見能力もしくはひらめきを身につける方法論が書かれた(もしくは謳われた)本は存在してない
どの教科書でもすみっこに小さく「ここではこのようなことを自動で思い付く」と書かれてるに等しい
それをやる具体的方法やトレーニング法は、実際のところ存在しない
『それ』とは、書いてる通りの『必要なクラスを割り出す』だ
実は、大抵の書籍は後から他人を納得させるための事後的な説明体系の提供をしているだけで、
そもそもなんでこのようなものを発見できるのかの脳の動かし方自体は書かれてない ここにこういうものを存在させるとシステム全体の辻褄が合う、という思考方式なので、
見い出す・発見する・割り出すと言うよりは、勝手に自動的にテキトーに思い付いたり考え付いたりねじ込んだりひらめいたりする類のもの
つまり、元々存在していたものではなく、わたくしがその場の思い付きで存在させるもの
発想の飛躍があるので、ロジカルに考えることは出来ないし、何かの手順に従って考えることも出来ない
数学の証明でも似たようなものがあり、「ここに補助線を引くとラクになります」などとなるが、
その補助線がどっから出てきたかは不明
なので解答の冒頭には実は「ここでこういう補助線をひらめきます」と小さく注釈されてる
例によって、どうやってひらめくかは数学や算数の教科書には一切書かれてない
そして、例題の解説では、なぜかそれが発見された大前提で話が進んでいる
最初の一歩や根本的なモノをひらめく能力は、日本の教育では教えられてないか、伏せられている >>739
たしかに抽出はどちらかというと直感的な作業なのかもしれませんね。
ある程度はできますが例えば、クラスに関わる情報をそれ自体をインスタンスにして内包するのか、フィールドにするのかとか、いつ継承を使うと便利で安全なのかとか、単一責任の粒度とか、選択に対する理由が欲しいときが往々にしてあります。
そのあたりのベストな考え方を発見しながら先人達の道をなぞるのも、コアな勉強としてはおもしろいと思います。
しかしながら、定石化、常套手段になっているものは知っておいて損はないのかなとも思います。
また時間がかかりすぎてプログラミングから離れそうなので、面白いうちにとりあえず先に進みたいという個人的なわがままもあります。 JAVA8の機能のstremやラムダ式の勉強をしています。
List<Map<String,String> > のデータがあった場合に
Mapの特定のキーの値のみをList<String>に代入したい場合どのように記述すればよいのか教えてください。 データ.stream()
.map(m -> m.get(特定のキー))
.filter(Objects::nonNull)
.collect(Collectors.toList()); >743
特定のKeyの値を取得することができました。
ありがとうございます。 例外処理try catchブロックについてです。
次のコード:
public static void main(String[] args){
int a = 6;
try {
a = a / 0; // 0除算
} catch (Exception e) {
System.out.println("例外発生");
} catch (ArithmeticException e) {
System.out.println("0除算エラー");
}
}
次のようなエラーが出ちゃいました。
Unreachable catch block for ArithmeticException.
達成できないArithmeticExceptionのcatchブロック。
It is already handled by the catch block for Exception
それはExceptionのcatchブロックですでに使われている。
catchブロックはこのように使えませんか?
私は何を間違えたのでしょうか。 順序。
ArithmeticExceptionクラスははExceptionクラスをを継承しているのでExceptionクラスでもある。
こういうcatchは派生クラスほど先に書かないといけない。 >>746
助言くださったとおりにして解決しました。
的確な助言に感謝致します。蟻が十御座いました。 数字の大小比較をするために、String型で取得した14桁の数字のデータをint型に変換したい
str = string型で取得した数字;
int num = Integer.parseInt(str);
もしくは
int num = Integer.valueOf(str);
型変換の方法はこの2つだと思ってるんだけど、どちらで書いてみてもこの型変換が実行できずエラーになってしまう
コンパイルエラーがある訳ではない
取得したデータに数字以外が入っていないことは確認済み
原因として何が考えられるでしょう・・・ そもそも大小比較ならcompareToでいいのでは >>749
うわーそれか!!!
最大値最小値があることすっかり忘れてた・・・
ありがとうございます
compareToで数字を比較するのは何となく敬遠してました・・・
(理由は本当に何となく)
比較する数字の桁が同じであれば数字同士でも問題なく比較できるという認識で合ってますかね? 問題ないかどうかはお前が判断することだ
Integer.parseIntならお前の意図どおりに動く根拠はあるのか?
何となくではなく仕様を理解して自分の頭で判断しろ 桁が同じで正の整数なら同等の比較が可能だけど仕様変更に弱いのでおすすめしない
「数字の大小比較をする」という意図の処理なら数値に変換した方が意図も明確になって良い それとvalueOfはオブジェクトを返すメソッドなのでparseLongを使おう String.split(String, int)はintに-1を設定すると空文字も吐いてくれるようになりますが、
ドキュメントにも載ってないし、何でそうなるのか謎です。これってそう言う慣例みたいなのがあるんでしょうか? >>760
0以外なら空文字も吐いてくれると思うよ。
0の場合に末尾の空文字が出力されないことはドキュメントにも書いてある >>763
ありがとうございます!
確かに書いてありました
概略だけ読んでドキュメント読んだ気になってました、ごめんなさい Androidのスマホアプリ作ってみたいんだけどネットで調べると今からはじめるならKotlinがオススメって出てくる
でも書籍なんかは明らかにJavaが充実してる
やっぱりJavaからはじめた方がいいかな?
プログラミングは大学でC言語をそこそこ使っててJavaも少しはやったことあるレベルです 非同期処理での誤動作について質問です。
"Java" 自体とはあまり関係ない質問かもしれません。
---
4コア8スレッドのCPU
コア A、B、C、D
スレッド 1, 2, 3, 4, 5. 6. 7, 8
コア A はスレッド 1, 2 を担当
コア B はスレッド 3, 4 を担当
コア C はスレッド 5, 6 を担当
コア D はスレッド 7, 8 を担当
---
//スレッド1の処理
vlatile int a = 1;
a++;
「スレッド 2以外が a に絶対アクセスしないと仮定」すると、参照整合性は保たれますか?
---
※ 仮定です。Java でスレッドを直接指定してアクセスをブロックするのが無理なことは知っています
※ この質問には過剰な設定ですが、他にも質問があります
※ Java では、通常の方法でスレッドを直接指定できないことは知っています >>766
Java は、チーム作業したときの成果物の品質を保証するために、現在の流行りの言語に比べて相当冗長な言語仕様になっています。
Kotlin やるなら、結局 Java も勉強することにはなると思うけど、書いて試して勉強するなら、Java はやめたほうが良い。 ちなみに、 Kotlin ができれば、Java は普通に読めると思うよ。
この文法って Kotlin でいうところの何?みたいな感じで、同じ JVM 上で動く言語なので、概念的にはほとんど共通してる。
(※ Kotlin は JavaScript とか native compile とかもある)
たまにわからんことあるかもしれんけど、大抵は対応表(チートシート)なり手元に置いておけばすぐわかる。
---
public static void main(String[] args)
こういうの、Java書いてたら、空で覚えて書けるんだけど、書ける意味も価値も今はもうほぼ無い。
こういう無駄な記憶に学習リソースを使わないほうが良い。
勉強は、今なら動画教材が充実してるから、それ使うと良いと思う。
Youtube に Kotlin の良い動画あるかは知らないけど、Udemy ってサイトは知っておくと良いよ(有料だけど質は高い、英語できたほうがいい)。
こういうのはじめに知ってるか知らないかで学習効率が相当変わってくる。 >>767
a++は
1. aの値を取得
2. 取得した値をインクリメント
3. インクリメントされた値をaに格納
の処理が行われるのでその間に別のスレッドが割り込む可能性があって
スレッド1とスレッド2で同じ値を参照する可能性はあると思う >>770
ありがつございます。
a++ が非アトミック操作なのは前提として、
「同じコアの別スレッド」って、スレッドセーフ(特に可視性)を考えた場合どうなるのかなと思いまして。
ハードウェアに詳しくないので、この「同じコアの別スレッド」という表現が正しいのかどうかすらわかってないですが。 >>771
スレッドごとにキャッシュはあるだろうけど
volatileなのでセットされた値の可視性は保証されると思う >>771
同じコアの別スレッド・・・ハイパースレッディング(SMT)のことか
SMTはパイプライン処理によって複数スレッドを同時に処理していくことで並列に見える
けど実際の演算器自体は1つで2つのスレッドが同じ処理を同時におこなうことはできない
だから大丈夫かも(昔は)
最近はSMTも改善されてパイプラインのボトルネックになる箇所の演算器を2つ持つようになっているらしい
1コア2スレッドならともかく2コア4スレッド以上になるとスレッドが同じコアに割り当てられる保証もないので考えてもしょうがないよ >>772
>>773
ありがとうございます
勉強になりました tomcatで動くwebアプリをJava+Jsp+Eclipseで開発してます。
*動作はローカルの画像ファイルをサーバーにアップロードする。
*アップロード完了すると、画面にURLのリンクが表示
*クリックで画像表示
今、下記の現象で困ってます。
*アップロード後、画面でURLリンクをクリックしても、リンクエラー404の表示がされます。
*サーバー(windows)の所定の位置への画像ファイルアップロードは確認。
Eclipseのプロジェクトでリフレッシュすると画面からのURLリンクで表示はできるようになります。
Java側でファイル処理をした後に何かしなくてはいけないのでしょうか?
すみませんが、この解決方法を教えていただけますようお願いいたします。 Software Design 12月号の特集は、Docker, AWS だけど、
AWS の構成図を見ると、典型的なVPC・仮想ネットワーク空間内を、
いくつかのサブネットに分けている
その内、インターネットに公開されているのは、public subnet だけ。
そこには、ロードバランサーがある
ロードバランサーから、private subnet内にある、EC2・仮想マシンへ振り分ける。
このサブネットをDMZ(DeMilitarized Zone=非武装地帯)と呼ぶ。
privateだけど、publicへつながる部分
EC2から、(DMZではない)private subnet内にある、データベースのAurora へつながる
つまりプライベートには、普通のものと、DMZの2種類あるが、
どちらも安全性のため、インターネットにつながっていない VScodeでhello worldまではいったけど、マジで意味がわからんな
スマホアプリ作れたら面白いなと思って軽い気持ちで始めようとしたがもう挫折しそう スマホアプリ作りたいならVSCodeではなくAndroid Studioから始めたほうがいい アップデートでgradleエラーでまくって挫折の未来しかなさそう スマホアプリを作りたい初心者はmacとiPhone買えばよい VSCodeて、エディタとしては大仰だしIDEとしては足りてないしで、Eclipseの方がマシじゃねえかとすら思えるのだが >>784
専用・汎用の対象が違う
あなた、専用=Java用、汎用=他プログラミング言語にも対応って考えてeclipseが汎用って言ってるんでしょ?
この文脈では汎用=純粋なテキストエディタ、専用=プログラミング用エディタ(IDE)だよ
だからeclipseは専用に分類される
俺もプログラミング学びたい人にVSCodeを勧めたりはしないな
プラグインの種類が多くて環境構築で躓きやすい気がする VSCodeとEclipseを比べてるのに"この文脈では"て・・・ つーかVSCodeが「汎用=純粋なテキストエディタ」とは思えんし、どちらにしても両方専用機か両方汎用機にしかならん ほんとにVSCodeとeclipseの違いが分かってないのか IDEはテキストエディタ、コンパイラ、デバッガなど開発に必要な機能を一つのアプリとしてまとめたもの
って感じだけどVSCodeにはそれらの機能があるから軽量なIDEと言っていいのではなかろうか eclipse程度のものをIDEと呼ぶんならVSCodeも十分にIDEだな Eclipseは、リファクタリングの機能とかコード生成の機能とか
型階層の機能とか呼び出し階層の機能とかあって割と高機能な部類だよ
VSCodeどころかVisualStudioでさえEclipseには勝てないよ でも Eclipse はバグだらけで動作も重いのでノーサンクス バグだらけなのは否定しないんだな
暫く使ってないんだけど、プラグインが不安定すぎて本体すら起動しないとかまだあんの? >>796
否定して欲しいのか?どうなんだ否定して欲しいか? あ? ちゃんとお願いできたら聞いてやってもいいけど? どうする? Eclipseを起動できなかったニワカが逆恨みしてるだけじゃねえかwww腹痛いwwwww俺を笑い殺させる気かwwwwwwwwww >>796
あるけどないよ
eclipseはユーザーがプラグインを追加すると不安定になったり起動しなくなったりするのでプラグイン追加は非推奨になったんだ
eclipseのバージョンごとにプラグインリポジトリ(ストア)が別れていて検証済みのプラグインしか使えないし
それさえも推奨されておらずJava用とかC++用とかあらかじめプラグインがバンドルされたパッケージを選択することが推奨されている
ユーザーがプラグインを追加しちゃいけない統合開発環境 これがeclipseなんだよね あとはeclipseではSubversionがまともに動かないとクソすぎてな
俺はIntelliJ IDEAに乗り換えたよ eclipse 以外の開発環境使ってみればすぐ分かるのに、なぜ他を試さないのか IntelliJだってwwwwハゲワロクソニワカじゃねえかwwww >>801
結局の所Ecilpseが一番なんだよねしみじみ そもそもいい歳こいてEclipse使ってる馬鹿って恥ずかしいよね……
あれって自分じゃろくにビルドもできない頭脳弱者のために作られたツールだよね VxWorks、NASAジェット推進研究所(JPL)の新たなミッション「インサイト」で火星へ
https://www.windriver.com/japan/web_magazine/blog/column92.html
VxWorksの開発環境はEclipseだから、Eclipseは宇宙に羽ばたいてるんだよ いつまでやってんだよ
こんなとこで煽り合ってるほうがよっぽど恥ずかしいわ mruby は、人工衛星に載った!
本も出た
Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11
宇宙開発などの組み込み用、Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応
Apache などのミドルウェアに組み込んで、拡張機能を作る。
ロジック・文字列処理は、C よりも、GC のあるmrubyでやった方が、安全性が高い netbeansが好きだったんだけどapacheに移って方向性が良くわからなくなってしまった 初心者スレで通ぶって煽り合ってる方がよっぽど頭脳弱者()なんじゃないですかね…… その物体は随所で迷惑を掛けまくってる既知外だから触れてはダメ
徹底的に無視 eclipseのjava.2020.06でJDKの15を使いたいんだが、プリファレンスからコンパイラ準拠レベルのプルダウンには1.4までしかない
15は対応してないのだろうか、もしくは追加する方法を知ってたら教えてください springbootでweb画面を開発しています。バリデーションのことで詰まってしまったので質問させてください。
1件の情報を編集する画面を開発しています。入力項目を定義したformクラスに@validatedアノテーションをつけてバリデーションをしようとしています。
ここで問題があるのですが、この画面では商品情報であったりユーザー情報であったりと属性(項目)の異なる情報を編集できるようにしなければいけません。その為submitされるformの項目が一定ではありません。商品であれば商品の商品項目のバリデーション、ユーザーであればユーザー項目のバリデーションをしたいです。
そう言った仕様を満たそうとした場合、@validatedは不向きでしょうか?フレームワークに頼らず地道にバリデーションを実装するしかないのでしょうか? Mavenのプロジェクトに既存のソースをインポートした時に、ビルドできずに入力補完も働かないのですが、どうしたら良いでしょうか? >>335
わかるわコピペでやると補完でバックスラッシュがまた増えてムカつくやつ とりあえず適当なWebサイト作りたいんだけど、javaサーブレットってやつで作った方が無難? 今時新規案件をサーブレットで書く人はいない
どうしてもJavaならSpringか
Railsも落ち目だし、Djangoもいまいち流行らない
PHPが主流か? Ruby on Rails が標準です
Rails 6 の本だけでも、数冊出てる。
他に、Railsガイド・Rails Tutorial もある
それ以外は、あまり使われていない WebサイトならHTML/CSSでいいんじゃないの?
Javaサーブレットだとか他フレームワークを気にするのはWebアプリを作りたくなってから カバレッジツールはともかく、JUnitの存在意義がわかりません。
なんなんですかアレ
自分でmain書いてプログラム流しても一緒じゃない >>823
誰かが想定していた限定された状況では、その誰かが思った通りには動いている
ということを確認することで安心するためのもの それはわかるんだけど
普通にテスト用プログラムでいいじゃない…
提供してくれる機能が少なすぎるよ JUnitに本当に価値がなければ流行らなかったよ
そういう風に言われて世の中のみんながバカなんだろ?ワシだけが真実を理解しとる!と思ったなら自分の見識の狭さや勘違いを疑うべきサイン もう10年も使ってきて思ったことだ
まともに答えやがれ 皆が安心するために必要
自分が安心するだけでいいならmainに書けばいい
ちなみにどちらにしても安心するだけの効果しかほぼないと思ってる あとでバグが出た時に、へんにテスト用プログラムとか使ってると
「テスト用プログラムには問題がない、なぜなら〇〇だから」と
いちいち説明せにゃならんくなるだろうな
それよかJUnitつかって、「テスト仕様的にJUnitでは検出できない問題ですがなにか」で
済む方が楽かと
JUnitでテストできないものは、CI/CDなんかでの自動テストで検出するもの >>828
まともに答えてほしいならまずまともな質問をすることだな
道理だろ
テストにしても対人にしてもGIGOなんだ
自分の中で凝り固まった結論が出ている人には、正しいインプットをしたところで何も伝わらない >>827
それは帰納的推理です
帰納的推理は外れることがあります
日本人は刀を何百年も腰にぶら下げてましたけど
ただの野蛮人でしたよね >>823
外国人は基本的にテストが面倒でやりたくないと思っている。
だからテストをちゃんとやっていると思わせるツールを作った。
テストドライバの半自動生成と、生成されたテストドライバを動かして可視化されたレポートを出力することで、よくわかっていない人を納得させることに成功した。 アメリカ人は自動、オートマティックという言葉が大好きだが、実際はこれで自動なのかという物ばかり。 テストってあくまでも正常確率を上げるためのものだから、リリース速度を上げる必要のある最近の開発ではそこまで重視せずにいいものって考えなのかも ユニットテストを最初から全部書くのは大変だよねー
そこまでやってもバグ出るときは出るし
私はバグが出てからテストコードを書くよ
2度と同じバグを出さない(デグレしない)ことを担保するのにユニットテストは便利
「聖闘士に同じバグは通じない!」 最近メトリクス解析ツールでいいのないですが
なんかどれももはや動かない… Bagという、データを加えることができ、Iterableインターフェイスを実装したクラスがあります。
このクラスをAbcという別のクラス内で使用しています。
Abcには、Abc(Abc a)というAbcクラスのオブジェクトをコピーするコンストラクターがあります。
このとき、Abc内のBagオブジェクトbに蓄えられたデータに対して、iterateしたときに、コピー元とコピー先のオブジェクトで
同じ結果が得られるようにするため、Bag内でどのようなデータ構造を使っているかの情報を使って、Abc(Abc a)というAbcクラスの
コンストラクターのコードを書くことはオブジェクト指向的にOKですか? 実装に依存してもいい状況なら別に構わないと思うが
抽象に依存させたいならCopyableでIterableなものを定義する try-catchで何も終了処理を書かなくても
Closableのcloseメソッドに発生した例外を自動で渡すようにJavaの仕様を変えてください。
トランザクション処理が死ぬほどめんどくさいです。 try-with-resourcesだとダメなの? rollbackのためにexceptionキャッチしないといけない
デフォルトrollbackにしたらcommitのあとrollbackしてすごいログがうっとうしかった 定型的な呼び出しのブロックを関数化して処理をラムダ式で渡したらきれいに書けそうな気がする コミットして良いフラグを立てるかThrowableをキャッチするしかないんじゃないかな
僕ならこうする
https://paiza.io/projects/JVylMfZi1uOk0tJ0S9x6OA 入出力が雑多すぎてラムダが使いにくい
構造体を定義する必要もなくスコープの外に複数の結果を戻せるtry-catchで書きたい 新明快Java入門やれば、どのくらいのレベルにまでなりますか? >>849
ピンキリだと思うぞ。
読むだけで何も理解しないまま終わったつもりになる奴もいれば、自分でコードを書いたり応用したりして本に書いてある以上のことを習得できる人もいる。 業務でJava使ったことないんですが、GOLD取得してたらやる気くらいの証明になりますかね?
残念ながら若い年齢ではないけど。 >>851
silver取らなきゃgold受けられないしやる気の証明はできるんじゃない? (うまい例かどうか心配なのですが)
車名とオプションをフィールドとして持つ車オブジェクトがあります。これを車名の重複を許さない Collecition に格納します。
(N-box, 自動運転)
(ハスラー, パワースライドドア)
ここで新規のオブジェクトについて、既に同じ車名が Collection に存在すれば、オプションの内容を確認して特定の条件を満たす場合だけエントリーを差し替えたいと考えています。
((ハスラー, 自動運転) のエントリーを既存エントリー(ハスラー, パワースライドドア) と置き換えるかどうかは、既存エントリーのオプションにより決まる)
オブジェクトの hashcode() と equals(Object) を車名フィールドで実装して Collection を Set とすることで 「車名の重複のないCollection」 を作ることはできました。特定の車名をもつ既存エントリーへの参照を取ってくるうまい方法はないでしょうか。contains(Object) が真になる Collection 内のオブジェクトへの参照を得る方法です。
です。
(実際には車名は単一のフィールドではなく、複数のオブジェクトとプリミティブ形配列の組み合わせです)
1. Collection を ArrayList<車> にして、重複回避は contains(Object) をつかって自前でやり、既存のエントリーを get( indexOf(新エントリー) ) で参照
2. Collection を Map<車,車> にして同じオブジェクトを key と value の両方で登録し、既存のエントリーを get(新エントリー) で参照
ていうのでできないことはないのですが、ちょっとカッコ悪い気がしまして。 引数に車オブジェクトを渡さないといけないけど
車名で車オブジェクトを得るなら
Map<String, 車>で車名 => 車のマップを作るとか >オブジェクトの hashcode() と equals(Object) を車名フィールドで実装
車名が同じならオプションが違っても同値なん?
> 車名は単一のフィールドではなく、複数のオブジェクトとプリミティブ形配列の組み合わせ
車名クラスでまとめ、hashCode()を実装、Map<車名,車>でget(車名) 車名をレコードとして定義すればequals()やhashCode()の実装は不要
SetはMapのkeyだけのコレクション(Set<Key>, Map<Key, Value>)
keyとして比較すべきじゃないオブジェクトを入れたSet<車>はよくない みなさま、レスありがとうございます。
>>856
おっしゃる通り Set.get(Object) があればいいのですが見当たりません。
>>859 の
> keyとして比較すべきじゃないオブジェクトを入れたSet<車>はよくない
がお作法なのですね。
>>857,858,859
実際には車名は単一のオブジェクトではないので、そこをクラスなりレコードとして定義して、Collection は Map とするのがアドバイスですね。
>>858
> 車名が同じならオプションが違っても同値なん?
車オブジェクトは車名が同じであれば同一として扱える場合が多いです。しかし車名の一致を equals(Object) でハンドリングするのがよろしくないのかもしれません。
仕事のプログラミングではないので、もう少しじっくり悩んでみます。 俺もMap<車名, 車>一択だと思うよ
車名より車種と例えるとより適切かな
車 has a 車種とすると冗長さも改善できる 凄い低次元の質問ですが、、、
皆さんタイピングって、ホームポジション通りにやっていますか?
今度、Javaを勉強する事になりました。
我流のなんちゃってブラインドタッチでも問題なかったのですが
{}等の記号を打ちなれていなくて。
タイピングを基本通りに直すべきでしょうか? >>863
ありがとうございます。
確かに慣れれば、記号は打ちやすそうな感じはしますね。 >>862
我流である程度精度とスピード出ているなら問題ないと思いますが、そうでないなら基本をマスターした上で自分に合ったやり方を見つけていくのが良いと思います。 基本はホームポジションでも
Shift押しながらとかだと我流になってしまってるな >>865
和文、英文共に人並み以上の速さです。
ただ小指はEnter位しか使っていないので、小指で記号を打つのには少し時間がかかりそうな気がします。 >>866
シフト押しながらのホームポジションってあるもんなのか
考えたことも無かったわ 我流でも指が楽に動くようならそれに越したことは無い
一般的に推奨されてるどの指でどのキーを打つかってやつは
指にかかる負荷や連続タイプ時の動きが考慮されてないから
参考程度にとどめておいたほうがいい これはもしやdvorakや中指シフトを布教してもいい流れ…?(ウズウズ >>868
ちょっと違うけど
ホームポジション右手で入力する文字の場合左手で左シフトとかかな >>872
なるほどな
初めて右シフトの存在意義を知ったわ JavaのGOLD持ってれば実務で組んでなくても何かしらの評価になりますかね?
他言語経験者でJavaの勉強しようと思うんだけど、ゴールをどういうところにもっていこうかと思ってる。 「JavaのGOLDを持っているんだな」
という評価になる
もしJavaのプログラミングを仕事にしたいのであれば
そういう求人のところに応募するしかない
雇う側はゼロから教えるつもりだから
知識があるかどうかは関係がない
ちょっと有利かもしれない Ruby on Rails なんて、1年の未経験者が10年以上のプロよりも、技術力が上!
WSL2, Linux, Node.js(Webpack, Babel), Docker Compose, CircleCI,
VSCode(Remote Container, Remote WSL)、データベース
さらに最近は、AWS Fargate, Terraform, React, Vue.js
一方、YouTube で有名な雑食系エンジニア・KENTA は、
SES系Java は何もしなくても良いって言ってるw
SIer が、IT土方奴隷を集めているだけだから
YouTube では、自社開発系RubyのKENTA vs SES系Javaのモローの戦い 黄金の知識をちゃんとコードに反映できるレベルなら
そこらへんの低能が書いたコードより遥かに綺麗になることは間違いない
ただ知識詰め込んで黄金取りましたっていうなら低能と一緒 20代までなら実務経験なくても多少評価高く見てもらえるんじゃない?
他言語の経験はあるみたいだしそこでの活躍次第でいくらでも上振れる
30代以上なら資格なくてもJavaの実務経験豊富な奴採るかな Javaの仕事したいわけじゃないんじゃないかな・・・だってJavaだよ Javaの仕事したくないのにgold取る意味が分からん
評価欲しいならその業務に適した資格があるだろ IBM HLアセンブラーの資格試験がありません。よくこれだけで30年食えたわ GOLDとっても若くないと取得しても意味がないかな
受験料安ければ自己研鑽でとってもいいんだけどなぁ
保有してる方はどういう理由で取得されたんですか? Javaでおすすめのparser libraryってありますか? >>884
何をパースするん? CSV? JSON? XML? 初心者だがファイル読み込みとは言わずパーサを欲しがる……
とするとSableCCみたいなパーサジェネレータが欲しいんだろ 総務省の全国地方公共団体コードを参照して
都道府県、市区町村、その他住所に分割したことならある
総務省|電子自治体|全国地方公共団体コード
https://www.soumu.go.jp/denshijiti/code.html 最後が32ページとかなってるがこいつらマジで印刷するつもりなのか、バカだろ
総務省はアホとバカのすくつか?
最高学府でエクセル印刷するバカを量産してんのか? HttpUrlConnectionを使ってサーバに対してPOST送信してるのですが、
送信データはBASE64文字列のため、「+」が含まれているとスペースに置き換わってしまいます。
これはJavaの仕様なのでしょうか?
何か回避策ありますかね?
// POSTデータ送信処理
try (OutputStream out = con.getOutputStream()) {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
writer.write("signature=" + signature);
writer.flush();
writer.close(); >>889
ただの大学出ってだけでなくて、東京一工早慶とかゴロゴロいそうなイメージ >>889
役所は紙に印刷して人の目で確認するって法律で決まってるって聞いた。
いまどきアホなことやってんなとは思うがw (Kyokumen)oの処理は何をしているのでしょうか
基本かと思うのですが
class Kyokumen implements Constants,Cloneable {
//中略
public boolean equals(Object o) {
Kyokumen k=(Kyokumen)o;
if (k==null) return false;
return equals(k);
}
//中略
} >>895
ObjectからKyokumenに型変換してる
てかなにこのひどいメソッド Java将棋のアルゴリズムという本からの抜粋です
ありがとうございました。 邪悪なコードに見えるけど、きっと抜粋元では型チェックしてるし、オーバーロードもprivateなんでしょう インスタンス同士の等価でしょ。
丸投げ判定
Ruby で言う、<=> 宇宙船演算子 1 equalsはObjectで受け取るのがお約束
2 次のステップでは適切な型かどうかチェックするのもセオリー
3 その後にようやくホントの比較をする
これをすっ飛ばすとセオリーだけがヘンにこびりついた謎コードが出来上がる
曰く「equalsではObjectで受けとれ」てな村の伝承で型チェックせず無条件にキャストしてる
でも局面と局面以外を比較するミスなんてそうそう起きないでしょコレ
昔からの惰性でキャストしてる ・キャスト知らない
・equalsの典型的な書き方知らない
将棋の本読んでる場合じゃねーぞ
Javaの教科書一通り読んだ方が早いゾ
基本と分かってて基本をやって無いんだからこの先幾度となくつっかかって読み通せなくなるのが目に見えてる たいてい、どの言語でも「Effective 何々」と言う本に書いてある
インスタンス同士の比較を定義しましょうとか、
インスタンス.to_string を定義しましょうとか >>902
違うじゃん
キャストが何なのか知らない、分からない、と書いてる なんでobjectで受け取ってるか理解してないガチ素人しかいなくてワロタw
回答側も初心者しかいなくてワロタw Object は基底クラスだから、
つまり、すべてのクラスを受け付けるように作っている >>899
RubyおじさんJava分かってないじゃん
インスタンス等価を評価したいならそもそもオーバーライドする必要がない
super.equals(k) と書いていない以上、Objectクラスのインスタンス等価の実装が呼ばれることはない
再起でスタックオーバーフローになってないならオーバーロードが省略されてると考えるのが妥当
ついでに言うと、equalsをオーバーロードするのは悪手もいいところ
ただしequalsのオーバーロードをprivateで書いた場合は直ちに実害はない(やりたいとは決して思わんけど) >>906
> equalsをオーバーロードするのは悪手もいいところ
これはどうしてなの? ルビーのおっさんは論外だからもうレスしないほうがいいぞ >>908
書くだけ無駄な上にミスを誘発する
特にオーバーロードだけ書いてオーバーライドを忘れるとMapなどでまともに動かなくなる
サブクラスを増やしたときもオーバーロード向けのオーバーライドがいちいち必要になって冗長だしこれまたミスを誘う
オーバーロード間で挙動に一貫性がなかったりするとこれまた分かりにくいバグを生む >>908
オーバーライドではなくオーバーロードだよ? 悪手に決まってんじゃん
元のコードを読み返してみて equals の中から equals が呼ばれてる
これがスタックオーバーフローしないのは equals(Kyokumen k) というオーバーロードが存在するからと推測できる
このようなオーバーロードをしてるとちょっとしたことでスタックオーバーフローしがち
だからやめようね 内側の隠蔽用途なら、適当に_つけるとかなんかすればいいしな。 >>911
キャストしてるからオーバーロードが成立するわけで再帰するわけじゃないっすよね
スタックオーバーフローにはならないですよね 間違って書いたとしてもスタックオーバーフローになるなら実装時に気づくと思うけどなあ
なんでダメなのかあまり説得力を感じなかった オーバーライド忘れてMapが動かなくなるのはオーバーライドがあろうがなかろうがそんなの当たり前じゃん
君たちの批判はすべて言いがかりレベルの些末なことだよ 僕はそんなミスをしたことがないんだよね、僕が優秀なだけなのかな
なんか優秀でごめんだけど、本当に意味がわからないんだよね ”君たち”じゃないから
くそみたいな低レベルな話してるのはおまえともう一人の奴だけだ
関係ないやつを巻き込むな >>918
君も含めて、意味がわからないんだよね
君がその代表です >>918
> equalsをオーバーロードするのは悪手もいいところ
これはどうしてなの? >>921
そうなんです
あなたは何も言ってないんです、だから意味がわからないんです
equalsをオーバーロードするのはあなたにとってどう? > public boolean equals(Object o) {
> Kyokumen k=(Kyokumen)o;
> if (k==null) return false;
> return equals(k);
> }
このメソッドはKyokumenでないオブジェクトが渡されたときに
実行時例外が投げられるけれども、実行時例外が投げられるからこそ
実装ミスに気づける良いコードとも言えるわけです Javaの標準ライブラリはジェネリクス使ってコンパイル時に型の間違いを検出できるようにするのが
理想なんでしょうけどね 頭悪そうだからわかってて言ってるのか知らんが
オバマロードの糞な点はメソッドの選択が動的ではないということだろ >>914
そりゃあちゃんと書いてれば再帰にはならないけどさ
equals(Kyokumen k) の型を間違えたり変更したりしただけで equals(Object o) がマッチしてしまう危険性がある
たとえば equals(KyokumenB k) にしてしまったりとか >>926
> オバマロードの糞な点はメソッドの選択が動的ではないということだろ
それはオーバーロードの説明であってクソなところの説明ではないよね
いまだにあなたは何も言ってない状況です、給料泥棒だよ >>927
型を間違えるっていうのはそれはもうバグなので
スタックオーバーフローでそれに気づけるので良いことですよね >それはオーバーロードの説明であってクソなところの説明ではないよね
動的でないメソッドの選択が実装者にとってとてつもなく糞で言語の欠陥って言ってるのが
わからないくらいアホなんだからレスつけるな低能 説明できなきゃ動的でないってレスもできないよなぁアホ
「私は低能だからわからないので教えてください」って言ったら説明してやるよ低能 >>932
私は低能だからわからないので教えてください ほんとド低能は低能すぎてしょうがないにゃぁ
オバマロードしたメソッドはコンパイルされた段階でどのメソッドが呼び出されるか既に確定してるんだよ
今回のように同じ型を引数に渡せるメソッドが2つあった場合Objectの方のメソッドしか絶対に呼ばれない
これが糞な理由だ
これでわからなかった諦めて入門書からやりなおせ低能 今回のようにとは言ったがオーバーロードしたメソッドがあるかは全くわからんけどな
そんなもん作っても呼ばれないんだから無意味だしないと考えるのが妥当 >>935
え、全然わかんないんだけど、何言ってるのこの人、ちゃんと説明してる?
> 今回のように同じ型を引数に渡せるメソッドが2つあった場合Objectの方のメソッドしか絶対に呼ばれない
実引数の型によるよね 疑問に思う前に手を動かせ糞初心者
ピーチクパーチク喚きやがって
あほ >>941
昔はそうだったってこと? いつのとき? Javaのバージョンは? あなたは手を動かして確認したのだよね?
バージョンいくつで確認したの? 初心者なんですけど ワッチョイ 4e10-lMMI の涙目敗走負けってことでいいんですか?? 逆
オバマロードが静的であることは事実だから
おまえの負け SpringBootでコンソールアプリケーションを作成したいんだけど
コマンドライン引数解析でいい感じのライブラリってある?
.NETでは↓こういうのがあってこれの類似品がJavaにあれば助かる
https://github.com/Cysharp/ConsoleAppFramework ApplicationRunner標準のApplicationArgumentsしか使ってないや >>944
バグりやすいからequalsのオーバーロードは避けたほうがいいのは間違いない
それ以外にも元のサンプルコードはいきなりキャストして
それからnullチェックとか意味がわからん >>948
nullのときfalseにしたいだけだと思うよ >>949
nullのときにfalseにするならキャスト前に o == null で十分
instanceof 使わずに強制キャスト試みるなら k も要らんな
equals((Kyokumen)o) でいいな
どうせテキトーなコードなんだから >>950
だよね
ググったら近畿大学理工学部で卒業研究が2つヒットした
該当箇所は2つともコメント含め全く同じだったから元ネタは別にありそう >>950
それはキャストしたあとにヌルチェックするのが不十分ということにはならんよね if分は三項演算子で十分と言ってるようなもので結局書き手の好みでしかないよ コストの差なんて誤差みたいなものだしキャストの前と後どちらでヌルチェックするかにこだわるのは時間の無駄だよ、それよりも将棋のアルゴリズムを考えたが良い たったこれだけのイディオムで書く書かない考えるまでもないだろ。
if (o == null || getClass() != o.getClass()) return false;
GoogleのAutoなんとかやIDEが勝手に追加してくれる。 >>955
一般的に同じクラスじゃないとequals() を真にしないほうがいいのでしょうか。
いままであまり考えずに insuranceOf() で子クラスも ok にしてました。 method(Object o)
というメソッドを呼び出す時、String型だろうがInteger型だろうが引数に渡すことができますが
method(List<Object> oList)
というメソッドに対してList<String>やList<Integer>を引数に渡す事ができないのはなぜでしょうか? >>957
仕様で禁止
仮にmethod(List<Object> oList)の中でoList.add("test")ってやってたら、List<Integer>を渡されたら困るでしょ
これができないのと同じこと
List<Object> objList;
List<Integer> intList = new ArrayList<>();
objList = intList; // コンパイルエラー
objList.add("数字じゃない"); >>956
実用上、どっちでもいいんじゃね。
その子クラスでもequals()を結局実装することになるだろうし、
そもそもデータクラスで継承使いたくないのもあるし。 JPAのhibernate.ddl-auto=updateって使ってる? 質問です
var stream = IntStream.range(0, 10).boxed();
このStreamから要素数を指定してグルーピングして
[0,1,2],[3,4,5],[7,8,9]
というStreamを得たいのですがどのようにデータを操作すれば良いですか?
Streamではこういうことできなかったりしますか? なぜ6が抜けてるのか...ミスだと仮定すると
Collection<List<Integer>> values = IntStream.range(0,10).boxed()
.collect(Collectors.groupingBy(i -> i / 3))
.values();
System.out.println(values);
実行結果
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] >>962
ありがとうございます!
6はミスなので気にしないで大丈夫です
collectはStreamが終わってしまうんですよね
[0,1,2]...をStreamで逐次に読み出したいんですせっかくのStreamなので
グルーピングの処理を逐次でできるといんですけど 無理なんですかね、.NETのLINQのGroupByもシーケンス全部を読み取るようですし
条件を指定した場合は要素を全部見ないといけないんでしょうけど
先頭から数件ごとにグルーピングする場合は理屈としてはシーケンシャルに
読み取れるはずなのでStreamでやれればと思ったんですけど、難しいですねこれ
いったん諦めます、もしわかったかたおられたら教えて欲しいです
私はRxJavaを試してみます >>964 すまんグルーピングじゃなくてただのwindowか...
RxJavaなら
Observable.range(0, 9).window(3).subscribe(....)
Streamだと今思いつかない。 >>965
すごいです!
>>966
ありがとうございます! Kotlin もよろしく
Kotlinだとこうなる
val values = (1..10).chunked(3)
println(values)
出力
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]] Kotlin使いてえ
来週会社に行ったらみんなJavaを書くのをやめてKotlinしか使ってない世界にならないかなあ
あ、転職すりゃいーのか >>968
chunkedが返すのは残念ながらList<List<T>> sequenceに変換してからchunkedを呼べばいいんじゃないの? >>971
Kotlin の場合は List のまま Java の Stream みたいに使えないか?
List のままでも特に困らないと思うんだが。何か問題ある? >>973
さあ。
Streamが書き易さのためだけにできたと思っているのなら。 >>973
Kotlin使いなのにまさかの初歩的質問だな
StreamとSequenceはパイプライン処理を抽象化したもので遅延評価される
振る舞いが違うし性能に差が出る
シーケンス図で説明できると早いんだが
1万件のリストを10回ずつmapとfilterして結果の先頭1件目を取り出す場合、リストなら必ず1万件全てに対して処理が走る
ストリームなら最初の1件目がお目当ての品だった場合、ストリームから後続の値が取り出されることすらなく処理が完了する そういう速さを求めるんだったら
そもそもJavaとかKotlinとか使わないと思う それってぼくは性能追求してないのでfor文で欲しいデータが見つかってもbreak全然書きませんって言ってるようなもんだ
Javaがよく使われる業務領域では社員数に応じてデータ量は増えるしRDBも絡む
小さなコレクションの基礎的な変形操作にしか活用してないならともかく、データの取り出し元がRDBだとか、繰り返し処理が全体に有意差を生むケースはいくらでも想定できる >>975
JavaのStreamってKotlinのSequenceと同じなの? >>978
同じではないよ
役割、使い所はほぼ重複している >>977
大部分のJavaプログラマはそういう理屈が分かっていないと思う >>975
なんで唐突に Sequence の話になっているのか? >>981
Kotlinならこう書けるというソースに対してList型なのが残念という流れだからStreamと併記しているんだよ
流れや文脈が理解できないアスペ的な人かな? 質問です
static finalのフィールドにHashMapをセットして
getしか行わない場合は、マルチスレッドで使用しても安全ですか?
↓こういうふうに、コードはイメージです
class Test {
private static final HashMap<String, String> map;
public Test() {
map = new HashMap<String, String>();
map.put("a", "A");
map.put("b", "B");
}
public String get(String key) {
return map.get(key);
}
} >>985
ダメです
コンストラクタではなくスタティックイニシャライザーで要素を追加してください >>986
ありがとうございます!
↓これなら良いですか? getはマルチスレッドでも安全ですか?
class Test {
private static final HashMap<String, String> map;
static {
map = new HashMap<String, String>();
map.put("a", "A");
map.put("b", "B");
}
public String get(String key) {
return map.get(key);
}
} valueがイミュータブルかどうかは無視していいの?
keyがイミュータブルでないってのはありえないだろうけど。 >>989
例の通りStringならね。
たとえば、Dateみたいなミュータブルだとどうなのって話。 >>987
たぶん安全だと思う
finalである時点で他スレッドからの即時の可視性も担保されてるはず
まあ思考を放棄してConcurrentHashMapを使ったほうが気が楽というのはある >>991
もちろん書き換えれば壊れるけど、質問者のレベルを察するに知りたいことはそこじゃないと思う >>991
それはConcurrentHashMap使っても無理でしょ
そのようなケースでは呼び出し側が読み取りから書き換えまでの範囲を排他するしかない Flow APIでPub/Sub処理作ってデバッグしてみたんだけど
eclipseもintellijも設定したブレイクポイントで止まってくれない
具体的にはSubscriberインターフェースを実装したクラスでpublishした時に呼ばれるonNextメソッドの部分
処理中にいくつかコンソール出力を仕込んであって途中までは呼び出されてるんだけどそこから先で止まってるっぽくてデバッグしたいんだけど
確認できてるコンソール出力処理より前にブレイクポイントを設定しても止まってくれない
Javaの標準クラスを経由して呼び出される独自のクラスはデバッグできないとか制約あったりするんだろうか? gradleでビルドしてるのだけどテストを除外してビルドするかんたんな方法はないの?
「テストを実行しない」ではなくテストコードそのものを生成物(jar)に入れたくないという意味で src/test 側に置いてたらソースセットの設定が効いてjarには入らないよ
jarに入る事故が起こってるのだとしたら多分スクリプトで余計なことしてる >>998
なるほどもともと入らないのか
知らなかった 100000000000000000000000000000000000000000000! このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 450日 23時間 1分 46秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。