★★Java質問・相談スレッド164★★at TECH
★★Java質問・相談スレッド164★★ - 暇つぶし2ch1:デフォルトの名無しさん
13/09/03 23:48:04.51
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    URLリンク(pc11.2ch.net)
Webプログラミング URLリンク(pc11.2ch.net)
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)URLリンク(www.wikiroom.com)
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

前スレッド
★★Java質問・相談スレッド163★★
スレリンク(tech板)

2:デフォルトの名無しさん
13/09/03 23:48:35.75
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:デフォルトの名無しさん
13/09/03 23:52:59.51
>>2
>同一クラス内において文字列リテラルは同一インスタンスである
これって言語仕様で保障されてるの?

4:デフォルトの名無しさん
13/09/04 01:03:37.07
言語仕様だと、同じ文字列定数式は全部同一インスタンス。
クラスやパッケージは関係ないだろ

5:デフォルトの名無しさん
13/09/04 01:13:02.31
>>4
試してみたら本当だった。凄い仕様だな。

6:デフォルトの名無しさん
13/09/04 01:13:44.24
== で比較するような文字列にはEnumを使うべきなので
Stringには何でもかんでも.equals()を使うのが正解

7:デフォルトの名無しさん
13/09/04 01:21:01.74
equalsのデフォルト実装は真っ先に==チェックするんだが

8:デフォルトの名無しさん
13/09/04 01:35:25.16
equals使えってのは"a" == new String("a")とういう場合があるからだろ。
実行時に作られた文字列は定数共有しないんだよ。
コンパイル時に作られたか実行時に作られたかは区別付かないだろ。

9:デフォルトの名無しさん
13/09/04 01:40:28.32
javaドカタ第一の壁:for文
javaドカタ第二の壁:文字列

10:デフォルトの名無しさん
13/09/04 01:54:21.89
いい忘れたけどinternしてもequals == true以外の時は共有されてないから
たまに見るs1.intern()==s2.intern()ってやるのは間違いだぞ。

11:デフォルトの名無しさん
13/09/04 09:37:57.41
素直にequals使いなよ
そんなところで無駄に反抗することでアイデンティティを見出だしているのかな
素直になりなさい

12:デフォルトの名無しさん
13/09/04 09:47:04.84
いやつまらんところでひっかからないように落とし穴を教えてくれる人に感謝を。

13:デフォルトの名無しさん
13/09/04 10:11:10.71
ハード機器からmidi送信、サウンドAPIでPC内midi音源を再生
を無事できたのですが、レイテンシーがどうしても気になります
ASIOドライバ対応のオーディオインターフェイスを所持しているのでASIOを使いたいと考えています

しかしいくつかわからない点があります
例えば、オーディオインターフェイスとPCを繋ぎ、
コンパネのサウンド設定で初期のRealtook?等からASIO対応のオーディオインターフェイスに変更すると、
外部midi送信機器とPCをUSBで繋げばそれだけでASIOを使いmidiのやり取りができることが多い気がします

ASIO対応オーディオインターフェイス - PC間
midi送信機器 - PC間
をそれぞれ繋げばASIOが利用できるということは
midi情報をASIOに対応させたり?というのはPC内で勝手にやってくれているという認識でよろしいでしょうか?
また、その部分を制御できればレイテンシーを減らせないだろうかと考えていますがJavaでできるのでしょうか

14:デフォルトの名無しさん
13/09/04 11:52:25.38
なぜ2を持ってきたんだ・・・
2の真意はpublic static final String ActionKey = "アクションA";

"アクションA".equals(getActionCommand())
ActionKey == getActionCommand() // 同じインタフェースだと解る

enumつかえるならそっち使うのがスマートだと思うし誤解も少ない

15:デフォルトの名無しさん
13/09/04 12:01:53.01
ASIOは以下で取得する一覧に含まれるのかな
MidiSystem.getMidiDeviceInfo()

16:デフォルトの名無しさん
13/09/04 12:13:43.98
>>10
>internしてもequals == true以外の時は共有されてないから

これは結構ディープだな。
String.classのライフがinternの()スコープだから普通はvmで一意だと思ってたけど、たとえばどうゆうときにそうなるの?

17:デフォルトの名無しさん
13/09/04 12:26:43.53
>>9
文字列を理解できたらこのスレでは上位10%だよ

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

19:デフォルトの名無しさん
13/09/04 12:58:10.25
// 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:デフォルトの名無しさん
13/09/04 13:08:12.50
>>15
ASIOというか、ASIO対応のそのオーディオデバイス名がでます。
ですがレイテンシーから察するに、明らかにASIOが使えていないのが伺えますねー。。。

21:デフォルトの名無しさん
13/09/04 13:13:29.84
WindowsだとMicrosoft MIDI Mapperが見えると思います
これでも遅延は発生するのかな

22:デフォルトの名無しさん
13/09/04 13:16:29.45
マッパーだと切り分け出来んかった
Microsoft GS なんとか
こっちに該当するものだとどうなんだろ

23:13
13/09/04 13:34:57.85
デバイスはローランドのオーディオインターフェースを選んでます。
というか、他を選んでしまうと意味が無いような・・・。

midi機器と接続できるようなソフトウェアって大抵はmidiのI/Oを設定できますよね。
そこではなくて、Device Type?

・ASIO
・Windows Audio
・DirectSound

こういった選択肢が、私の持っているソフトシンセであったりそういったソフトで選択可能なのですが、
この部分はサウンドAPIのmidi再生ではどのように扱われているかがわからないです。

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

25:デフォルトの名無しさん
13/09/04 14:08:06.59
サウンドフォントを再生するところで遅延している印象は薄いですね

ノートONするたびに標準出力を出力。その時点で遅延しているのであれば
Javaで介入できる場所は無いという結論に至ります

遅延というのがキーを押してベロシティ(キーを押す速さ)検出レベルの事だとしたら
ハードウェアのことなのでお手上げです

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

27:デフォルトの名無しさん
13/09/04 15:04:37.30
enumの引数にStringを入れた場合の比較って==で良かったのでしたっけ?

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

29:デフォルトの名無しさん
13/09/04 15:21:58.38
アプリケーションにフォーカスがないときでもキーボード入力を監視する事ってできますかね
擬似スクリーンセーバ作ってるんですがマウス検知しかできないんです

30:デフォルトの名無しさん
13/09/04 15:29:01.20
ソフト音源にこだわる >>13 のCPUは何使ってんのよ。

久しぶりに外部MIDI音源とか見てたらエントリクラスの新製品が壊滅状態で
どれもこれもCorei7より高くてびっくり

31:デフォルトの名無しさん
13/09/04 15:30:51.03
>>29
java グローバルキーフック
これでggrといいかも

32:デフォルトの名無しさん
13/09/04 15:34:07.20
enum同士なら当然 ==
そいつが持ってるプロパティのオブジェクト比較も == であるべき

33:デフォルトの名無しさん
13/09/04 15:38:44.28
>>9

34:デフォルトの名無しさん
13/09/04 15:46:26.79
i7とか   どんだけブルジョアなんだよ

35:デフォルトの名無しさん
13/09/04 15:51:49.69
馬鹿には無理

36:デフォルトの名無しさん
13/09/04 18:17:11.63
>>27
前スレからActionCommandの流れ引きづってんだろと思ってエスパーするが、
もう String 隠して Enum に isMyCommand(ActionEvent) とか作ればええやん。

37:デフォルトの名無しさん
13/09/04 18:32:36.22
>>31
やはりdllを呼び出すことでしか実現できませんか・・・
情報提供感謝します

38:デフォルトの名無しさん
13/09/04 20:30:46.16
>>37
JDialog dialog = new JDialog ();
dialog.setModal (true);
dialog.setAlwaysOnTop (true);
dialog.setModalityType (ModalityType.APPLICATION_MODAL);

39:デフォルトの名無しさん
13/09/04 21:41:50.63
くだらないことですみません、
javaの総合的な情報を扱うような本スレは存在しないのでしょうか?

40:デフォルトの名無しさん
13/09/04 21:53:44.73
ここです

41:デフォルトの名無しさん
13/09/04 21:54:54.27
>>40
JNIやJNAの情報を仕入れたいんです><

42:デフォルトの名無しさん
13/09/04 21:55:58.97
   \  丶       i.   |      /     ./       /
    \  ヽ     i.   .|     /    /      /
      \  ヽ    i  |     /   /     /
   \
                                  -‐
  ー
 __          こ こ  で す            --
     二          / ̄\           = 二
   ̄            | ^o^ |                 ̄
    -‐           \_/                ‐-

    /
            /               ヽ      \
    /                    丶     \
   /   /    /      |   i,      丶     \

43:デフォルトの名無しさん
13/09/04 22:10:46.82
>>39
そう、ここは初心者スレ。
だけどここの住人はif文、for文一通りマスターしているのでドンと来い!

44:デフォルトの名無しさん
13/09/04 22:29:47.09
JNI、RMIならおれにきけええええ
JNAは他の人にパス

45:デフォルトの名無しさん
13/09/04 22:31:32.46
>>9

46:デフォルトの名無しさん
13/09/04 22:34:14.84
>>41
情報は、英語のサイトで仕入れて、日本語でブログを書いてください

47:デフォルトの名無しさん
13/09/05 00:17:37.41
「ピュアジャバじゃない」という理由でJNIは相手にしないのが真のjavaドカタ
でもandroidはやります

48:デフォルトの名無しさん
13/09/05 11:45:30.82
>>28

49:デフォルトの名無しさん
13/09/05 13:03:51.98
>>41
JNIは本嫁


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch