Please have a look into the below code
int a =10;
int b =20;
System.out.println((a>b)?\'a\':65);//A
System.out.println((a>b)?a:65);//65
System.out.prin
This behavior is documented in the JLS - 15.25. Conditional Operator ? : :
If one of the operands is of type T where T is byte, short, or char, and the other operand is a constant expression (§15.28) of type int whose value is representable in type T, then the type of the conditional expression is T
When you write
(a > b) ? 'a' : 65
the second type is converted to a char.
Go through the JLS, it explains the behavior (same approach) in other cases.