Parce que, quand t écris ça :  
 
System.out.println(a+b+c+"="+(a+c));
 
avec a et c qui sont des entiers (int) et b un char, ben Java additionne le tout (un char et un int, au final, hein, ben c la même chose!)  
donc, tu a brillament démontré que b casté en char vaut 42 en int! 
D
 
L'opérateur "+" ne fait de la concaténation de chaînes UNIQUEMENT s'i ly a une chaîne d'un des deux côtés de l'opérateur...Donc, avec des "" entre chaque, ça marche! 
Mais bon, cet opérateur est à utiliser avec précaution : au delà de 1 occurence dans une chaîne, la JRE instancie un StirngBuffer(...donc bon, t'as plutôt intérêt à faire ça :  
 
StringBuffer sb= new StringBuffer();
sb.append(a);
sb.append(b);
sb.append(c);
sb.append("=" );
if (b=='+'
 {
sb.append(a+c);
}
if (b=='-'
 {
sb.append(a-c);
}
if (b=='/'
 {
sb.append(a/c);
}
if (b='*'
 {
sb.append(a*c);
}
System.out.println(sb.toString());
 
 
voilà voilà..