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

Javaは、元はSun Microsystemsによって開発された、プラットフォームに依存しない高レベルのオブジェクト指向プログラミング言語です。Javaは現在、2010年にSunを購入したOracleが所有しています。

2
Javaがファイル名を引数に入れないのはなぜですか?
CおよびC ++では、mainメソッドは、argv [0]の配列の最初の位置にファイル名を保持します。ただし、Javaでは、ファイル名はargs文字列配列に含まれません。 これには実用的な理由がありますか?これにより、コマンドライン引数を1ベースではなく0ベースで反復処理することを理解していますが、利点はありますか?ファイル名は役に立たないとみなされましたか?
20 java  c++  c 

8
Java-配列を「ベクター」と呼ぶのはなぜですか?
Javaプログラミングに関する本を読んでいます。「ベクトル」という言葉の定義を理解していることを確認したいと思います。ウィキペディアによると、ベクターは「1次元配列」であり、ソースはhttp://en.wikipedia.org/wiki/Vectorです。 配列を単に配列と呼ぶ方が簡単ではないでしょうか?「ベクター」などの派手な言語を使用する必要がある理由はありますか?配列とベクトルに違いはありますか? 出典:Cracking the Coding Interview、4th Edition、by Gayle McDowell、page 47。 FAQ Q-english.stackexchange.comに投稿しなかったのはなぜですか? A-コンピュータサイエンス指向の人だけが良い答えを得ると思うからです。
20 java 

5
オブジェクトをシャッフルする効率的な方法
クイズソフトウェアのプログラムを書いています。質問、回答、オプション、マーク、ネガティブマークのArrayListを含む質問クラスがあります。このようなもの: class question { private ArrayList<Integer> index_list; private ArrayList<String> question_list; private ArrayList<String> answer_list; private ArrayList<String> opt1_list; private ArrayList<String> opt2_list; } すべての質問をシャッフルしたいのですが、質問をシャッフルするには、すべてのオブジェクトをシャッフルする必要があります。私はこの方法でこの問題に取り組みました。 まず、このデザインを使用せずArrayList<String>、インスタンス変数としてStringではなく型を使用し、Collections.shuffleオブジェクトをシャッフルするメソッドを使用します。しかし、私のチームはこの設計を主張しています。 現在、質問へのエントリが作成されるにつれて、質問クラスには増加するArrayListが含まれています。今すぐ質問をシャッフルする方法は?
20 java  collections 

6
Javaシリアル化-長所と短所、使用または回避?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 シリアル化は、Javaの永続化に使用されます。シリアル化を使用していくつかのオブジェクトを永続化してもかまいません。ただし、多数のオブジェクトの場合、ORM、データベースなどの方が適している場合があります。シリアル化は、小さなジョブにのみ役立つようです。私は間違っているかもしれません。それでは、非シリアル化方法よりもシリアル化の利点は何ですか?いつそれを使用し、いつそれを避けるべきですか? この質問は、DZoneの記事Is Object Serialization Evil?を見て思い浮かびました。 そして、これらは私の質問を引き起こした行です: Javaとそのセッションオブジェクトを見ると、純粋なオブジェクトのシリアル化が使用されます。アプリケーションセッションの存続期間がかなり短い(最大で数時間)と仮定すると、オブジェクトのシリアル化は単純であり、十分にサポートされ、セッションのJavaコンセプトに組み込まれています。ただし、データの永続性が長期間(場合によっては数日または数週間)にわたり、アプリケーションの新しいリリースを心配する必要がある場合、シリアル化はすぐに悪になります。優れたJava開発者が知っているように、セッションでもオブジェクトをシリアル化する場合は、1Lだけでなく実際のシリアル化ID(serialVersionUID)が必要であり、Serializableインターフェイスを実装する必要があります。ただし、ほとんどの開発者は、Javaの逆シリアル化プロセスの背後にある実際のルールを知りません。オブジェクトが変更された場合、オブジェクトに単純なフィールドを追加するだけでなく、シリアライゼーションIDが変更されていなくても、Javaがオブジェクトを正しくデシリアライズできない可能性があります。突然、データを取得できなくなります。これは本質的に悪いことです。 さて、これを読んでいる開発者は、この問題のあるコードを決して書かないと言うかもしれません。それは本当かもしれませんが、あなたが使用しているライブラリや、あなたの会社に雇用されなくなった他の開発者はどうでしょうか?この問題が発生しないことを保証できますか?それを保証する唯一の方法は、異なるシリアル化方法を使用することです。

4
JVMでヒープサイズが固定されているのはなぜですか?
JVMを固定ヒープサイズで実行する必要がある理由(JVMをあまり多くチェックしなかったが、そのようにしないものは見たことがありません)を誰かが説明できますか?単純な連続したヒープに実装する方が簡単ですが、Sun JVMは10年以上前のものなので、これを改善する時間があったと思います。 起動時にプログラムの最大メモリサイズを定義する必要があるのは1960年代のことのように思え、OS仮想メモリ管理との悪い相互作用があります(GCはスワップアウトされたデータを取得し、Javaプロセスのメモリ量を判断できません)実際に OS側から使用して、無駄なVM空間の膨大な量は、(私が知っている、あなたは...あなたの空想の48ビットマシン上で気にしません))。また、JVM内に小さなオペレーティングシステム(EEアプリケーションサーバー、OSGi)を構築しようとするさまざまな悲しい試みは、この状況で少なくとも部分的に責任があると思います。システム上で複数のJavaプロセスを実行すると、ピーク時に使用する必要があるメモリをそれぞれに割り当てます。 驚くべきことに、Googleは私が期待するような怒りの嵐を降ろしませんでしたが、固定ヒープサイズを見つけて事実を受け入れるだけの何百万という人々に埋もれてしまったのかもしれません。
20 java 


4
誰がインターフェースを拡張しますか?なぜ?
知る限り、私のクラスのextends親クラスとimplementsインターフェース。しかし、私はを使用できない状況に出くわしますimplements SomeInterface。これは、ジェネリック型の宣言です。例えば: public interface CallsForGrow {...} public class GrowingArrayList <T implements CallsForGrow> // BAD, won't work! extends ArrayList<T> ここでの使用implementsは構文的に禁止されています。最初に、<>内でインターフェイスを使用することはまったく禁止されていると考えましたが、そうではありません。可能ですが、extends代わりに使用するだけ ですimplements。その結果、インターフェイスを「拡張」しています。この別の例は動作します: public interface CallsForGrow {...} public class GrowingArrayList <T extends CallsForGrow> // this works! extends ArrayList<T> 私にはそれは構文上の矛盾と思われます。しかし、Java 6の細かい部分を理解していないのかもしれません。インターフェイスを拡張する必要がある他の場所はありますか?私が拡張するつもりのインターフェースには、いくつかの特別な機能が必要ですか?

7
純粋なJavaで書かれたJava IDE?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 Javaで書かれたJava IDEはありますか? 今日、学校で9年生のDETラップトップを手に入れたばかりで、あらゆる種類の制限が設定されています。やや面倒なことに、システムに既にインストールされている実行可能ファイル以外の実行可能ファイルは実行できません(何らかの理由で、コマンドプロンプト、PowerShell、または奇妙なことにregedit の使用を無効にしていません)。Javaの実行可能ファイルを実行できるので、学校で私のくだらないラップトップでプログラムできるようにするための唯一の方法だと思いました(すべての作業を自然に終えたとき):D 編集: Javaで記述されているということは、プログラムの実行に使用される実行可能ファイルのファイル拡張子が「.jar」であるため、JVMで実行されることも意味します。 編集2: DrJava IDE を試してみましたが、うまくいきました、ありがとう(プログラムをコンパイルして実行できます)!コマンド「java -jar "C:/ Users ... / org.eclipse ..."」を使用してコマンドラインからEclipseを実行することについて。これにより、ファイルを言うログを生成するエラーが発生します。主なエラーは次のとおりです。 メッセージバンドルorg.eclipse.ui.workbenchを自動的にアクティブ化しているときにエラーが発生しました(182)。 このエラーを修正するにはどうすればよいですか(他のIDEよりもEclipseで作業するほうがはるかに適切です)。 編集3: 私の最後の編集に関しては、無視してください:D。Eclipseの最新バージョンをダウンロードして問題を修正しました。

6
コメント作成とドキュメントのベストプラクティス
この質問はして移行され、それがソフトウェア工学スタック所に答えることができるので、スタックオーバーフローから。 7年前に移行され ました。 最近のコメントはこれまで以上に簡単です。Javaには、コメントをクラスにリンクするための優れた手法がいくつかあり、Java IDEはコメントシェルの作成に適しています。Clojureなどの言語では、関数のコード自体に関数の説明を引数として追加することもできます。 しかし、私たちは今でも良い開発者によって書かれた時代遅れのコメントや劣悪なコメントが頻繁にある時代に生きています。 特にここではJava / Clojure / Pythonに興味がありますが、回答は言語固有である必要はありません。 コメントを検証し、「薄っぺらな」コメント(マジックナンバー、不完全な文などのコメントなど)または不正なコメント(スペルミスなどの検出など)を自動的に検出する新しい手法はありますか。 そしてもっと重要なことは、「コメント政策」や戦略が受け入れられているということですか?コーディング方法に関するアドバイスはたくさんありますが、「コメントの方法」についてはどうでしょうか。

2
これを暗黙的に返すJava voidメソッド
この質問はして移行され、それがソフトウェア工学スタック所に答えることができるので、スタックオーバーフローから。 8年前に移行され ました。 「this」型を返すセッターメソッドについては、SOに関するいくつかの議論があります。そして、java 7にはこれを返すvoidメソッドの提案があったようです。しかし、この提案はJava 7の機能に到達できませんでした。この提案がJava 8またはそれ以降に移行したか、完全に破棄されたかはわかりませんでした。それは...ですか? 参照リンク-/programming/31584/design-java-and-returning-self-reference-in-setter-methods
20 java 

8
一般的なプログラミングに対する認識をチームメンバーに広めるにはどうすればよいですか?
私は人々が信じる環境にとどまっています: Javaジェネリックは、実際のコーディングではなく、ライブラリの書き込み専用に使用される機能です。 C ++はオブジェクト指向プログラミング言語です。templateオプションで回避可能な機能です ただし、これらの人々は、汎用プログラミング(STL、Javaコンテナーなど)を使用して作成されたライブラリーに大きく依存しています。templatesまたはを使用してコードを記述する場合generics、コードレビューアはそれを拒否する可能性が高く、「適切/理解可能/エレガント」な方法でそれを記述するようコメントします。 このような考え方は、通常のプログラマーから上級管理職まで適用できます。90%の時間、これらの人々はロビー活動をしているため、逃げ道はありません。 それらを説明する最良の方法(のどを切らない)、OOと汎用プログラミングの両方を同時に構成するコードを記述する実際的なアプローチは何ですか?
20 java  c++  templates  generics 

7
Java(まだ)はクロスプラットフォーム言語の選択ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 90年代にJavaを使い始めたときは、初日からすべて「一度書くだけでどこでも実行できます」でした。当時はおそらくそれがすべて真実で、私も合唱団の一員でした。 マルチプラットフォームランタイムを使用する他のすべての言語(python、flash、perl、html、php ...)を考慮して、これについてどう考えるかはもうわかりません。しかし、Javaはクロスプラットフォーム開発に向いていると思われるため、Javaを使用する必要があるという多くの議論がまだあります。 それで、それは今日でも本当ですか?Javaは今でもマルチプラットフォーム開発に最適な言語ですか? クロスプラットフォームの側面に焦点を当てて具体的に説明してください。 一般的な言語機能の比較は求めていません。 更新:これまでのところ素晴らしい反応です!ほとんどの答えは、JavaまたはWebを支持しているようです。スクリプト群衆からの入力はありますか?

9
init()メソッドはコード臭いですか?
init()型のメソッドを宣言する目的はありますか? 私はコンストラクタよりも優先init()すべきかどうか、または宣言を避ける方法をinit()尋ねていません。 メソッドを宣言する背後に何らかの理由があるのかinit()(それがどれほど一般的かを見て)、それがコードのにおいであり、避けるべきかどうかを尋ねています。 init()イディオムは非常に一般的ですが、私は、任意の真のメリットを見ていません。 メソッドによる初期化を促進する型について話している: class Demo { public void init() { //... } } これはいつプロダクションコードで使用されますか? コンストラクターがオブジェクトを完全に初期化せず、部分的に作成されたオブジェクトを生成することを示唆しているため、コードの匂いがするかもしれません。状態が設定されていない場合、オブジェクトは存在しないはずです。 これは、エンタープライズアプリケーションの意味で、生産をスピードアップするために使用されるある種の手法の一部である可能性があると信じさせてくれます。それは私がそのようなイディオムを持つことを考えることができる唯一の論理的な理由です。

7
Javaに異なるサイズの数値のプリミティブがあるのはなぜですか?
Javaではプリミティブ型がありbyte、short、intとlongとのために同じものfloatとdouble。プリミティブ値に使用するバイト数を設定する必要があるのはなぜですか?渡される数値の大きさに応じて、サイズを動的に決定することはできませんでしたか? 私が考えることができる2つの理由があります: データのサイズを動的に設定することは、動的に変更できる必要があることを意味します。これにより、パフォーマンスの問題が発生する可能性がありますか? おそらくプログラマーは、誰かが特定のサイズよりも大きな数を使用できるようにしたくないでしょう。これにより、制限することができます。 私はまだ、シングルintとfloatタイプを使用するシンプルな方法で多くのことが得られたと思いますが、Javaがこの方法を採用しないことに決めた特別な理由はありましたか?

7
パターンと原理の違い
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 オブジェクト指向のデザインパターンと原則の違いは何ですか?それらは異なるものですか?私が理解している限り、両方とも共通の目標(柔軟性など)を達成しようとします。パターンは原則であり、その逆も言えると思いますか? 設計原理= SOLID(つまり、依存関係反転の原理) デザインパターン= Gof(抽象ファクトリーパターン)

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