Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Java pass by reference vs pass by value vs C pass by reference vs pass by value?


Both languages are strictly pass by value. Java pretty much uses pointers (references in name only) and primitives only, and both languages copies these all by value. For actual reference you have to go to c++.


For intro computer science students, pointers-as-explicit-references are far easier to comprehend than Java's esoterica.

Said as someone who took intro computer science at 2 universities across 3 courses (C/C++, Python, Java), due engineering to art to computer science major switching.

I understand why Java did what they did, from a performance standpoint, but that's a poor highest value to hold for education use.

And in retrospect, was batshit user-hostile. F.ex. with a few more keywords and rules, C# smoothed off so many rough edges.


> pointers-as-explicit-references are far easier to comprehend than Java's esoterica.

What is esoteric about Java’s references? They are basically equivalent to C pointers without arithmetics and marketed as references. It is pretty much the same for most high level languages.


The object/primitive distinction, which seems like something an intro CS student really shouldn't be wasting their time learning.

IMHO, the C-style */& was far clearer when I was first learning to program. Especially since you could just echo out the (virtual) memory address.


The object/primitive distinction is pretty much the very short list of primitives (even written with lower case letters) vs every other type.

> IMHO, the C-style */& was far clearer when I was first learning to program

Tell that to the million segfaults that students learning C experience (or worse, they don’t even get it!!)


Yes, int vs Integer. It does make sense that those would function differently. /s ;)

And C definitely has some inscrutable errors, but to me once I understood them, they always made sense in computer terms. Whereas Java errors and oddities only make sense in Java terms.


> For intro computer science students, pointers-as-explicit-references are far easier to comprehend than Java's esoterica.

C pointers are even worse as an introduction.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: