N достойных внимания фрагментов кода серверной части
N достойных внимания фрагментов кода серверной части

Ставьте лайк и читайте еще раз, Java продвинута более чем наполовину

Вы должны были использовать тернарный оператор раньше,Есть такая проблема на зарубежных форумах:Ternary operator: bad or good practice?тернарный оператор:Плохая привычка или хорошая привычка?

Наибольшее количество голосов получил ответ от парня по имени Тед Дзюба.

Для удобства чтения я использую тройку только в том случае, если она умещается в строке из 80 символов.

For the sake of readability, I only use a ternary if it fits into one 80-char line.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Привет всем, я брат Нэн.

Будучи лидером в изучении и продвижении Java, я считаю, что вам будет полезно пройти собеседование и получить предложение о работе в той компании, которую вы хотите.

⭐⭐Эта статья включена в《JavaРасширенное руководство по обучению》:https://github.com。。

1. Тип данных

1.1 статические модифицированные переменные

Все содержание этой статьи очень часто встречается в вопросах письменного экзамена по оценке предприятий, и в них могут быть ошибки. Обратите внимание.

Ребята, вы заметили это, когда играли в Java?,Объект, подобный следующему,Даже если мы не присваиваем значение переменной,После создания эта переменная по-прежнему будет иметьзначение по умолчанию

Язык кода:java
копировать
class A {
    int a;
}

System.out.println(new A().a);
Язык кода:java
копировать
Результат выполнения программы:
0

Иногда студенты, изучающие фронтенд, просят серверную часть дать значение по умолчанию 0, и нам даже не нужно этого делать, компилятор Java выполнит всю работу.

На самом деле это особенность языка Java. Например, переменные, то есть переменные-члены, если они являются базовыми типами данных, будут иметь значение по умолчанию. Различные базовые типы имеют разные значения по умолчанию. Давайте рассмотрим значения по умолчанию различных базовых типов ниже.

Язык кода:java
копировать
int a; //0
short b; //0
long c; //0
float d; //0.0
double e; //0.0
boolean f; //false
byte g; //0
char h; //нулевой символ

1.2 Автоматическое продвижение типов

(1) байт в Java、short、charПри выполнении математических расчетовпродвигатьдляintтип,Базовые знания, которые легко упустить из виду,Брат Нэн медленно сказал.

Правильно ли работает следующий код?

Язык кода:java
копировать
byte b1 = 1, b2 = 2, b3;
b3 = b1 + b2;

Ответ такой, как вы и ожидали, то есть ошибка компиляции.

Язык кода:shell
копировать
# Содержимое ошибки
java: Несовместимые типы: Могут быть потери при преобразовании из int в byte

Поскольку во время математических вычислений byte, short и char будут преобразованы в тип int, нам необходимо преобразовать результат в тип byte во время операции. Правильный подход заключается в следующем.

Язык кода:java
копировать
b3 = (byte)(b1 + b2);

(2) Но если байтовая переменная записана таким образом, мы добавляем Final и к b1, и к b2. Удивительно, что во время компиляции не будет сообщено об ошибке.

Язык кода:java
копировать
final byte b1 = 1, b2 = 2, b3;
b3 = b1 + b2;

Эта ситуация является особым случаем и специально обрабатывается компилятором Java. Мы называем это оценкой константных выражений во время компиляции. b1, b2 и b3 — постоянные значения. b3 будет назначен компилятором на этапе компиляции. Он не будет включать в себя упомянутые выше математические вычисления и будет преобразован в тип int, поэтому ошибок компиляции не будет.

(3) А что, если это так?

Язык кода:java
копировать
final byte b1 = 1; byte b2 = 2, b3;
b3 = b1 + b2;

Вышеупомянутые две байтовые переменные,Есть только одна финальная модификация,То естьОперация присвоения b3Невозможно сделать во время компиляции,Тогда этот код все равно сообщит об ошибке,Нам все еще нужно преобразовать результат в байтовый тип.

Правильный подход заключается в следующем.

Язык кода:java
копировать
b3 = (byte)(b1 + b2);

Переполнение 1,3 байта

Диапазон данных типа байта составляет -128 ~ 127. Когда это значение превышает 127, оно преобразуется в - 128. Почему?

Язык кода:java
копировать
byte i = 127;
System.out.println(++i);
Язык кода:shell
копировать
Результат выполнения программы:
-128

byteтип的最大值127在二进制中表示для01111111,Когда мы добавляем 1 к значению 127,Добавление 1 к каждому биту приведет к переносу,В результате все биты перевернутся.(от01111111становиться10000000),и10000000Десятичное представление-128。

1.4 Боллеанское присвоение

Чаще всего в бизнес-разработке пишут условные операторы, особенно для старых проектов эпохи итераций, с одним набором операторов if за другим.

Теперь, когда мы увидели так много условных операторов, каков результат выполнения следующего кода?

Язык кода:java
копировать
Boolean flag = false;
if (flag = true) {
    System.out.println("true");
}
else {
    System.out.println("false");
}

В Java условное суждение имеет функцию присваивания, и оператор try также имеет ее. В это время фальгу присваивается значение в условном суждении.

Язык кода:shell
копировать
Результат выполнения программы:
true

2. Работа программы

2.1 Тип продвижения

Я считаю, что многие южнокорейские друзья сталкивались с ловушками тернарного оператора. . . Давайте разберемся, что такое тернарный оператор?

Тернарный оператор в Java — это краткий инструмент для создания условных выражений. Его синтаксический формат: выражение 1 : выражение 2.

еслисостояниедля真(true),Тогда результат выражения будетВыражение 1;еслидля假(false),РезультатВыражение 2

Если это так, брат Нэн спросил: Каков окончательный тип данных o1?

Язык кода:java
копировать
Object o1 = true ? new Integer(1) : new Double(2.0);

Приведенная выше строка кода фактически эквивалентна этой строке.

Язык кода:java
копировать
Object o1 = true ? new Double(1.0) : new Double(2.0);

Очень важной деталью тернарного оператора является унификация типов. Диапазон данных типа Double больше, чем у типа Interger.,такJava编译器会对值тип进行типпродвигать,Наконец, тип Integer преобразуется в тип Double.

2.2 Проблема самоприращения

下面是Брат Нэн编写的两个i++Самовозрастающие проблемы, подверженные ошибкам,Оценки на собеседовании часто появляются в вопросах письменного экзамена.

(1) Первый вопрос брата Нана: каков результат выполнения следующего кода?

Язык кода:java
копировать
int i = 0;
i = i++ + i; 
Язык кода:shell
копировать
Результат выполнения программы:
1

(2) Второй вопрос брата Нана: каков результат выполнения следующего кода?

Язык кода:java
копировать
int i = 0;
i = i++;
System.out.println(i);
Язык кода:shell
копировать
Результат выполнения программы:
0

2.3 Строковый объект

Когда мы создаем объект String, JVM на самом деле выполняет большую часть работы за кулисами. Объекты String могут существовать в пуле констант и куче памяти. Разберем конкретные вопросы подробнее.

(1)Следующий фрагмент кодаНе включеноссылочный тип,Просто чистыйБуквальное сращивание,Таким образом, в пуле констант будет создан только один объект.

Язык кода:java
копировать
String s = "JavaProGuide" + «Брат Нэн» + 666;

(2)Следующий фрагмент кодаВключатьПонятноссылочный тип,Всего создано 3 объекта.,Вы правильно догадались?

Язык кода:java
копировать
String s = "Hello";
s = s + " world!"

"Hello"、" world!"Все принадлежатбуквальный,Поэтому они будут добавлены в пул строковых констант Java.

иs + " world!"这么一个代码段涉及Понятноссылочный тип,Таким образом, он создает в памяти новый объект Строковый.,не существует в постоянном пуле,Вместо этого он существует в куче памяти.

(3) Следующий фрагмент кода создает в общей сложности два объекта, которые существуют в пуле констант и куче памяти соответственно.

Сначала новый объект поместит объект String в память кучи, и во время этого процесса он сначала проверит, существует ли пул констант. JavaProGuide

Язык кода:java
копировать
String str = new String("JavaProGuide");

Нажмите здесь, «JavaProGuide» — это расширенное руководство по изучению Java, которое охватывает основные знания, необходимые Java-программистам, и ключевые моменты собеседований.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

добро пожаловатьсосредоточиться на Брат Нэн的公众号:Расширенный компас Java。公众号里有Брат Нэн珍藏整理的大量优秀pdfкниги!

Я Брат Нэн, Нэн — это Нэн. Я нашла ваши интересные комментарии на Get➕Like➕Follow.

Я участвую в последнем конкурсе эссе для специального учебного лагеря Tencent Technology Creation 2024. Приходите и разделите со мной приз!

Творить непросто, поэтому вы можете ставить лайки, собирать и подписываться, чтобы поддержать его. Ваша поддержка — самая большая мотивация для моего творчества.❤️

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose