-
リストクラスのメソッド
Object
equals()
hashCode()
toString()
getClass()
notify()
notifyAll()
wait()
wait(long timeOut)
wait(long timeOut, int nanos)
-
equals
なぜ&メソッドが必要なのでしょうhashCode
か?オブジェクトを比較するために使用されます。
このメソッドの目的は、
equals
オブジェクトの内部内容を比較することによって、オブジェクトが内部的に同一であるかどうかを判断することです。これはequals
ゆっくりと動作します。最初にオブジェクトのハッシュ コードが比較され、ハッシュ コードが等しい場合は、次のようなチェックが行われます。equals
-
等しいをオーバーライドするがオーバーライドしない場合はどうなりますか
hashCode
?最初は
hashCode
乱数です。Java のコレクションは、を使用してオブジェクトを比較する前に、
equals
常に メソッド を使用してコレクションを検索/比較しますhashCode()
。また、同一のオブジェクトに異なる がある場合hashCode
、それらのオブジェクトは異なるものとみなされます。それらを使用して比較することは単純に不可能ですequals
。 -
メソッドが
wait
、notify
、であるのはなぜですかnotifyAll
?プログラムでは、スレッドがコードのブロックに入り
synchronized
、モニターがブロックされ、それ以上動作できない状況が発生することがあります。一部のデータがまだ不足しています。たとえば、処理すべきファイルがまだロードされていないなどです。この問題を解決する方法が発明されましたwait()
。このメソッドを呼び出すと、スレッドはモニターを解放して「一時停止」します。一時停止を解除するには、メソッドが使用されます
notify
。notifyAll
このメソッドはnotify
、ランダムな 1 つのスレッドを「フリーズ解除」します。このメソッドは、notifyAll
指定されたモニターの「フリーズされた」すべてのスレッドを「フリーズ解除」します。 -
オブジェクトを正しく複製するにはどうすればよいですか?
クローン作成には 2 種類あります。
デフォルトのオブジェクトのクローンを作成するには:
Cloneable
クラスにインターフェイスを追加する- メソッドをオーバーライドし
clone
、その中の基本実装を呼び出します。
class Point implements Cloneable { int x; int y; public Object clone() { return super.clone(); } }
または、メソッドの実装を
clone
自分で書くこともできます。class Point { int x; int y; public Object clone() { Point point = new Point(); point.x = this.x; point.y = this.y; return point; } }
-
なぜこの方法が必要なのか
finalize()
、またどのように機能するのか?覚えていると思いますが、これは
finalize()
ガベージ コレクターがオブジェクトを破棄する前にオブジェクトに対して呼び出される特別なメソッドです。このメソッドの主な目的は、使用されている外部の非 Java リソース (ファイルを閉じる、I/O ストリームなど) を解放することです。
finalize()
動作が不安定。この方法は期待に応えられません。Java マシンは、オブジェクトの破棄やメソッドの呼び出しを
finalize
好きなだけ遅らせることができます。さらに、このメソッドが呼び出されるという保証はまったくありません。多くの状況では、「最適化」のためにこの関数は呼び出されません。 -
違いはなんですか
final
、finally
、finalize
?final
- 修飾子- フィールドは変更できません。メソッドはオーバーライドされます
- クラスは継承できません
- この修飾子は、クラス、メソッド、変数 (ローカル変数も) にのみ適用されます。
- メソッド引数は
final
読み取り専用であるため、変更しようとするとコンパイル エラーが発生します。 - Переменные
final
не инициализируются по умолчанию, им необходимо явно присвоить meaning при объявлении or в конструкторе, иначе – ошибка компиляции - Если final переменная содержит ссылку на an object, an object может быть изменен, но переменная всегда будет ссылаться на тот же самый an object
- Также это справедливо и для массивов, потому что массивы являются an objectми, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
- Если класс объявлен
final
иabstract
(взаимоисключающие понятия), произойдет ошибка компиляции - Так How
final
класс не может наследоваться, его методы никогда не могут быть переопределены
finally
— блок в связкеtry-catch-finally
, code в котором выполнится независимо от того вылетело ли исключение в блокеtry
or нет. Используется для освобождения ресурсов.finalize
— метод в классеObject
см 6. -
What такое
try-with-resources
?Это специальная конструкция
try
, называемаяtry-with-resources
, в которой Обрати внимание – послеtry
следуют круглые скобки, где объявляются переменные и создаются an objectы. Эти an objectы можно использовать внутри блокаtry
, обозначенного скобками{}
. Когда выполнение команд блокаtry
закончится, независимо от того – нормально оно закончилось or было исключение, для an object, созданного внутри круглых скобок()
, будет вызван методclose()
; -
Чем отличаются методы
wait(1000)
иsleep(1000)
?sleep()
приостанавливает поток на указанное. состояние меняется на TIMED_WAITING, по истечению — RUNNABLEwait()
меняет состояние потока на WAITINGможет быть вызвано только у an object владеющего блокировкой, в противном случае выкинется исключение IllegalMonitorStateException. при срабатывании метода блокировка отпускается, что позволяет продолжить работу другим потокам ожидающим захватить ту же самую блокировку . в случае
wait(int)
с аргументом состояние будет TIMED_WAITING -
В чем отличие
i++
и++i
?++i
,i
сначала увеличивается на 1, затем участвует в выражении.i++
,i
сначала участвует в выражении, затем увеличивается на 1.
GO TO FULL VERSION