Переменные примитивных типов состоят из битов и представляют свои значения, ссылочные переменные содержат биты, которые описывают способ получения объекта. Для сравнения двух примитивов применяйте оператор ==
Оператор == может быть использован для сравнения двух переменных любого типа - он просто проверяет на соответствие их биты.
Выражение if (a == b) { ... } смотрит на биты внутри a и b и возвращает true, если они совпадают.
int a = 3;
byte b = 3;
if (a == b ) {...}
Но как проверяет на соответствие их биты. Если int 32 бита, а byte 8 бит? В данном примере a не должно было быть равно b потому что int и byte имеют разные биты
Проще говоря для примитивов оператор == сравнивает их значения это я знаю, но читая в книге про биты вообще ничего не понимаю. Объясните пожалуйста, если возможно визуально, заранее благодарю
Если я ничего не путаю, то при сравнении выполняется автоматическое приведение типов, то есть если это возможно то , обе переменные будут приведены к общему типу данных:
например если есть byte b = 8 и int i = 10, то при их сравнении b==i будет автоматически произведено что-то вроде:
(int) b == i
Числа вообще хранятся в виде единичек и ноликов, то есть при преобразовании int i 257(000000...100000001) в byte i просто обрежутся все лишние байты слева и переменная i будет равна не 256(111111111), а (000000001)
Т.е. касательно вашего вопроса просто автоматически добавятся нулевые биты для переменной типа byte
Вообще чтобы понять эту тему вам просто нужно поподробнее почитать про явное и неявное Преобразования базовых типов данных и как оно вообще выполняется, вот пара ссылок:
https://metanit.com/java/tutorial/2.2.php
Перевод int в byte?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости