Можно создать дубликат:
How are Integer arrays stored internally, in the JVM?Как Java обрабатывает примитивные типы массивов?
В C#, когда вы создаете новый массив, который является ссылочным типом, так что помещает указатель на стек и сам объект в Heap. Если вы создаете этот массив с простыми примитивными типами, такими как int
, double
и т. Д. То, что он делает, это поставить значения точно там, где они помещены в кучу, вместо указателя, который указывает на другой адрес кучи, где хранится его содержимое.
Так может кто-то объяснить, как это происходит на Java? Java использует Integer
(ссылочный тип) в массивах все время или рассматривает типы значений, как это делает C#?
int[] hello = new int[5];
hello[0] = 2; // C# put this value directly in same slot and doesn't
//create a wrapping object.
Я знаю вещь, которая называется Типы упаковки в Java, которой нет на C#. C# имеет авто-бокс, но Int32
позволяет говорить не ссылочный тип, а ValueType
, где Integer
- это объект, а не int
. Вы можете либо ввести значение с помощью Object o = 5;
, либо если у struct есть родительский класс, вы можете использовать его, чтобы обернуть его в кучу (бокс).
http://stackoverflow.com/questions/76549/how-are-integer-arrays-stored-internally-in-the-jvm – theglauber
Проблем нет. Однако, в то время как 'List' отлично в C#, Java это не нравится. –
harold
http://stackoverflow.com/questions/5564423/arrays-in-java-and-how-they-are-stored-in-memory – theglauber