You have presumably already initialised the two objects in that array, otherwise you will suffer an Exception.
Whichever class is in that array has a size field, with get and set methods. You start by using the set method to give the size field of the 1st element the value 30.
Then you retrieve the same value from the get method (presumably still 30) and assign it to x. Because it is a primitive (int), there are now two copies of 30 around.
Then you get the 2nd element in the array and use its set method to assign 8 to its size field.
It is also entirely possible that the setSize method has logic in it that prevents you setting the size to 30. Maybe it only allows sizes to between 1 and 10, and if you pass it something larger, it reduces it down to 10.
Without seeing the code of setSize(), we really don't know what it could be doing.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors