Char is UTF-16 code representation - read it as 2-byte integral value. int is 4-byte integral value. Java can implicitly cast smaller sized integrals to larger ones - char to int, int to long, because conversion this way doesn't lead to precision or data loss.
The vice versa way doesn't work - you cannot implicitly convert int to char and long to int, because int has a much wider range of possible values than char.