When you assign a char to an int it becomes an int. So int a = (char)'0' is no different than int a = '0'. Same is true with short or byte since when you assign to an int it will simply be assigned with any sign extension requirements. Casting is used when you want to assign something to a type where automatic conversion won't take place (the compiler won't do it for you). Like int a = 3.6 won't work. You need to cast 3.6 to an int to assign it to an int type. So when you add to shorts together and assign to an int, it will do the conversion for you.
So in the following line:
int nine = (char)(zero + number) is the same as
int nine = (zero + number).
Regards,
Jim