タグ付けされた質問 「java」

Javaは人気のある高水準プログラミング言語です。言語自体の使用または理解に問題がある場合は、このタグを使用してください。このタグが単独で使用されることはめったになく、[spring]、[spring-boot]、[jakarta-ee]、[android]、[javafx]、[gradle]、および[maven]と組み合わせて使用​​されることがほとんどです。

30
ファイルの内容からJava文字列を作成するにはどうすればよいですか?
私はしばらくの間、以下のイディオムを使用しています。そして、少なくとも私がアクセスしたサイトでは、それが最も広く普及しているようです。 Javaでファイルを文字列に読み取るより良い/異なる方法はありますか? private String readFile(String file) throws IOException { BufferedReader reader = new BufferedReader(new FileReader (file)); String line = null; StringBuilder stringBuilder = new StringBuilder(); String ls = System.getProperty("line.separator"); try { while((line = reader.readLine()) != null) { stringBuilder.append(line); stringBuilder.append(ls); } return stringBuilder.toString(); } finally { reader.close(); } }
1513 java  string  file  file-io  io 


27
Javaの「for each」ループはどのように機能しますか?
OverаэтотвопросестьответынаStack Overflowнарусском:Javaакработаетциклforeach for Java? 検討してください: List<String> someList = new ArrayList<String>(); // add "monkey", "donkey", "skeleton key" to someList for (String item : someList) { System.out.println(item); } for each構文forを使用しないと、同等のループはどのようになりますか?


30
整数の平方根が整数かどうかを判断する最も速い方法
long値が完全な二乗かどうか(つまり、その平方根が別の整数かどうか)を判断する最も速い方法を探しています。 私は組み込みMath.sqrt() 関数を使用して簡単な方法で実行しましたが、整数のみのドメインに制限することでより速く実行する方法があるかどうか疑問に思っています。 ルックアップテーブルを維持することは非現実的です(二乗が2 63未満の整数が約2 31.5 個あるため)。 ここに私が今やっている非常にシンプルで簡単な方法があります: public final static boolean isPerfectSquare(long n) { if (n < 0) return false; long tst = (long)(Math.sqrt(n) + 0.5); return tst*tst == n; } 注:この関数は、多くのプロジェクトオイラー問題で使用しています。したがって、他の誰もこのコードを保守する必要はありません。そして、この種のマイクロ最適化は実際に違いをもたらす可能性があります。課題の一部はすべてのアルゴリズムを1分未満で実行することであり、この関数はいくつかの問題では何百万回も呼び出される必要があるためです。 私は問題のさまざまな解決策を試しました: 徹底的なテスト0.5の結果、少なくとも私のマシンでは、Math.sqrt()の結果に追加する必要がないことがわかりました。 平方根逆高速は速かったが、それは、n> = 410881.に対して誤った結果を与えたが、によって提案されたようBobbyShaftoe、我々はN <410881のためFISRハックを使用することができます。 ニュートンの方法は、に比べてかなり遅いですMath.sqrt()。これはおそらく、Math.sqrt()ニュートンの方法に似たものを使用しているためですが、ハードウェアに実装されているため、Javaよりもはるかに高速です。また、ニュートンの方法では、依然としてdoubleの使用が必要でした。 整数演算のみが関与するようにいくつかのトリックを使用した修正ニュートン法は、オーバーフローを回避するためにいくつかのハックを必要とし(この関数をすべての正の64ビット符号付き整数で機能させたい)、それでもは遅くなりましたMath.sqrt()。 バイナリチョップはさらに遅くなりました。バイナリチョップは、64ビット数の平方根を見つけるために平均で16パスを必要とするため、これは理にかなっています。 ジョンのテストによると、使用してorステートメントは、より高速なC ++で使用するよりもあるswitchが、JavaやC#での間に違いはないようであるorとswitch。 (64のブール値のプライベート静的配列として)ルックアップテーブルを作成してみました。次に、switchやorstatementの代わりに、とだけ言いif(lookup[(int)(n&0x3F)]) { test } else return …




23
Apache Camelとは正確には何ですか?
キャメルが何をしているのか正確にはわかりません。 キャメルの紹介を101語で書ける場合: 正確には何ですか? Javaで記述されたアプリケーションとどのように相互作用しますか? サーバーと一緒に行くものですか? 独立したプログラムですか? キャメルとは何か説明してください。

7
特定のUnicode文字を含むコメントでJavaコードを実行できるのはなぜですか?
次のコードは、「Hello World!」という出力を生成します。(いいえ、実際に試してみてください)。 public static void main(String... args) { // The comment below is not a typo. // \u000d System.out.println("Hello World!"); } これは、JavaコンパイラがUnicode文字\u000dを新しい行として解析し、次のように変換されるためです。 public static void main(String... args) { // The comment below is not a typo. // System.out.println("Hello World!"); } したがって、「実行」されるコメントになります。 これは悪意のあるコードや悪意のあるプログラマが思いつくものを「隠す」ために使用できるので、なぜコメントで許可されているのですか? なぜこれがJava仕様で許可されているのですか?
1356 java  unicode  comments 


30
Javaで数値を小数点以下n桁に丸める方法
私が望むのは、doubleを、ハーフアップメソッドを使用して丸める文字列に変換するメソッドです。つまり、丸められる小数が5の場合、常に次の数値に切り上げられます。これは、ほとんどの人がほとんどの状況で期待する丸めの標準的な方法です。 また、有効数字のみが表示されるようにしたいと考えています。つまり、後続のゼロがあってはなりません。 これを行う1つの方法は、そのString.format方法を使用することです。 String.format("%.5g%n", 0.912385); 戻り値: 0.91239 これはすばらしいことですが、たとえ重要でなくても、常に小数点以下5桁の数値が表示されます。 String.format("%.5g%n", 0.912300); 戻り値: 0.91230 もう一つの方法は、使用することですDecimalFormatter: DecimalFormat df = new DecimalFormat("#.#####"); df.format(0.912385); 戻り値: 0.91238 ただし、ご覧のとおり、これは半偶数丸めを使用しています。つまり、前の桁が偶数の場合は切り捨てられます。私が欲しいのはこれです: 0.912385 -> 0.91239 0.912300 -> 0.9123 これをJavaで実現する最良の方法は何ですか?
1259 java  decimal  rounding  digits 

12
プロジェクトをEclipseにインポートした後の「スーパークラスメソッドをオーバーライドする必要がある」エラー
プロジェクトをEclipseに再インポートする必要がある場合(Eclipseを再インストールした場合、またはプロジェクトの場所を変更した場合)は、オーバーライドされたメソッドのほとんどすべてが正しくフォーマットされていないため、エラーが発生します。 メソッドはスーパークラスメソッドをオーバーライドする必要があります これは、何らかの理由でAndroidプロジェクトで発生することであり、メソッドの引数の値が常に入力されるとは限らないため、手動で手動で入力する必要があることに注意してください。例えば: list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { //These arguments have their correct names public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { } }); 最初は次のように入力されます: list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { //This methods arguments were not automatically provided public void onCreateContextMenu(ContextMenu arg1, View arg2, ContextMenuInfo arg3) { } }); 奇妙なことに、コードを削除してEclipseが自動的にメソッドを再作成すると、すでに持っているのと同じ引数名が使用されるため、問題の場所が本当にわかりません。それ以外は、メソッドを自動フォーマットします私。 これは、オーバーライドされたメソッドをすべて手動で手動で再作成しなければならないので、非常に面倒になります。なぜこれが起こるのか、またはそれを修正する方法を誰かが説明できる場合。とてもうれしくなる。 多分それは別のメソッドの引数の中にあるメソッドをフォーマットしている方法が原因ですか?

30
wait()とsleep()の違い
違いは何であるwait()とsleep()スレッドでは? wait()-ingスレッドはまだ実行モードにあり、CPUサイクルを使用していますが、sleep()-ingはCPUサイクルを消費しないという理解は正しいですか? なぜ両方が wait()ありsleep()、それらの実装は下位レベルでどのように異なるのですか?

30
Android SDKのインストールでJDKが見つかりません
Windows 7 x64システムにAndroid SDKをインストールしようとしています。 jdk-6u23-windows-x64.exeはインストールされていますが、Android SDKセットアップはJDKインストールが見つからないため、続行を拒否します。 これは既知の問題ですか?そして、解決策はありますか?
1200 java  android  sdk  windows-7-x64  jdk6 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.