Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
$ perl -e 'print "4"x4; print "\n"'
4444
x оператор документируется в perldoc perlop. Здесь двоичный файл означает оператор, берущий два аргумента, не состоявшие из битов, между прочим.
Двоичный файл "x" является оператором повторения. В скалярном контексте или если левый операнд не включается в круглые скобки, он возвращается, строка, состоящая из левого операнда, повторила количество раз, определенное правильным операндом. В контексте списка, если левый операнд включается в круглые скобки или является списком, сформированным"
qw/STRING/
", это повторяет список. Если правильный операнд является нулем или отрицательный, это возвращает пустую строку или пустой список, в зависимости от контекста.
print ’-’ x 80; # Print row of dashes
print "\t" x ($tab/8), ’ ’ x ($tab%8); # Tab over
@ones = (1) x 80; # A list of 80 1’s
@ones = (5) x @ones; # Set all elements to 5
perl -e
предназначен для выполнения кода Perl из командной строки:
$ perl --help Usage: perl [switches] [--] [programfile] [arguments] -e program one line of program (several -e's allowed, omit programfile)
В Perl Вы хотите использовать "x" оператор.
Примечание различие между
"4" x 4
и
("4") x 4
Первый производит повторную строку:
"4444"
последний повторный список:
("4", "4", "4", "4")
FWIW, it’s также print 4 x 4
в Perl.
В целом, в Perl, операторы являются мономорфными, т.е. у Вас есть различные наборы операторов для строковой семантики, для числовой семантики, для поразрядной семантики, и т.д., где это имеет смысл и тип операндов в основном doesn’t вопрос. При применении числового оператора к строке строка преобразовывается в число сначала, и Вы получаете операцию, которую Вы попросили (например, умножение), и когда Вы применяете строковый оператор к числу, it’s превратился в строку, и Вы получаете операцию, которую Вы попросили (например, повторение). Perl обращает внимание на оператор сначала и типы операндов только второй †“, если действительно это платит им какой-либо ум вообще.
Это - противоположность Python и большинства других языков, где Вы используете один набор операторов, и типы операндов определяют, какая семантика you’ll на самом деле получают †“, т.е. операторы являются полиморфными.