-
클래스 메소드 나열
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
임의의 스레드 하나를 "고정 해제"합니다. 이 방법은notifyAll
지정된 모니터의 모든 "고정" 스레드를 의미합니다. -
객체를 올바르게 복제하는 방법은 무엇입니까?
두 가지 유형의 복제.
기본 객체를 복제하려면 다음을 수행하십시오.
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()
불안정하게 작동합니다.이 방법은 기대에 부응하지 못합니다.
finalize
Java 시스템은 원하는 만큼 객체의 소멸과 메소드 호출을 지연시킬 수 있습니다 . 또한 이 메서드가 호출된다는 보장도 없습니다. 많은 상황에서 "최적화"를 위해 호출되지 않습니다. -
차이점은 무엇 입니까
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