предисловие
Как у вас обстоят дела с Java? Многие студенты скажут: «Моя основа Java неплохая!» Действительно ли ваша база хороша? Вы тоже можете попробовать посмотреть вопросы в моей статье, если вы сможете правильно на них ответить, то я могу вам только сказать: одноклассник, у вас очень хорошая основа, ставьте палец вверх! Несколько дней назад я просмотрел материалы и увидел много базовых вопросов по Java, которые я видел раньше.Хотя это действительно базовые, но есть и много «ям».Далее мы войдем в тему, и студенты, которые будет делать это будет рассматриваться как закрепление очков знаний.Студенты, которые не знают, должны усердно учиться, это самые базовые знания!
float f=3.4, это правильно?
Ответ: Неправильно. Поскольку 3.4 является числом с двойной точностью, присвоение типа с двойной точностью (double) типу с плавающей запятой (float) приводит к нисходящему приведению (также известному как сужение), что приведет к потере точности, поэтому его необходимо привести для float f = ( float)3.4 или записать как float f =3.4f;
короткий s1 = 1; s1 = s1 + 1; неправильно? короткий s1 = 1; s1 += 1; неправильный?
Ответ: Для короткого s1 = 1; s1 = s1 + 1; поскольку 1 имеет тип int, результат операции s1+1 также имеет тип int, поэтому вам нужно привести тип, чтобы присвоить его короткому типу; и короткий s1 = 1; s1 += 1; компилируется правильно, поскольку s1+= 1; эквивалентно s1 = (short(s1 + 1); с неявным приведением.
Вы знаете разницу между операторами & и &&, | и ||?
Ответ: & является побитовым оператором И, только когда соответствующие два двоичных числа равны 1, бит результата равен 1. Например: 1&1 = 1, 1&0 = 0, 0&1 = 0, 0&0 = 0. | Побитовый оператор ИЛИ, когда один из них равен 1, результирующий бит равен 1. Например: 1|1 = 1, 1|0 = 1, 0|1 = 1, 0|0 = 0.
И &, и && могут реализовывать операции AND. Отличие: & работает с обеих сторон, тогда как && сначала вычисляет левую часть &&. Если левая часть ложна, то правая сторона не работает. Рекомендуется использовать && в операторе суждения, что более эффективно.
| и || могут быть реализованы или работать, разница в следующем: || Пока выполняется первое условие, следующие условия не будут оцениваться, в то время как | нужно оценивать все условия.
&& и || называются операторами короткого замыкания.
Вы понимаете битовые операции? Вычислите 2 раза по 8 наиболее эффективным способом
Ответ: 2
Емкость HashMap по умолчанию в обычном исходном коде JDK составляет 16. int DEFAULT_INITIAL_CAPACITY = 1
Каковы основные типы данных в Java?
Ответ: восемь основных типов данных: byte, short, int, long, float, double, char, boolean.
В чем разница между == и equals?
Ответ. При сравнении примитивных типов данных используйте == для определения равенства. При сравнении ссылочного типа данных data: == сравнивает, совпадают ли адреса памяти и отличаются ли адреса памяти разных объектов; equals сравнивает конкретное содержимое.
String str = new String("abc"); Сколько объектов создается?
О: Вы можете создать один объект, а можете создать два объекта, что необходимо обсуждать в каждом конкретном случае.
Создайте объект: когда существует постоянный пул, объект является непосредственно новым. Создайте два объекта: если пул констант не существует, создайте объект в пуле констант и создайте объект в куче.
О примере сравнения адресов памяти
String str1= new String("abc"); String str2= "abc"; String str3= "abc"; System.out.println(str1 == str2) //false System.out.println(str2 == str3) //true
отвечать: Первый ложный: новый создает новый объект, открывает новое пространство, поэтому адрес не тот. Верно второе: все получены из пула констант, а "abc" существует в пуле констант.
В чем разница между String, StringBuffer и StringBuilder? Каковы их сценарии использования?
Ответ: Все три являются окончательными и не могут быть унаследованы, по сути, все они реализованы символьными массивами char[]. Среди String, StringBuffer и StringBuilder String является неизменяемым объектом, а StringBuffer и StringBuilder — изменяемыми. StringBuilder более эффективен, потому что он не требует блокировки и не является многопоточным.Метод работы в StringBuffer использует синхронизированный, который относительно менее эффективен и ориентирован на потоки; используемые сцены:
- String используется для работы с небольшим объемом данных, но лучше не использовать String, когда содержимое часто меняется и данных операций много, потому что производительность каждого поколения промежуточных объектов будет снижаться.
- StringBuilder используется для обработки большого количества строк в одном потоке, хотя он и не является потокобезопасным, но не влияет.
- Для работы с большим количеством строк в многопоточном режиме и необходимости обеспечения безопасности потоков используйте StringBuffer.
Финал для чего?
отвечать: Используется для украшения классов, свойств и методов;
- Класс, измененный с помощью final, не может быть унаследован
- Метод, измененный final, не может быть переопределен
- Переменные, измененные с помощью final, не могут быть изменены.
- Что является неизменным при окончательной модификации, так это ссылка на переменную, а не содержимое, на которое указывает ссылка.Содержимое, на которое указывает ссылка, может быть изменено.
final окончательно доработать в чем разница?
отвечать:
- Final может изменять классы, переменные и методы.Измененный класс означает, что класс не может быть унаследован, модифицированный метод означает, что метод не может быть переопределен, а измененная переменная означает, что переменная является константой и не может быть переназначена.
- Наконец, обычно действует в блоке кода try-catch.При работе с исключениями мы обычно помещаем метод кода, который должен быть выполнен, в блоке кода finally, указывая, что блок кода будет выполняться независимо от того, есть исключение или нет, и обычно используется для хранения некоторых закрытых ресурсов кода.
- finalize — это метод, который принадлежит классу Object, а класс Object является родительским классом для всех классов. Этот метод обычно вызывается сборщиком мусора. Когда мы вызываем метод System.gc(), сборщик мусора вызывает finalize. (), сборка мусора, окончательное решение о том, подлежит ли объект переработке.
Каковы четыре характеристики объектной ориентации?
Ответ: абстракция, инкапсуляция, наследование, полиморфизм
Аннотация: класс, объявленный с помощью ключевого слова abstract, называется абстрактным классом, а метод, объявленный с помощью abstract, называется абстрактным методом. Если класс содержит один или несколько абстрактных методов, класс должен быть обозначен как абстрактный класс.Абстрактный метод — это специальный метод только с одним объявлением и без тела метода.
Инкапсуляция: инкапсуляция заключается в том, чтобы окружить процесс и данные. Доступ к данным может быть достигнут только через определенный интерфейс, то есть метод.В java ключевые слова private, protected и public используются для достижения инкапсуляции. Инкапсуляция объединяет все компоненты объекта.Инкапсуляция определяет, как программа обращается к данным объекта.Фактически инкапсуляция использует методы для сокрытия данных класса и управления степенью, в которой пользователи могут изменять класс и получать доступ к данным. Надлежащая инкапсуляция может упростить понимание и поддержку кода, а также повысить безопасность кода. Общая инкапсуляция классов и инкапсуляция методов.
Наследование: подкласс наследует характеристики и поведение родительского класса, так что объект подкласса имеет методы и свойства родительского класса.Родительский класс также называется базовым классом.
Полиморфизм: способность иметь несколько различных проявлений одного и того же поведения. Преимущества: Уменьшенная связанность, гибкость и расширяемость, обычно реализуемая путем наследования классов или переопределения методов.
Разница между перегрузкой и переопределением?
отвечать: Перегрузка. Указывает, что в одном классе может быть несколько методов с одинаковыми именами, но списки параметров этих методов различаются, а количество или типы параметров различаются. Переопределить Переопределить: переопределить метод в родительском классе, указав, что метод в подклассе может иметь то же имя и параметры, что и метод в родительском классе.
Может ли интерфейс наследовать интерфейс? Поддерживает ли интерфейс множественное наследование? Поддерживают ли классы множественное наследование?
отвечать:
- Интерфейс может иметь статические методы и тела методов.
- Все методы в интерфейсе должны быть абстрактными методами (не после JDK8).
- Интерфейсы не наследуются классами, а реализуются классами
- Интерфейс поддерживает множественное наследование, класс не поддерживает множественное наследование классов
Написать метод для передачи в него двух ненулевых значений int и реализовать обмен переменными.Сколько есть способов?
A: Три способа перечислены ниже: Первый (самый распространенный):
public static void swap(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
int temp;
temp=a ;
a = b;
b=temp;
System.out.printf("\na=%d, b=%d",a,b);
}
Секунда:
public static void swap(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
a = a + b;
b = a - b ;
a = a - b;
System.out.printf("\na=%d, b=%d",a,b);
}
Третий тип (операция XOR, число дважды объединяется XOR с другим числом, а результат XOR числа и самого себя равен 0):
public static void swap2(int a, int b){
System.out.printf("a=%d, b=%d",a,b);
a = a^b;
b = b^a;
a = a^b;
System.out.printf("\na=%d, b=%d",a,b);
}
Эпилог
Конечно, вышеприведенная часть — это лишь верхушка айсберга основных вопросов по Java. Знать эти вопросы далеко не достаточно. Если вы хотите продолжать совершенствоваться, вы должны продолжать учиться и решать вопросы. Примечание. Если у вас есть какие-либо вопросы по поводу вопроса, оставьте сообщение, чтобы исправить его!