NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
С Плаванием, и с абсолютным положением, можно вытянуть некоторое довольно хорошее волшебство расположения изменить часть порядка страницы.
, Например, с StackOverflow, если разметка была правом установки, заголовок и содержание основной части могли бы быть первыми 2 вещами в разметке, и затем навигацией/поиском, и наконец правой боковой панелью. Это было бы сделано при наличии контейнера содержания с верхним полем, достаточно большим для содержания навигации и правого поля, достаточно большого для содержания боковых панелей. Тогда оба могли быть абсолютно расположены на месте. Разметка могла бы быть похожей:
h1 {
position: absolute;
top: 0;
left: 0;
}
#content {
margin-top: 100px;
margin-right: 250px;
}
#nav {
position: absolute;
top: 0;
left: 300px;
}
#side {
position: absolute;
right: 0;
top: 100px;
}
<h1> Stack Overflow </h1>
<div id="content">
<h2> Can Css truly blah blah? </h2>
...
</div>
<div id="nav">
<ul class="main">
<li>quiestions</li> ... </ul>
....
</div>
<div id="side">
<div class="box">
<h3> Sponsored By </h3>
<h4> New Zelands fish market </h4>
....
</div>
</div>
важная вещь здесь состоит в том, что разметка должна быть сделана с этим видом расположения волшебства в памяти.
Изменяющиеся вещи так, чтобы navbar был слева и боковая панель ниже военно-морского быть слишком твердым.
CSS может взять элементы из нормального потока и расположить их где угодно любым способом, который Вы хотите. Но это не может создавать новый поток .
этим я подразумеваю, что можно расположить последний объект из документа HTML в начале/вершине страницы/окна, и можно расположить первый объект из документа HTML в конце/нижней части страницы/окна. Но когда Вы делаете это, Вы не можете расположить эти объекты друг относительно друга; необходимо знать для себя, как далеко вниз конец страницы будет для первого объекта из документа HTML, который будет расположен правильно. Если то содержание является динамичным (т.е.: от базы данных или CMS), это может быть совсем не тривиально.
Можно хотеть посмотреть CSS Zen-Garden для превосходных примеров того, как сделать то, что Вы хотите. Много демонстрационных разметок по ссылкам на право видеть различный способ переместить все использующее строго CSS.
Вам не нужен position:absolute на каждом элементе, чтобы сделать то, что Вы хотите.
Вы просто используете его на нескольких ключевых объектах, и затем можно расположить их, где когда-либо Вы хотите, перемещая все объекты, содержавшие в них наряду с корневым элементом раздела.
Я думаю, что наиболее важный фактор должен поместить Ваши элементы HTML способом, который имеет смысл семантически, и с удачей Ваше расположение в CSS не должно будет делать слишком большой работы. Например, заголовок Вашего сайта, вероятно, будет первым элементом на странице, сопровождаемой общей навигацией, затем поднавигацией, содержанием и нижним колонтитулом (неполный список).
, Вероятно, приблизительно 90-95% разметок, с которыми Вы захотите работать, должны быть относительно тривиальными для управления той разметкой во что-то как то, что Вы после. другие 5-10% все еще будут возможны с немного большим усилием, но вопрос, который необходимо задать сами, "Как часто я, вероятно, захочу свой заголовок сайта, расположенный в нижний правый угол страницы?"
я всегда находил, что расположение сайта не слишком жестко для управления после факта, если Вы действительно хотите существенно изменить стиль, по крайней мере, по сравнению с наземным перекодом.
</2c>
Можно расположить отдельные поля, абсолютно независимые от исходного порядка с помощью position:absolute. Таким образом, можно переместить заголовок в конец страницы и нижний колонтитул к главному CSS использования.
Примечание однако, что это genereally плохо для доступности: у Вас должен быть порядок содержания в источнике более или менее в том же порядке, что Вы представили бы его для читателя. Причина состоит в том, что программа экранного доступа или аналогичное устройство представят содержание в порядке, это определяется в источнике, а не визуальном порядке, определенном Вашим CSS.
Положительная сторона у заголовка, всегда являющегося первым и нижний колонтитул в последний раз! Но я мог бы хотеть переместить свой рекламный DIV от вдоль вершины к вниз праву.
другая вещь, о которой я услышал, помещает DIV содержания сначала, таким образом, Google обращает на Вас больше внимания (соответствующие ключевые слова около верхней части страницы выигрывают выше)..., или это - миф? Выполнение, которое потребовало бы вида приема CSS, о котором я справляюсь также.