In Java nu exista operatorul sizeof din C, pentru determinarea memoriei ocupate de un tip sau de o variabila, pentru ca nu este necesar acest operator. Cea mai importanta diferenta dintre Java, pe de o parte, si limbajele C, C++ pe de alta parte, este absenta tipurilor pointer din Java. Deci nu exista posibilitatea de a declara explicit variabile pointer si nici operatorii unari ‘&’ (pentru obtinerea adresei unei variabile) si ‘*’ (indirectare printr-un pointer). Operatorul new pentru alocare dinamica din C++ exista in Java, dar are ca rezultat o referinta si nu un pointer. Supradefinirea sau supraincarcarea functiilor (“Function Overloading”) a fost introdusa in C++ pentru a permite definirea mai multor functii cu acelasi nume si cu acelasi tip dar cu argumente diferite intr-o aceeasi clasa. Pot exista functii cu acelasi
nume (eventual si cu acelasi argumente si tip) in clase diferite, dar acesta nu este un caz de supradefinire, fiindca ele se afla in spatii de nume diferite. In Java, ca si in C++, o functie este deosebita de alte functii din aceeasi clasa (de catre compilator) prin "semnatura" sa (prin "amprenta" functiei), care este formata din numele, tipul si argumentele functiei. Un exemplu uzual de functii supradefinite este cel al functiilor de afisare la consola in mod text “print” si “println”, care au mai multe definitii, pentru fiecare tip de date primitiv si pentru tipurile clasa String si Object...