Gostaria que explicassem qual a tipagem de JAVA, pelo que li, tem tipagem FORTE, mas por que acontece o seguinte:
int aInt, bInt, cInt;
String aStr, bStr, cStr;
char aCh, bCh, cCh;
double aDb,bDb, cDb;
float aFlt, bFlt, cFlt;
aCh =‘a’;
bInt = 10;
aInt = aCh + bInt; //int = int + char
System.out.println("Teste int = int + char: "+aInt);
bStr = “a”;
aInt = 10;
aStr = bStr + aInt; //String = String + int
System.out.println("Teste String = String + int: "+aStr);
aDb = 1.12;
aStr = bStr + aDb; //String = String + double
System.out.println("Teste String = String + double: "+aStr);
aFlt = -9;
aDb = aInt + aFlt; //Double = int + float
System.out.println("Teste Double = int + float: "+aDb);
Tanto as variáveis mudam, como os prints concatenam os valores dados com a string do print.
Eu entendo que é natural que um short int, que é um char, poder ser somado com um inteiro, e também entendo que um double poder receber um int + float, mas não entendo por que dizer que a tipagem de JAVA é FORTE já que não estou recebendo variáveis do mesmo tipo, e retornar uma variável de outro tipo como no caso das strings e do double;
Por favor, quem souber essa me diz, blz?.. por que numa tipagem dinâmica isso não é aceito, dá erro eu operar soma com tipos diferentes. Não dá erro uma variável que tem um tipo receber um outro tipo completamente diferente. Por que JAVA tem tipagem FORTE e ESTÁTICA se essas coisas acontecem? Obrigado!