Синтаксис в сторону, есть ли разница между двумя следующими утверждениями?Инициализация массива и ключевое слово «новое»
String[] str = { "test" };
и
String[] str = new String[] {"test"};
Синтаксис в сторону, есть ли разница между двумя следующими утверждениями?Инициализация массива и ключевое слово «новое»
String[] str = { "test" };
и
String[] str = new String[] {"test"};
Нет, нет.
String[] str = { "test" };
Будет interperated в JVM, как
String[] str = new String[] {"test"};
Нет, нет никакой разницы. За исключением, если вы хотите, чтобы передать его методу
methodWhichAcceptsArray({"a", "b"}); //won't compile
methodWhichAcceptsArray(new String[] {"a", "b"}); //ok
Давайте посмотрим:
// String[] str1 = { "test" };
0: iconst_1
1: anewarray #16 // class java/lang/String
4: dup
5: iconst_0
6: ldc #18 // String test
8: aastore
9: astore_1
// String[] str2 = new String[] {"test"};
10: iconst_1
11: anewarray #16 // class java/lang/String
14: dup
15: iconst_0
16: ldc #18 // String test
18: aastore
19: astore_2
Как вы можете видеть, что они компилируются в одинаковых байткодов.
Обратите внимание на то, что на внешней основе вы обычно должны использовать вторую форму.
Нет, нет. –
Вы не можете разбить первый на несколько операторов. Это все. –
Нет, это просто синтаксис ярлыка. И вы можете проверить, увидев байт-код, созданный этим двумя фрагментами кода. –