Собрал из всех комментариев за последние 5 лет:
ctrl+Y - удалить строку.
shift+F6 - переименовать класс/метод/переменную в проекте.
ctrl+Z - отмотать действие
ctrl+shift+Z - вернуть отмотанное
ctrl+X - вырезать строку
alt+Insert - создаешь конструктор/геттеры/сеттеры/переопределяешь equls() and hashCode()
ctrl+D - копирование строки в IntelliJ IDEA
ctrl + W - веделение символа / строки / ряда.
trl + shift + W - отмотать выделение шаг назад.
ctrl + ? - закомментирование строки с переносом курсора на следующую строку (откат делается таким же образом)
Ctrl + Alt + L - Подгоняет все пробелы и фигурные скобки под правильный, более читаемый
Ctrl + O - Горячая клавиша в IntelliJ IDEA для переопределения
блин, не знал, что "ctrl+shift+Z - вернуть отмотанное", поэтому переопределил ctrl+Y отказавшись от возможности удалять строки. Теперь у меня два способа вернуть отмотанное.
Объясните пожалуйста ситуацию с последней задачкой: я вот написал тремя разными способами(работает и так и так, но в чем разница? только лишь в количестве букв?):
public static String getObjectType(Object o) {
if (o.getClass().equals(Cow.class)) {
return "Корова";
} else if (o instanceof Dog) {
return "Собака";
} else if (o.getClass().isAssignableFrom(Whale.class)) {
return "Кит";
} else {
return "Неизвестное животное";
}
}
В чем разница применения if (obj instanceof Student) и if (getClass () == obj.getClass ())?
Давайте разберемся, что делает каждый подход:
instanceof проверяет, является ли ссылка на объект с левой стороны экземпляром типа с правой стороны или некоторым его подтипом.
getClass() == ... проверяет идентичность типов.
То есть, если getClass() проверяет полную идентичность класса, то instanceof вернет true даже если объект будет всего лишь подтипом, что может дать нам большую гибкость при активном использовании полиморфизма.
Собственно, оба подхода хороши, если понимать особенности их работы и применять в нужных местах
Есть ещё одно важное отличие. Посмотрите на этот код, он не компилируется:
// Doesn't compile. Cannot class at runtime with instanceof
if (b instanceof obj.getClass()) {
}
Для instanceof тип класса, на принадлежность которому мы проверяем, должен быть известен на этапе компиляции.
Но мы можем сделать это с помощью Class.isAssignableFrom:
if (obj.getClass().isAssignableFrom(b.getClass())) {
System.out.println("obj.getClass() isAssignableFrom b.getClass()");
}
С помощью Class.isAssignableFrom мы можем проверить принадлежность типу или его потомку даже в том случае, когда тип, на принадлежность которому мы проверяем, на этапе компиляции неизвестен.
не считая самых первых уровней java syntax, пожалуй 1-й уровень все задачи которого получилось решить сразу, не читая лекций)(
как-то пока не впечатляет java core(
надеюсь пока)
лекции все ж проработаю еще конечно)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ