2015-10-02 7 views
2

Я новичок в языке программирования Java и задал вопрос о массивах. String[] массивы держать строки. Array[] массивы провести другие массивы. Как насчет массива Object[]? Очевидно, что они будут содержать Object с. Но, поскольку Object является суперклассом для всего в Java, означает ли это, что массив Object[] может содержать каждый тип Object в Java? Другими словами, может ли массив удерживать объекты, являющиеся дочерними классами объекта, который был создан для хранения массива? Может ли массив Number[] содержать целое число?Что может содержать массив Object []?

+0

Да, 'Object []' может содержать любой тип 'Object' (вы, возможно, придется бросить его, как, например, когда вы добавляете один в массив) - в' Номер [] ', однако, может содержать только объекты« Number »(не собственный« int 'или« Integer ») (однако, если вы добавите их в объекты« Number », они будут хорошо вписываться) – ochi

ответ

5

Да, но вы можете многому научиться, пытаясь его для себя с небольшой программой:

public class Example { 
    public static void main(String[] args) { 
     String string = "String"; 
     Integer integer = new Integer(1); 
     int integerPrimitive = 2; 
     Float floatBoxed = new Float(1.23); 
     float floatPrimitive = 1.23f; 

     // Can hold different types inheriting from Object 
     Object[] objects = new Object[] { 
       string, 
       integer, 
       integerPrimitive, 
       floatBoxed, 
       floatPrimitive }; 

     // Can hold anything that inherits from Number; cannot hold a String 
     Number[] numbers = new Number[] { 
       integer, 
       integerPrimitive, 
       floatBoxed, 
       floatPrimitive }; 

     for (int i = 0; i < objects.length; i++) { 
      System.out.println("objects[" + i + "] = " + objects[i]); 
     } 

     for (int i = 0; i < numbers.length; i++) { 
      System.out.println("numbers[" + i + "] = " + numbers[i]); 
     } 
    } 
} 

Выход:

objects[0] = String 
objects[1] = 1 
objects[2] = 2 
objects[3] = 1.23 
objects[4] = 1.23 
numbers[0] = 1 
numbers[1] = 2 
numbers[2] = 1.23 
numbers[3] = 1.23 

Ключа к зная, что контейнер массива может содержать сначала наблюдение если типы объектов одинаковы или если объект является подклассом типа контейнера массива.

В вашем вопросе, если Number может провести Integer, вы должны увидеть наследование Integer в Javadocs, что он наследует от Number. Вы также можете увидеть, что Number наследуется от Object.

Class Number

Class Integer

+0

Вау, спасибо! объяснил это мне. –

Смежные вопросы