Несмотря на сходство в названии и постоянные предупреждения о неизбежной смерти как Java, так и JavaScript, оба языка по-прежнему остаются популярными. Более того, и Java, и JavaScript отлично подходят для перехода на другие языки. Изучение того или иного перед такими языками, как Python, дает вам определенное je ne sais quoi, почти почетный знак Я шел в гору в оба конца. Достаточно сказать, что они широко используются и хороши для изучения. С учетом сказанного, между ними есть некоторые различия. Начнем с некоторых основ.

Массивы: Типы

Ява

Массивы в Java должны содержать элементы одного типа. Например, если вы объявляете массив типа «int», то каждый элемент в этом массиве лучше иметь тип «int».

Приведенный выше код прекрасно компилируется и возвращается, как и ожидалось. Но что, если мы добавим несколько строк?

Код не компилируется и возвращает ошибку, говорящую нам о том, чего мы и ожидали: что у нас не может быть строк в массиве целых чисел! Но… что, если мы попробуем вставить символы вместо строк? Все становится немного интереснее…

Когда 2 и 3 являются символами, код не только компилируется и возвращается правильно, но также мы получаем некоторые неожиданные (возможно) результаты. Откуда взялись эти 49 и 50? В этом случае компилятор Java интерпретирует наши символы 1 и 2 и возвращает их коды ASCII.

JavaScript

В JavaScript массив МОЖЕТ содержать элементы разных типов. Например:

В нашем массиве myArray есть как строки, так и целые числа. JavaScript успешно компилируется, никаких ошибок или исключений не возникает, и мир продолжает вращаться.

Массивы: индексы

Ява

В Java существуют ограничения на то, что можно и что нельзя получить в массиве. Например, в нашем предыдущем массиве intArray мы можем без проблем получить доступ к элементам с индексами 0–6 (помните, 0-индексация здесь!) Как показывает наш цикл for.

Но что произойдет, если мы попытаемся получить доступ к элементу за пределами того, что содержит наш массив, скажем, с индексом 6?

Как видите, мы успешно можем изменить значение элемента с индексом 3 с 3 на 5690. Но когда мы пытаемся изменить значение элемента с индексом 8 (в нашем массиве всего 6 индексов), мы выдать исключение Out of Bounds Exception.

Когда мы устанавливаем наш цикл for для увеличения i на единицу больше, чем длина нашего массива, он выводит все существующие элементы, но выдает исключение, как только пытается получить доступ к индексу, которого нет. Что, если мы попробуем это в JavaScript???

JavaScript

В JavaScript, когда мы пытаемся добавить элемент в несуществующий индекс, происходит совсем другое:

В JavaScript новый элемент не только успешно добавляется, но и создает индексы для всех промежуточных элементов! Что, если мы попытаемся вставить элемент в индекс 100 вместо индекса 10?

JavaScript ВСЕ ЕЩЕ создает все новые индексы. Святой дым!

Вопросы, комментарии, опасения? Я где-то накосячил или что-то упустил? Дайте мне знать!