Java

почему одни переменные могут объявлять буквы другие цифры?

переменная double может объявлять только вещественные числа а переменная string только буквы так зачем вообще разделять переменные на возможности почему нельзя сделать одну переменную которая может объявлять что угодно
> почему нельзя сделать одну переменную которая может объявлять что угодно

Можно, но это имеет ряд недостатков. Есть языки программирования, где у переменных не указывается тип данных, например Python и JavaScript. Это называется динамической типизацией. В Java тоже можно объявить переменную, которой можно присвоить всё что угодно (если указать тип Object).

> string только буквы
Нет, string - это строка любых символов: букв, цифр, знаков. Например, текст этого сообщения мог бы храниться в переменной типа String.
Niko Nikol
Niko Nikol
36 282
Лучший ответ
А как потом с этой мега переменной работать?

a=1;
b=2;
c=a+b; что должно получиться? число 3 или текст 12 ?
В языках программирования есть такая вещь как типизация. Она может статическая, а может быть и динамическая.
В языках Си, С++, Java, Pascal, C# - она статическая (с некоторыми оговорками, но типы в основном статические). Это означает, что вы должны сразу указывать тип переменной и в зависимости от этого, будет понятно, что с этой переменной делать.
В языках python и javascript она динамическая, то есть тип переменной определяется по ходу, в зависимости от того, что в эту переменную положили и что с ней сделали. Жизнь программиста упрощается, но это может доставить неприятности, типо неправильного воспринимания типа. Например хочешь сложить 2 числа, а тут хоп, программа думает, что строки и вместо 1+5=6 ты получаешь 1+5=15. Вот буквально вчера с такой проблемой столкнулся. Я в javascript пытаюсь сделать цикл где к числу x прибавляется определенный заранее определенный шаг. Цикл выполняется один раз и я думал, а почему это. Минут 30 потратил на решение этой проблемы, а оказалось, что числа складываются как строки 1 + 0.9 = 10.9, вот и цикл выполняется один раз. Пришлось явно приводить переменную к типу float.
Тут подробно всё написано - habr.com/post/161205/
Niko Nikol > Жизнь программиста упрощается
по-моему наоборот: недостатков больше чем достоинств.