Другое событие 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));
}
ROWNUM является "псевдостолбцом", который присваивает номер каждой строке, возвращенной запросом:
SQL> select rownum, ename, deptno
2 from emp;
ROWNUM ENAME DEPTNO
---------- ---------- ----------
1 SMITH 99
2 ALLEN 30
3 WARD 30
4 JONES 20
5 MARTIN 30
6 BLAKE 30
7 CLARK 10
8 SCOTT 20
9 KING 10
10 TURNER 30
11 FORD 20
12 MILLER 10
ROW_NUMBER является аналитической функцией, которая присваивает номер каждой строке согласно ее упорядочиванию в группе строк:
SQL> select ename, deptno, row_number() over (partition by deptno order by ename) rn
2 from emp;
ENAME DEPTNO RN
---------- ---------- ----------
CLARK 10 1
KING 10 2
MILLER 10 3
FORD 20 1
JONES 20 2
SCOTT 20 3
ALLEN 30 1
BLAKE 30 2
MARTIN 30 3
TURNER 30 4
WARD 30 5
SMITH 99 1
От небольшого чтения ROWNUM является значением, автоматически присвоенным Oracle набору строк (до оцениваемого ORDER BY, не делайте никогда ORDER BY ROWNUM
или используйте WHERE ROWNUM < 10
с ORDER BY
).
ROW_NUMBER () , кажется, функция для присвоения номеров строк к набору результатов, возвращенному подзапросом или разделом.
rownum является псевдостолбцом, который может быть добавлен к любому запросу Select, для нумерации возвращенных строк (запускающийся с 1). Им заказывают согласно тому, когда они были определены как являющийся частью набора конечного результата. ( #ref)
row_number является функцией analytic, которая может использоваться для нумерации строк, возвращенных запросом в порядке, переданном под мандат row_number () функция.