Делает ли Java различие между типом значения и ссылочным типом - PullRequest
17 голосов
/ 05 марта 2011

C # делает различие между этими двумя.Java делает то же самое или по-другому?

Ответы [ 3 ]

22 голосов
/ 05 марта 2011

В Java все объекты и перечисления являются ссылочными типами, а все примитивы являются типами значений. Различие между ними такое же, как в C # в отношении семантики копирования, но вы не можете определить новый тип значения в Java.

4 голосов
/ 05 марта 2011

На самом деле, все в Java передается по значению, ссылки являются особым типом значения, так же как указатели являются значениями в C. Подробнее о семантике здесь:

http://javadude.com/articles/passbyvalue.htm

C #, с другой стороны, имеет реальные ссылки в стиле C ++, которые не имеют отношения к ссылочным значениям ... Может ли это быть еще более запутанным, чем это?

2 голосов
/ 05 марта 2011

В Java примитивы являются типами значений, классы и массивы являются ссылочными типами.

...