Тип приведение обрабатывает значение (блок памяти), на которое ссылается переменная, как тип, отличный от типа, который объявлена как переменная.
Тип преобразование фактически выполняет преобразование этого значения.
Во многих языках некоторые приведения (обычно числовые) приводят к конверсиям (это может сильно отличаться в зависимости от языка), но в основном это просто "трактовать этот X как Y".
Как и большинство аспектов человеческого языка, к сожалению, термины используются в разных сообществах немного по-разному, в основном по языку. Например, см. Комментарий Джеймса ниже о C ++ & mdash; Слово «приведение» там имеет гораздо более широкое значение, чем приведенное выше определение, которое больше относится к форме C или Java. И просто для забавы, Java Language Spec на самом деле попадает в различные виды приведений, включая преобразований приведения . Но вышесказанное - хорошее эмпирическое правило.
А вот простой случай:
В Java до появления дженериков не было ничего необычного в том, чтобы при работе с картами делать лот типотипирования:
Map m = new HashMap();
m.put("one", "uno");
// This would give a compiler error, because although we know
// we'll get a String back, all the compiler knows is that it's
// an Object
String italian = m.get("one");
// This works, we're telling the compiler "trust me, it's a String"
String italian = (String)m.get("one");
К счастью, добавление generics решило эту проблему, поскольку приведение таким образом, как правило, является хрупким процессом с проблемами обслуживания.
Напротив, вы бы преобразовали , если бы у вас была строка цифр:
String s = "1234";
... и нужно было знать, какое число эти цифры представляют в десятичном виде:
// Wrong (cast)
int n = (int)s;
// Right (conversion)
int n = Integer.parseInt(s, 10);