> Java je staticky typovaný jazyk – všechny proměnné musíme deklarovat včetně jejich typu
Ne, staticky typovaný jazyk se vyznačuje tím, že se typy kontrolují v době kompilace. A Java je staticky i dynamicky typovaná (ne všechny typy umí ověřit v době kompilace).
Také by stálo za to říci, co je to typ.
> Silné typování znamená, že jazyk kontroluje typy proměnných za běhu a odhaluje jejich chybné použití. Java je silně typovaný jazyk. PHP slabě typovaný.
A PHP nekontroluje typy proměnných za běhu? Ale kontroluje a v případě potřeby provede implicitní přetypování, tomu se říká slabé typování. V podstatě každý jazyk, který někdy dělá implicitní přetypování je slabě typovaný. Silné typování nemá nic společného s kontrolou typů za běhu.
> Zdrojový kód napsaný programátorem není možné interpretovat
Možné to asi bude ;-)
> Můžeme „sčítat“ čísla a znaky, ale výsledek asi není to, co bychom očekávali.
Jenže nesčítáte číslo a znaky, ale číslo a adresu, přirozeně je výsledkem číslo.