After knowing primitive data types and Java rules of Data Type Casting (Type Conversion), let us cast long to byte as an example.
The byte takes 1 byte of memory and long takes 8 bytes of memory. Assigning 8 bytes of memory to 1 byte of memory requires explicit casting. This is known as narrowing conversion.
The left-side value can be assigned to any right-side value and is done implicitly. The reverse like long to byte requires explicit casting.
Examples of implicit casting
int x = 10; // 4 bytes
long y = x; // 4 bytes to 8 bytesbyte x = 10; // 1 byte
int y = x; // 1 byte to 4 bytes
Following program on long to byte explains explicit casting. Observe, the Java synyax where long is casted to byte.
public class Conversions
{
public static void main(String args[])
{
long l1 = 10; // 8 bytes
// byte b1 = l1; // error, 8 bytes to 1 byte
byte b1 = (byte) l1; // 8 bytes long is type converted to 1 byte value byte explicitly
System.out.println("long value: " + l1); // prints 10
System.out.println("Converted byte value: " + b1); // prints 10
}
}

Output screenshot of long to byte Java
byte b1 = l1;
The above statement raises a compilation error "possible loss of precision".
byte b1 = (byte) l1;
The long l1 is explicitly type casted to byte b1. Observe, the syntax of explicit casting. On both sides, it should be byte only.