Языковые различия, как уже упоминали другие, являются наиболее очевидными и проблемными. Я также считаю, что различия в библиотеках иногда сводят с ума и тратят много времени.
«Детали» могут действительно помочь вам, например, понять, как работает модель памяти или как ваша среда выполнения выполняет оптимизацию. Обладая глубокими знаниями модели памяти среды выполнения, методов сбора мусора, модели потоков и т. Д., Вы можете значить изменений в мышлении и разработке программного обеспечения.
Я не могу разумно сравнить детали Java и C # на этом уровне, но я могу сказать, что многие вещи, которые я делал бы в Java, мне некомфортно или неуверен, если я могу сделать в C #, потому что я не понимаю его низкоуровневые детали. , Это влияет на код, который я пишу для всего, от взаимодействия между графическим интерфейсом и рабочим до управления памятью.
Я обнаружил, что лучший способ справиться с различиями в Java и C # - просто думать о них как о совершенно разных языках - избегайте ловушек «C # и Java по сути один и тот же язык с разными именами классов».