2017-02-06 4 views
-1

Уверен, что на этот вопрос будет дан ответ, но я не уверен, что это за термин для поиска.Создание различий объектов java

Я уверен в разнице между:

JPanel a = new JPanel(); 
    a = new JPanel(); 

С второй линии делает потребность быть объявлена ​​как переменная в верхней части класса?

Может кто-нибудь, пожалуйста, прикрепите ссылку, где я могу узнать об этой теме. Я знаю, что это очень просто.

+0

В первой строке вы объявляете 'a' как' JPanel', затем назначьте ему новый объект. Во второй строке вы назначаете только новый объект, и его нужно заранее объявить (как «JPanel» или один из классов/интерфейсов, который он расширяет). – Aaron

+0

Кроме того, я нахожу [учебники Oracle] (https://docs.oracle.com/javase/tutorial/) хорошей отправной точкой – Aaron

+1

См. Ответ @YCF_L, другими словами, вы не можете инициализировать свой объект 'a' by ключевое слово 'new' без объявления. В Java вы должны объявить тип своего объекта (по JPanel a, что означает, что я хочу объект 'a' типа JPanel) до Инициализации. – Hrabosch

ответ

11

Есть три случая: декларации, Инициализационных, и (декларации и инициализация):

Это объявление вашего объекта:

Эта инициализация вашего Объект:

a = new JPanel(); 

И вы можете сделать их обоих в один шаг, как вы делаете:

JPanel a = new JPanel(); 
1

Я думаю, вы должны понимать, что это сильный язык, набрав:

Java является строго типизированным языком

https://en.wikipedia.org/wiki/Strong_and_weak_typing

Java, Pascal, Ada и C требуют, чтобы все переменные имели объявленный тип и поддерживали использование явных приведений арифметических значений для других арифметических типов. Иногда говорят, что Java, C#, Ada и Pascal являются более строгими, чем C, утверждение, которое, вероятно, основано на том, что C поддерживает больше видов неявных преобразований, а C также позволяет явно указывать значения указателей, в то время как Java и Pascal не. Сама Java может считаться более строго типизированной, чем Pascal, поскольку манеры уклонения от системы статического типа в Java контролируются системой типов виртуальной машины Java. C# похож на Java в этом отношении, хотя он позволяет отключить проверку динамического типа, явно помещая сегменты кода в «небезопасный контекст». Система типа Паскаль была описана как «слишком сильная», потому что размер массива или строки является частью его типа, что затрудняет некоторые задачи программирования.