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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/05/12(木) 05:18:33.40ID:nzHoBPh8
Java初心者のためのスレッドです。
0653デフォルトの名無しさん2016/10/01(土) 00:07:44.09ID:4GbhNNOQ
>>648
リンク先は日本語だよ
馴染みのフィールドの英語なんだからわかんだろ
そんな語力じゃドキュメントの質も知れてるけど
0654デフォルトの名無しさん2016/10/01(土) 00:19:49.10ID:kr3+PnGk
>>653 おまえらに聞かなくても一発OKだったわめんご
0655デフォルトの名無しさん2016/10/01(土) 00:20:36.03ID:kr3+PnGk
リンク先見るまでもねぇよ
めんご
0656デフォルトの名無しさん2016/10/01(土) 00:25:40.75ID:kr3+PnGk
まあでもたいしたことないのは事実だからいいんだけどな
0657デフォルトの名無しさん2016/10/01(土) 00:26:46.57ID:kr3+PnGk
はあ雑魚すぎてしにてぇ
06586472016/10/01(土) 01:55:19.16ID:hwPNFikt
>>652
ありがとうございます。
0659デフォルトの名無しさん2016/10/01(土) 03:59:04.06ID:j95ses3M
>>652
ガッ
0660デフォルトの名無しさん2016/10/01(土) 11:20:09.18ID:kr3+PnGk
ぬるぽの後ガッってノリ意味わかんねよ、ほんと2ちゃんってくそだな
0661デフォルトの名無しさん2016/10/01(土) 12:23:28.64ID:/eq2yH6H
>>660
お前はもういいよ
なに居座ってんだよ
06626582016/10/01(土) 13:55:48.38ID:hwPNFikt
>>652の方は、なにせヌルポインタエグゼプションって言葉で「ポインタ」って言ってるぐらいだしな、って続けたかったんでしょうね、きっと。
0663デフォルトの名無しさん2016/10/01(土) 14:49:04.18ID:JmoJwfEH
Sqlに文字をインサートする時、
iphoneやandroidの絵文字などがあった場合、エラーになってしまうので、
インサート前に取り除きたいのですが、
何か良い方法はありますか?(SQLで文字セットは変更できないので、Javaで絵文字だったら取り除きたい)
0664デフォルトの名無しさん2016/10/01(土) 15:50:36.99ID:onRosRXh
ASCII.jp:最強のJava入門書はどれか?(2016年秋)
http://ascii.jp/elem/000/001/227/1227746/

『プログラムはなぜ動くのか』『コンピュータはなぜ動くのか』の著者・矢沢久雄、
「たのしいRuby 第5版、2016」の著者・高橋征義らによる、討論会
0665デフォルトの名無しさん2016/10/01(土) 16:00:26.65ID:b1627Shz
>>661 これはあなたのスレなんですかね〜
0666デフォルトの名無しさん2016/10/01(土) 22:05:29.89ID:VDFFrXl+
突然すいません。質問なんですがpackageでaiueoと指定したクラスが2つあります、クラスの名前はAbcとDefで2つともコンパイルに成功してclassがdocumentsに保存されています。続く
0667デフォルトの名無しさん2016/10/01(土) 22:05:47.64ID:VDFFrXl+
続き、これを使ってMainクラスを作りたいのですがパッケージaiueoは存在しませんとなり、コンパイルに失敗してしまいます。
なにか手順に間違いがありますか?
どうかお答えいただけたらと思います。
0668デフォルトの名無しさん2016/10/01(土) 22:08:37.60ID:kr3+PnGk
>>667 パッケージした1行みせてみ
0669デフォルトの名無しさん2016/10/01(土) 22:09:11.74ID:kr3+PnGk
てかコードをレスに書いてくれなきゃ
0670デフォルトの名無しさん2016/10/01(土) 22:11:27.89ID:kr3+PnGk
メインクラスだけでもいいからみせて
0671デフォルトの名無しさん2016/10/01(土) 22:16:26.95ID:VDFFrXl+
>>668
反応いただきありがとうごさいます。
携帯からの書き込みで少し時間がかかります。すいません、ちなみにAbc Defともに最初の文はpackage aiueo; としております。
0672デフォルトの名無しさん2016/10/01(土) 22:19:17.06ID:r6T55aIp
思い切った名前だよね
NHK教育番組の案件かな
0673デフォルトの名無しさん2016/10/01(土) 22:22:52.24ID:kr3+PnGk
>>671 メインクラスはそのパッケージに属してる?
0674デフォルトの名無しさん2016/10/01(土) 22:25:32.77ID:kr3+PnGk
>>671 メインクラスにimport文書き忘れてるとかじゃない
0675デフォルトの名無しさん2016/10/01(土) 22:26:37.05ID:VDFFrXl+
import aiueo.Abc;
pubilc class Main{
public static void main(String[] args)
throws Exception{
Abc.zenhan();
Abc.kouhan();
aiueo.Def.mae();
aiueo.Def.usiro();
}
}
0676デフォルトの名無しさん2016/10/01(土) 22:27:21.37ID:VDFFrXl+
>>672
あくまで例でやっております、分かりづらくてすいません。
0677デフォルトの名無しさん2016/10/01(土) 22:29:26.04ID:VDFFrXl+
>>673
メインクラスにpackageは入れておりません。
0678デフォルトの名無しさん2016/10/01(土) 22:34:03.04ID:kr3+PnGk
>>675 気になったんだけどさ、Defもimportしたらいいんじゃないか、後、ABCクラスもそうなんだけど、インスタンスにしなきゃメソッドは動かないよ
0679デフォルトの名無しさん2016/10/01(土) 22:36:36.10ID:kr3+PnGk
例えば、Abc.zenhan();ね
Abc abc = new Abc();
abc.zenhan();
あーアイホォン打ちづらいw
0680デフォルトの名無しさん2016/10/01(土) 22:37:59.34ID:kr3+PnGk
あとthrows Exception これいらない
それで動くと思うよ
0681デフォルトの名無しさん2016/10/01(土) 22:40:51.22ID:VDFFrXl+
>>678
片方はimportして片方はしないでpackageを使えと言う課題なのでそれにしたがっていますが両方importした方がいいと言うのはその通りだと思います
0682デフォルトの名無しさん2016/10/01(土) 22:44:12.90ID:kr3+PnGk
>>681 学生さん?
0683デフォルトの名無しさん2016/10/01(土) 22:48:08.50ID:kr3+PnGk
クラスパスとかじゃないかなー
コンパイルエラーはそのままググればたくさん出てくると思うよ
0684デフォルトの名無しさん2016/10/01(土) 22:48:31.84ID:VDFFrXl+
>>679
察しが悪くてすいませんそれらの文はargs){
の後に入れればよろしいでしょうか?
0685デフォルトの名無しさん2016/10/01(土) 22:49:48.80ID:VDFFrXl+
>>682
すいません学生ではなく独学で勉強をしておりますが友人など聞ける相手がおりませんのでここで聞かせてもらっております涙
0686デフォルトの名無しさん2016/10/01(土) 22:52:12.08ID:kr3+PnGk
>>684 そうだよ
import aiueo.Abc;
pubilc class Main{
public static void main(String[] args)
throws Exception{
Abc abc = new Abc()
abc.zenhan();
abc.kouhan();
aiueo.Def.mae();
aiueo.Def.usiro();
}
}
0687デフォルトの名無しさん2016/10/01(土) 22:53:51.74ID:kr3+PnGk
>>685 真面目ですね、応援してます
0688デフォルトの名無しさん2016/10/01(土) 22:53:57.21ID:VDFFrXl+
>>683
調べ不足かもしれませんがなかなか理解できる内容のものがなくここでつまずいております...もしかしたらクラスパスとのことでしたがpackageの2つともはdocumentに入っているのですがdocumentを読み込んでいないと言う事でしょうか?
0689デフォルトの名無しさん2016/10/01(土) 22:58:06.17ID:kr3+PnGk
>>688 ドキュメントってWindowsの?
普通にフォルダの中にいれて、環境変数で登録でいいんじゃないかな
0690デフォルトの名無しさん2016/10/01(土) 22:59:59.19ID:VDFFrXl+
>>687
ありがとうございます。本当に嬉しいです
0691デフォルトの名無しさん2016/10/01(土) 23:00:52.76ID:VDFFrXl+
>>689
すいません osはmacのosXです
0692デフォルトの名無しさん2016/10/01(土) 23:01:27.27ID:kr3+PnGk
IDE使えないとかめんどくさいな
コンパイルの時はjavac aiueo.Abc aiueo.Def Main でやってみたらいい
0693デフォルトの名無しさん2016/10/01(土) 23:02:06.77ID:MIaIeT8n
ちなみに誰が出してる課題?
0694デフォルトの名無しさん2016/10/01(土) 23:02:28.95ID:kr3+PnGk
>>691 ならeclipse入れたほうが早いよ、その辺全部やってくれるからコード書くだけでいいし
0695デフォルトの名無しさん2016/10/01(土) 23:06:04.41ID:kr3+PnGk
>>681 課題という事はIDEダメなパターンか
てか独学って話と矛盾してるなー
最後は自分の力で解いたほうがいいと思うよヒントとしてMac クラスパスでググるのと、パッケージが見つかりませんでググってみそれで解ける問題だよ
0696デフォルトの名無しさん2016/10/01(土) 23:06:24.88ID:VDFFrXl+
>>693
課題は本から練習問題としてでております
0697デフォルトの名無しさん2016/10/01(土) 23:07:36.81ID:VDFFrXl+
>>694
今はターミナルでやっていたのでExlipseを試してみようと思います
0698デフォルトの名無しさん2016/10/01(土) 23:08:39.48ID:VDFFrXl+
>>695
すいません言い方が悪かったですね本はjava入門第二版を使っております。
0699デフォルトの名無しさん2016/10/01(土) 23:09:11.39ID:wXi+U7q2
>>663
DBの符号化方式でエンコードしてNGなら削除してしまえばいんじゃないかな
https://paiza.io/projects/qi1DzWG79KCNqIMTw5S92Q
0700デフォルトの名無しさん2016/10/01(土) 23:11:31.78ID:kr3+PnGk
>>697 それがいい
0701デフォルトの名無しさん2016/10/01(土) 23:15:06.37ID:MIaIeT8n
こんなことで詰まってると3日で飽きるからな
0702デフォルトの名無しさん2016/10/01(土) 23:21:57.93ID:VDFFrXl+
>>700
今日は本当にありがとうございました
0703デフォルトの名無しさん2016/10/01(土) 23:24:03.63ID:VDFFrXl+
>>701
恥ずかしながら全くもってその通りだと思います。才能が無い事は承知しておりますがこれからも精進させていただきます。
0704デフォルトの名無しさん2016/10/01(土) 23:29:35.31ID:kr3+PnGk
>>703 才能ないなんて簡単に決めるなよ
次の章のほうが大切だからそっからやったら前半の章は充分だろその知識使わないし
0705デフォルトの名無しさん2016/10/01(土) 23:59:22.65ID:fIXH2k8W
飽きさえしなければどうにでもなる
0706デフォルトの名無しさん2016/10/02(日) 08:36:31.88ID:v1qy4+iE
>>647
Java VMが管理しているアドレスだから概念は同じと思っていいが、CやC++みたいなアドレスとしてプログラムは作れない。
0707デフォルトの名無しさん2016/10/02(日) 08:40:13.37ID:v1qy4+iE
>>662
あいつは英語の一般的な意味のポインタがなんなのか知らないだけだろ。
0708デフォルトの名無しさん2016/10/02(日) 12:32:57.39ID:4o4y3Pue
>エグゼプション
には突っ込まんのか
0709デフォルトの名無しさん2016/10/02(日) 14:27:57.94ID:SUd5Exqx
インターフェイスのインスタンスは作れないと思ってんですが、こうするとインスタンス作ってるっぽくなるんですが、どういうことなんでしょうか?
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ

Runnable runnnable = new Runnable(){
public void run(){}
};
}
0710デフォルトの名無しさん2016/10/02(日) 14:38:32.13ID:O1+Xevaf
>>709
インタフェスを継承したクラス(匿名クラス)を定義して匿名クラスのインスタンスを作成してる
0711デフォルトの名無しさん2016/10/02(日) 14:44:40.68ID:SUd5Exqx
>>701
ありがとうございます。
確かに、MainClass.classとは別に、MainClass$1.classというクラスファイルが作られていました。
0712スッキリ厨2016/10/02(日) 14:58:44.60ID:mO5jHYyT
>>664
C++で、賞を取った、平山尚のセガ本が、2008年に出た。
この本の中で、C++・オブジェクト指向・ゲームプログラミングを、
1冊で説明できる本があれば、ベストセラーになるって、平山が言ってる

その後、2011年に、無名の著者2人による「スッキリJava」が出た。
C++では無理だったことを、Java・オブジェクト指向の説明で、1冊を仕上げた。
また、イラストをふんだんに使い、最初からコストを度外視して、本を作ったw

2011年を、オブジェクト指向のエポックと呼んで、
2011年を境に、スッキリ以前・スッキリ以後と呼ぶ

今では、C++・オブジェクト指向を学ぶ人も、この本から始めるという、道筋も作った

これは、林晴比古・柴田望洋・宮本信二・結城浩・高橋麻奈など、
大御所たちが成しえない偉業であった
0713デフォルトの名無しさん2016/10/02(日) 18:58:36.14ID:+XYb/4p3
俺のスレ
0714デフォルトの名無しさん2016/10/02(日) 19:16:33.86ID:+XYb/4p3
>>707
猟犬だよな
0715デフォルトの名無しさん2016/10/02(日) 19:20:04.24ID:+XYb/4p3
>>712
へー。そんな本が2011年に出ていたとは知らなかった。
0716デフォルトの名無しさん2016/10/02(日) 22:37:08.72ID:v1qy4+iE
>>712
C++自体がオブジェクト指向設計専用ではないために、C++プログラマが説明しても、学習する方からしたら実際には全然、オブジェクト指向プログラムでないものができて動くから理解が難しいんだよ。
0717デフォルトの名無しさん2016/10/04(火) 19:04:40.41ID:rJSgKoMJ
public static void main(String[] args) {
int i = 2;
System.out.println(1+i++);
}
が3になるのはなぜでしょうか?
0718デフォルトの名無しさん2016/10/04(火) 19:15:35.05ID:ksk/TL7I
表示されるときはまだ++まで辿り着いてないからかな
0719デフォルトの名無しさん2016/10/04(火) 19:18:07.09ID:WEyUe7wf
>>717
後置インクリメント演算子は処理が終わった後+1するから。
つまり1+i(この時点では2)の値を表示し、その後iは3になる。
もしiを1加算した結果を表示したいのなら++iを使う必要がある。
0720デフォルトの名無しさん2016/10/04(火) 19:34:21.50ID:rJSgKoMJ
>>719
ありがとうございます。
>処理が終わった後+1
という点ですが、どういう事が起きれば"処理が終わった"ということになるのでしょうか?
例えば、
int i = 2;
System.out.println((double)(i++));  //出力2
だと、自分の頭の中では、i++した後に、double型への変換という"処理が終わった"から3になっていて欲しいと考えてしまうんですが。
根本的に頭おかしかったらすみません・・・
0721デフォルトの名無しさん2016/10/04(火) 19:47:20.31ID:KPMHhtfC
スレチかもしれないけど
基本情報技術者のJavaってどこらへんまで理解してればいいの?

何問か解いたらコレクションやジェネリクスとかくらいまでだったから安心してたけど
他の年の見たらスレッドとか出てた...
0722デフォルトの名無しさん2016/10/04(火) 20:02:04.37ID:fCGdMFkh
基本情報・応用情報ともにJavaで受けたけど当時はPHPの経験のみでJavaの経験ほぼ皆無だったけど行けたぞ


そんなに意識するほどJavaだけに依存するような問題でない
0723デフォルトの名無しさん2016/10/04(火) 20:10:20.62ID:WEyUe7wf
>>720
printlnを実行したら、だと思う。
>>717のプログラム文の後に、System.out.println(i);で表示してみて。3になってると思う。
0724追記2016/10/04(火) 20:42:57.79ID:WEyUe7wf
>>720
doubleでのキャスト→printlnによる表示(この時点でiは2)→後置インクリメントによるiへの1加算、の順だと思う。
0725デフォルトの名無しさん2016/10/04(火) 20:54:16.80ID:L2FSf/5N
>>717
1+(i++) と同じだからでは?
07267172016/10/04(火) 20:59:41.12ID:rJSgKoMJ
すみません。キャストとか何も考えずにですが、頭まとまってないままレス書いてます。

int i = 2;
System.out.println(++i);
の場合
0 : iconst_2   //int型の2をオペランドスタックにpush
1 : istore_1   //ローカル変数領域の1番目に2を格納(0番目は違うデータ)
2 : getstatic #16 //System.out.PrintStream
5 : iinc 1, 1   //1番目のローカル変数(ここではi(=2))を1インクリメントする
8 : iload_1    //ローカル変数 i をオペランドスタックへpushする
9 : invokevirtual #22 //println実行


int i = 2;
System.out.println(i++);
の場合
0 : iconst_2
1 : istore_1
2 : getstatic #16
5 : iload_1      //ローカル変数 i をオペランドスタックへpushする
6 : iinc 1, 1     //1番目のローカル変数(ここではi(=2))を1インクリメントする
9 : invokevirtual #22

これだと、
++i の場合、ローカル変数領域でインクリメントした値をオペランドスタックにプッシュしてprintlnしている。
i++ の場合、iをオペランドスタックにプッシュした後、ローカル変数領域でインクリメントしている。

つまり、printlnで出力される値はオペランドスタック内での値で、インクリメントされるのはローカル変数領域の値。
ローカル変数領域の値をインクリメント前後のどっちのタイミングで取り出すかで結果が違った。

これでいいんでしょうか?
0727デフォルトの名無しさん2016/10/04(火) 21:03:58.76ID:L2FSf/5N
>>720
処理が終わった後というか、変数から値を取り出した後と考えた方が良いと思う(でないと (i++) + (i++) みたいな式はどうなるのかわからなくなる)。

式の計算を実行する時には変数から値を取り出してそれを利用するわけだが、取り出した直後に変数の方にだけ1加算するのが後置の++。
0728デフォルトの名無しさん2016/10/04(火) 21:07:47.13ID:L2FSf/5N
>>726
そうそう。ズバリそれ。
0729デフォルトの名無しさん2016/10/04(火) 21:10:07.17ID:rJSgKoMJ
>>727
ありがとうございます。
そのケースだと、最初の(i++(値は2))+((i++)左でインクリメントされて3)
で、合計5になると思います。だいぶスッキリしました。
0730デフォルトの名無しさん2016/10/04(火) 23:06:35.38ID:qcWHR4bx
すいません、日付の取得について教えてください。
年・日付でyyyymm
1回目:201610
2回目:201609
?
12回目:201510

のように1ヶ月ずつマイナスの値が取りたいのですが、どのようにロジックを組み立てれば良いでしょうか。
0731デフォルトの名無しさん2016/10/04(火) 23:12:00.06ID:YN9fMNzy
mm = (mm+11)%12 というロジックを組み立てましょう
07327302016/10/04(火) 23:33:28.45ID:qcWHR4bx
カウンタが12以上だった場合と
カウンタが月より大きかった場合と
素直にカウンタが月より小さい場合の3パターンぐらい作ればOKですか?
0733デフォルトの名無しさん2016/10/04(火) 23:37:38.44ID:rJSgKoMJ
>>730
public static void main(String[] args) {
LocalDate date = LocalDate.now(ZoneId.systemDefault());
for(int i = 0; i < 10; i++){
LocalDate date2 = date.minusMonths(i);
System.out.println(date2.format(DateTimeFormatter.BASIC_ISO_DATE));

}
}
こんなのどうでしょう?
0734デフォルトの名無しさん2016/10/04(火) 23:48:00.86ID:qcWHR4bx
>>733
こちらのほうが早いですね。
カウンタが12以上
カウンタが月より大きいが12未満
カウンタが月と同じ
カウンタが月以下

のパターンで考えていましたが733さんのやり方を採用させていただきます。
ありがとうございました。
0735デフォルトの名無しさん2016/10/05(水) 02:30:23.26ID:D107n7zL
他スレでも似たようなことを聞いたのですが、コンストラクタはメソッドとは「異なる」ものでしょうか?
0736デフォルトの名無しさん2016/10/05(水) 04:32:37.11ID:6T6LA8v8
>>735
異なります。
まずクラスからインスタンスが生成されるのは分かると思います。
インスタンスを生成する際に、1つのインスタンスにつき最低1回自動的に実行されるものです。
(メソッドは意図的に呼び出さないと使われない)
※最低1回というのは、コンストラクタから他のオーバーロードコンストラクタを実行することも可能な為。

また、メソッドは定義しないと存在しえないけれど、コンストラクタは定義しなくても引数なしのデフォルトコンストラクタが勝手に作られます。
0737デフォルトの名無しさん2016/10/05(水) 06:41:11.69ID:SMYY1Ign
一つのクラスにメソッドはいくつまで作れますか?
0738デフォルトの名無しさん2016/10/05(水) 07:28:34.08
最初の配列の中身が { あ , い , う , え , お } だとして
例えば、要らない3番目の要素を削って、 { あ , い , え , お }としたいのだけど
for文で回したいと言う事もあって配列の要素の数減らしたい場合はどうすればいいのですか
0739デフォルトの名無しさん2016/10/05(水) 08:13:14.18ID:EDqQ344L
固定長でないなら配列の用途外だ
Listを使え
0740デフォルトの名無しさん2016/10/05(水) 08:20:02.52ID:5Xz9WIc6
>>730
1引く。
結果 modulo 100が0ならさらに88引く
201501 -1
201500 -88
201412
0741デフォルトの名無しさん2016/10/05(水) 08:37:57.34ID:UjqhNziY
>>740
Stream<Integer> yearmonth = Stream.iterate(201610, i -> {
if (--i % 100 == 0)
i -= 88;
return i;
});
yearmonth.limit(12).forEach(System.out::println);
0742デフォルトの名無しさん2016/10/05(水) 09:52:26.11ID:Aes2Pyfc
>>740
このロジック思い浮かぶやつは頭おかしい。
0743デフォルトの名無しさん2016/10/05(水) 12:08:28.26ID:5Xz9WIc6
>>742
確かど貧民なプロジェクトで書いたはず。
組み込みかなんか。
足す方も作った覚えがある。13なら88足す。
07447352016/10/05(水) 20:10:55.24ID:D107n7zL
>>736
なるほど。
ありがとうございました。
0745デフォルトの名無しさん2016/10/06(木) 02:31:43.46ID:qC7uJdLp
>>737
いくつでも作れるんじゃない。容量が許す限り。
コンストラクタは引数の性質上作れるバリエーションは限られるけど。
0746デフォルトの名無しさん2016/10/06(木) 10:43:24.14ID:j4+P2uPZ
http://stackoverflow.com/questions/4342072/what-is-the-maximum-number-of-methods-a-java-class-can-have
どのくらいメソッドを扱えるかはJVM側の仕様でJava自体は制限ないらしい
0747デフォルトの名無しさん2016/10/06(木) 12:21:38.86ID:Yw0Cruyw
>>738-739
java.util.Vectorは、オワコンらしいので、ArrayList を使うのかな?
0748デフォルトの名無しさん2016/10/06(木) 20:29:56.72ID:NGtUq8vU
そういや昔Vectorって中で配列使ってたりして効率悪いって話を聞いたことあるんだけどその後どうなったんだろう?
中身をこっそりListの何かと同じになるように書き換えちゃえばさほど効率悪くならないような気がするが。
0749デフォルトの名無しさん2016/10/06(木) 21:05:11.45ID:JthKKgNo
*Array*Listって中で何使ってると思う?
0750デフォルトの名無しさん2016/10/07(金) 02:42:47.54ID:SQT7x/O/
あれー
0751デフォルトの名無しさん2016/10/07(金) 08:01:12.25ID:ZgfNPSik
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Vector.html
> このクラスは、Java 2プラットフォームv1.2の時点でListインタフェースを実装するように改良された結果、
> Java Collections Frameworkのメンバーとなりました。新しいコレクションの実装とは異なり、Vectorは同期をとります。
> スレッドセーフな実装が必要ない場合は、Vectorの代わりにArrayListを使用することをお薦めします。

つまり……どういうことだってばよ?
0752デフォルトの名無しさん2016/10/07(金) 08:33:18.57ID:RR6e4vg9
スレッドセーフな実装はStringBufferとStringBuilderの関係に似ているね
■ このスレッドは過去ログ倉庫に格納されています