Я пытаюсь преобразовать int и long, где я попытался назначить переменную int
переменной long
. Код выглядит следующим образом:
public static void main(String []args){
int i = 1024;
long j = i;
long k = i*i*i*i;
System.out.println("j= " +j+ ", k= " +k);
}
Итак, при печати j
он просто дал результат 1024
. Но при печати k
он показал переполнение (k
= 0). Я рассмотрел эту проблему, используя эту технику, где я явно выбрал каждый i
в long
. то есть.
public static void main(String []args){
int i = 1024;
long j = i;
long k = ((long)i)*((long)i)*((long)i)*((long)i);
System.out.println("j= " +j+ ", k= " +k);
}
Теперь он показал правильные значения как j
, так и k
.
Итак, я хотел знать, почему это нужно, чтобы придать int
во втором случае, но не в первом. k
, будучи long
, может сохранить это значение после этого тяжелого присвоения. Но почему он не был правильно назначен?