1read 100read
2013年17プログラム14: ★★Java質問・相談スレッド164★★ (527) TOP カテ一覧 スレ一覧 2ch元 削除依頼
くだらないアルゴリズムを考えるスレ (191)
SSE AVXのプログラミング (910)
Visual Studio 2010 Part20 (621)
クラス名・変数名に迷ったら書き込むスレ。Part23 (549)
monazilla Part 6 (722)
【Alloy】形式言語による仕様記述【VDM】 (148)

★★Java質問・相談スレッド164★★


1 :2013/09/03 〜 最終レス :2013/09/25
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※
前スレッド
★★Java質問・相談スレッド163★★
http://toro.2ch.net/test/read.cgi/tech/1374769525/

2 :
2 デフォルトの名無しさん sage 2013/07/26(金) 09:10:26.44
>>1 乙
>String に == は使うな。equals() を使え。
真に受ける人がいるからテンプレから削除するか
補足が必要
定数のcommand文字列と同一オブジェクトを比較する場合
==で比較するほうが可読性が良い場合がある
なんでもかんでもequals()つかってはいけない
同一クラス内において文字列リテラルは同一インスタンスである
String a = "adb";
String b = "adb";
a==bはtrueになるので初心者は罠にはまることがある

余談
1.7でスイッチ(String)が使えるようになったが
String key = null
swhich(key)はぬるぽになるのでcese null:とかできない

3 :
>>2
>同一クラス内において文字列リテラルは同一インスタンスである
これって言語仕様で保障されてるの?

4 :
言語仕様だと、同じ文字列定数式は全部同一インスタンス。
クラスやパッケージは関係ないだろ

5 :
>>4
試してみたら本当だった。凄い仕様だな。

6 :
== で比較するような文字列にはEnumを使うべきなので
Stringには何でもかんでも.equals()を使うのが正解

7 :
equalsのデフォルト実装は真っ先に==チェックするんだが

8 :
equals使えってのは"a" == new String("a")とういう場合があるからだろ。
実行時に作られた文字列は定数共有しないんだよ。
コンパイル時に作られたか実行時に作られたかは区別付かないだろ。

9 :
javaドカタ第一の壁:for文
javaドカタ第二の壁:文字列

10 :
いい忘れたけどinternしてもequals == true以外の時は共有されてないから
たまに見るs1.intern()==s2.intern()ってやるのは間違いだぞ。

11 :
素直にequals使いなよ
そんなところで無駄に反抗することでアイデンティティを見出だしているのかな
素直になりなさい

12 :
いやつまらんところでひっかからないように落とし穴を教えてくれる人に感謝を。

13 :
ハード機器からmidi送信、サウンドAPIでPC内midi音源を再生
を無事できたのですが、レイテンシーがどうしても気になります
ASIOドライバ対応のオーディオインターフェイスを所持しているのでASIOを使いたいと考えています
しかしいくつかわからない点があります
例えば、オーディオインターフェイスとPCを繋ぎ、
コンパネのサウンド設定で初期のRealtook?等からASIO対応のオーディオインターフェイスに変更すると、
外部midi送信機器とPCをUSBで繋げばそれだけでASIOを使いmidiのやり取りができることが多い気がします
ASIO対応オーディオインターフェイス - PC間
midi送信機器 - PC間
をそれぞれ繋げばASIOが利用できるということは
midi情報をASIOに対応させたり?というのはPC内で勝手にやってくれているという認識でよろしいでしょうか?
また、その部分を制御できればレイテンシーを減らせないだろうかと考えていますがJavaでできるのでしょうか

14 :
なぜ2を持ってきたんだ・・・
2の真意はpublic static final String ActionKey = "アクションA";
"アクションA".equals(getActionCommand())
ActionKey == getActionCommand() // 同じインタフェースだと解る
enumつかえるならそっち使うのがスマートだと思うし誤解も少ない

15 :
ASIOは以下で取得する一覧に含まれるのかな
MidiSystem.getMidiDeviceInfo()

16 :
>>10
>internしてもequals == true以外の時は共有されてないから
これは結構ディープだな。
String.classのライフがinternの()スコープだから普通はvmで一意だと思ってたけど、たとえばどうゆうときにそうなるの?

17 :
>>9
文字列を理解できたらこのスレでは上位10%だよ

18 :
>>13
Win用JREに無料で付いてくるOracle製ソフトMidiデバイスの遅延に不満があるのなら、
MIDI-PCM変換を自前のJavaで書いたところで、大して不満は解決しないと思う。

19 :
// char c = '𠀋'; // 表示されるかわからないけど4byte文字
String s = "𠀋";
// System.out.println(c);
System.out.println(s);
System.out.println(s.length());
System.out.println(s.charAt(0) & 0xFFFF);
System.out.println(s.charAt(1) & 0xFFFF);
実はむつかしいString

20 :
>>15
ASIOというか、ASIO対応のそのオーディオデバイス名がでます。
ですがレイテンシーから察するに、明らかにASIOが使えていないのが伺えますねー。。。

21 :
WindowsだとMicrosoft MIDI Mapperが見えると思います
これでも遅延は発生するのかな

22 :
マッパーだと切り分け出来んかった
Microsoft GS なんとか
こっちに該当するものだとどうなんだろ

23 :
デバイスはローランドのオーディオインターフェースを選んでます。
というか、他を選んでしまうと意味が無いような・・・。
midi機器と接続できるようなソフトウェアって大抵はmidiのI/Oを設定できますよね。
そこではなくて、Device Type?
・ASIO
・Windows Audio
・DirectSound
こういった選択肢が、私の持っているソフトシンセであったりそういったソフトで選択可能なのですが、
この部分はサウンドAPIのmidi再生ではどのように扱われているかがわからないです。

24 :
>>22
Microsoft GS・・はmidi音源ですよね確か。これは正常に音は鳴るのですが、やはりレイテンシーが酷いです。
なので音源が原因ではないと思います。(他の市販おソフトシンセ等でも試しました)

25 :
サウンドフォントを再生するところで遅延している印象は薄いですね
ノートONするたびに標準出力を出力。その時点で遅延しているのであれば
Javaで介入できる場所は無いという結論に至ります
遅延というのがキーを押してベロシティ(キーを押す速さ)検出レベルの事だとしたら
ハードウェアのことなのでお手上げです

26 :
>>25
鍵盤を押してからjavaプログラムを通してmidi音源が再生されるまでのレイテンシーです。
ちなみにjavaを通さずにASIOが設定できるソフトでは全く問題ないので外部機器のせいではないと思われます。
もう少し調べてみます。ありがとうございました。

27 :
enumの引数にStringを入れた場合の比較って==で良かったのでしたっけ?

28 :
ジャバ8のラムダで、_ アンダーバー(アンダースコア)の識別子をラムダ内に限って特別にキーワードとするようですけど、どういう機能を想定しているんですか?
本当は_ アンダーバーよりも$ ダラーをスペシャルにした方がよりジャバっぽいんですけど。

29 :
アプリケーションにフォーカスがないときでもキーボード入力を監視する事ってできますかね
擬似スクリーンセーバ作ってるんですがマウス検知しかできないんです

30 :
ソフト音源にこだわる >>13 のCPUは何使ってんのよ。
久しぶりに外部MIDI音源とか見てたらエントリクラスの新製品が壊滅状態で
どれもこれもCorei7より高くてびっくり

31 :
>>29
java グローバルキーフック
これでggrといいかも

32 :
enum同士なら当然 ==
そいつが持ってるプロパティのオブジェクト比較も == であるべき

33 :
>>9

34 :
i7とか   どんだけブルジョアなんだよ

35 :
馬鹿には無理

36 :
>>27
前スレからActionCommandの流れ引きづってんだろと思ってエスパーするが、
もう String 隠して Enum に isMyCommand(ActionEvent) とか作ればええやん。

37 :
>>31
やはりdllを呼び出すことでしか実現できませんか・・・
情報提供感謝します

38 :
>>37
JDialog dialog = new JDialog ();
dialog.setModal (true);
dialog.setAlwaysOnTop (true);
dialog.setModalityType (ModalityType.APPLICATION_MODAL);

39 :
くだらないことですみません、
javaの総合的な情報を扱うような本スレは存在しないのでしょうか?

40 :
ここです

41 :
>>40
JNIやJNAの情報を仕入れたいんです><

42 :
   \  丶       i.   |      /     ./       /
    \  ヽ     i.   .|     /    /      /
      \  ヽ    i  |     /   /     /
   \
                                  -‐
  ー
 __          こ こ  で す            --
     二          / ̄\           = 二
   ̄            | ^o^ |                 ̄
    -‐           \_/                ‐-
    /
            /               ヽ      \
    /                    丶     \
   /   /    /      |   i,      丶     \

43 :
>>39
そう、ここは初心者スレ。
だけどここの住人はif文、for文一通りマスターしているのでドンと来い!

44 :
JNI、RMIならおれにきけええええ
JNAは他の人にパス

45 :
>>9

46 :
>>41
情報は、英語のサイトで仕入れて、日本語でブログを書いてください

47 :
「ピュアジャバじゃない」という理由でJNIは相手にしないのが真のjavaドカタ
でもandroidはやります

48 :
>>28

49 :
>>41
JNIは本嫁

50 :
jspを書くときは手書きでやってますか?

51 :
手書きじゃなくてキーボード使うよ

52 :
コードスニペットとかパレットとか呼ばれる機能で貼り付けできるけど
うぃじうぃぐとかいうので見ながらやりたいわ

53 :
やっぱり、手書きするんですねー
いつも作ってる業務システムも手書きだけどさ、めんどいな
>>52 サンク ユー

54 :
jdk8のDP今日中に出るだろうか

55 :
http://android2010.seesaa.net/category/12346444-1.html
ここ見て作ってたんだけど11桁以上入れるとバグるんだけどなんで?

56 :
Integer -2,147,483,648 〜 2,147,483,647
オーバーフロー
ページ見てないけどたぶんこれ

57 :
>>56
まさにこれっぽいありがとう

58 :
なんというエスパー

59 :
http://www.infoq.com/jp/news/2013/09/everything-about-java-8
Java 8のすべて
原文(投稿日:2013/08/30)へのリンク
ここまでに述べた以外のパッケージにも,まだ多数の追加機能がある。
長年の懸案だったStringJoinerとString.join(...)がJava 8で実現される。
Stringプールマップのサイズ既定値が25〜50K程度まで拡張された。

60 :
List<JButton> buttons = new ArrayList<Button>();
buttons.add(new JButton....
....
これを別スレッドで
buttons.get(0).setText("asdf");
buttons.get(0).setPreferredSize(new Dimension...
等やる分にはArrayListの同期は必要ないのですよね?
別スレッドでaddやremoveをする場合は同期が必要という解釈でよろしいでしょうか?

61 :
スレチかもしれないンですが、Eclipseで構文を実行しても
その実行ファイルが表示されません。正確には、いつもプログラムを書く欄の
したに実行ファイルが表示されるはずなのですが、表示されなくなりました。
構文は間違っていないと思うのですが一応記しておきます。
import java.io.*;
public class Copy2 {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println(e);
}
}
}

62 :
しすてむ・あうと・ぷりんとるん

63 :
>>61
実行ファイルってなにを指して言ってんの?
.classファイルのこと?んなもん表示されてたか?

64 :
>>63
すいません正しくは実行結果です。実行ボタン(音楽プレーヤーの再生ボタンと同じ形)の上に
マウスを持っていったら「既に実行中」と表示されておりました。
これっておそらく実行結果は表示されているが、肝心の結果を表示する欄が
どこかに行ってしまったということではないでしょうか?
実行結果ってどこから呼び出すことができますかね

65 :
>>60
しらんがな。同期が必要かどうかは君が判断するんだってば。
setTextとsetPreferredSizeの相手はそれぞれ別オブジェクトになってもいいんだね?

66 :
JFrameを実装したFrame1は2つのテキストフィールドとそれぞれに対応したボタンを持っています
ボタンを押すとJFrameを実装したFrame2が生成されます
Frame2で特定の操作をして、その内容をFrame1の対応したテキストフィールドに入力したいのですが行き詰まってます
具体的にはFrame2にてsetTextを用いたいと思います
当たり前ですがFrame1とFrame2は異なるクラスです
新たにフレームを生成するのではなく、既に生成されているフレーム内のものを操作するにはどうすればいいでしょうか

67 :
>>58
11桁っていうとまずチェックするとこだろ。

68 :
>>54
楽しみですよね〜^^

69 :
struts2のいい教材があったら教えて
日本語だとありがたい

70 :
それセキュリティホールで死んだフレームワークじゃなかったか?

71 :
どっかのメガネ屋のでしょ?
あれ本当にStruts2のバージョンが古かったからなの?

72 :
>>65
addやremoveはこれ以降しないのでっていう理由で同期しないのって怠け者ですかね?

73 :
Java8でラムダがどうの話題になっているけれど、
もしJava7以下のバージョンしか入っていない環境で実行するとどうなっちゃうわけ?

74 :
バイナリが新しいぞコラってなるんじゃね?

75 :
古いバージョンに合わせてコンパイルとか出来るんだっけ?

76 :
馬鹿には無理

77 :
新構文を旧バージョンに対応させるわけではないでそ

78 :
旧環境ではコンパイルできないだけで実行は問題ないでしょ

79 :
新しいクラスやメソッドなどのメンバを呼び出すことができないからつかえな

80 :
>>79
それはクラスライブラリの問題だろ
構文には問題は生じない

81 :
ラムダとキャプチャがよくわからなかった
実質的finalはコンパイラの静的チェックで引っかかるの?

82 :
無名クラスに引き取られた変数はヒープに置けばいいんじゃないか
と思うのだがC#はどうなんだ?

83 :
public class copy {
public static void main(String[] args) {
printGraph(10);
}
public static void printGraph(int x) {
for (int i = 0; i < x; i++) {
System.out.print("*");
}
System.out.println("");
}
}
この構文なのですが、(int i = 0; i < x; i++) でprintGraph(10)だとすると、
x = 10となり、出力される「*」の数は9個だと思うのですがなぜ10個なのでしょうか

84 :
>>28

85 :
>>83
ゼロオリジン

86 :
>>82
C#がまさにそうやって「クロージャ」を実装してる
Javaのももともとクロージャにするつもりだったが、
ローカル変数はスタックに置くものという固定観念を捨てられず、
ある時期からクロージャという言葉を使わなくなり、しれっとラムダと呼ぶようになった

87 :
あれ、ちょっと待ってください。
もしかしてint i = 0の段階でも既に「*」って出力されるんでしょうか
だとすると0、1、2、3、4、5、6、7、8、9の10個ですが・・・

88 :
>>87
はい

89 :
馬鹿には無理

90 :
ありがとうございます。バカだけど分かりました

91 :
>>87
x = 10 だと
i < 10
だから、
0 ≦ i ≦ 9
だよ。
9 - 0 + 1 = 10
小学生で習うのではなかろうか

92 :
>>78
invokedynamic使ってるから無理

93 :
「IOException出たけどとりあえず正常だったことにして処理続行しろ」
みたいなプログラミングがJava8のラムダでできるようになるの?

94 :
実行時例外のIOExceptionが追加された

95 :
>>94
冗談だろうと思ったらマジだった
いくらラムダと相容れないからって、標準ライブラリでこういうことやっちゃうと
みんな真似してほんとに誰も検査例外使わなくなるよ
素晴らしいことだけど

96 :
jspってjavaのソースコードと連携できる、ただのテンプレートエンジンやん
これ、ただのテンプレートエンジンだからhtml5吐き出せるんだよね?

97 :
>>96
なんでそんな当たり前のことを質問するのかわからない

98 :
JSPは<%や%>の外側がブランクだったらその行を出力しないオプションが欲しい

99 :
今週は 「ついったのTLは社員が人力でHTML書いてる」 とか
「lang="ja"なのはJavaな証拠」 とかいう議論があったりしてだな…

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【質問】C++でソフト開発したい!【初心者】 (242)
【初心者歓迎】C/C++室 Ver.86【環境依存OK】 (103)
【3DS】プチコンを語るスレ【DSi】 (765)
プログラムに詳しくなりたい (577)
Message Passing Interface (MPI) 統合スレ (511)
テストしにくいコードをテストする方法教えて下さい (588)
--log9.info------------------
【涼宮ハルヒ】佐々木とくっくっ Part68【変な女】 (158)
【デュラララ!!】平和島静雄アンチスレ6 (274)
【僕は友達が少ない】三日月夜空に萌えるスレ (543)
【とある魔術の禁書目録】上条当麻アンチスレ (148)
【Fate/Zero】【虚淵玄】遠坂時臣の紅茶は7杯目【優雅に】 (674)
【僕は友達が少ない】肉 せもぽぬめ 柏崎星奈 3 (895)
【僕は友達が少ない】 高山マリア (182)
【Fate/Zero】ランサー 魅了7人目 (447)
【涼宮ハルヒの憂鬱】古泉一樹●×34 (172)
【マクロスF】早乙女アルトを愛でるスレ (513)
【Fate/Zero】キャスター&龍之介は最高のCoolカワイイ超9ool目 (577)
[自治]文芸キャラ(仮)板自治質問相談スレ その5 (602)
【とある魔術の禁書目録】新たなる光 2【N∴L∴】 (287)
【デュラララ!!】折原臨也アンチスレ7 (748)
【Fate/Zero】ケイネス先生 補講1回目 (434)
【涼宮ハルヒの驚愕】渡橋ヤスミに萌えるスレ (347)
--log55.com------------------
【サバイバルホラー】The Forest Part11
【PC】 DARK SOULS リマスタード
Tom Clancy's Rainbow Six Siege Round132
【PC】Grand Theft Auto Online ★74【GTA5】
PLAYERUNKNOWN'S BATTLEGROUNDS Part180【PUBG】
【TPS】Warframe part805【強化外骨格】
【FPS】Overwatch Part630
Dead by daylight Part218