Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Только на прошлой неделе я использовал regex, находят/заменяют для преобразования файла CSV в XML-файл.
Достаточно простой сделать действительно, просто нарубите каждое поле (к счастью, оно не имело никаких завершенных запятых), и пододвиньте его обратно с соответствующими тегами вместо запятых.
Мне нравится использовать regexps для переформатирования списков объектов как это:
int item1
double item2
кому:
public void item1(int item1){
}
public void item2(double item2){
}
Это может быть средством сохранения достижения.
Regex помогают заменить целые слова с помощью границ слова.
(\b\w+\b)
Таким образом, можно заменить нежелательные слова в файле, не нарушая слова как Сканторп
Я использую все это время, когда кто-то отправляет мне список терпеливых чисел посещения в столбце (скажите 100-200), и мне нужны они в '0000000444', '000000004445' формат. творит чудеса для меня!
Я также использую его для вытаскивания адресов электронной почты в электронном письме. Я часто посылаю электронные письма группы, и все возвращенные возвраты возвращаются в одном электронном письме. Так, я regex, чтобы вытянуть их всех и затем бросить их в строковый var для удаления из базы данных.
Я даже записал немного диалоговой прогр для применения regex к моему буферу обмена. Это захватывает содержание, применяет regex и затем загружает его назад в буфер обмена.
Вчера я взял создать оператор таблицы, который я сделал для таблицы Oracle и преобразовал поля в setString () вызовы метода с помощью JDBC и PreparedStatements. Имена полей таблицы были отображены на моих свойствах класса, таким образом, поиск regex и замена были идеальным соответствием.
Создайте Текст таблиц:
...
field_1 VARCHAR2(100) NULL,
field_2 VARCHAR2(10) NULL,
field_3 NUMBER(8) NULL,
field_4 VARCHAR2(100) NULL,
....
Мой поиск Regex:
/([a-z_])+ .*?,?/
Моя замена:
pstmt.setString(1, \1);
Результат:
...
pstmt.setString(1, field_1);
pstmt.setString(1, field_2);
pstmt.setString(1, field_3);
pstmt.setString(1, field_4);
....
Я затем прошел и вручную установил интервал положения для каждого вызова и изменил метод на setInt () (и другие) в случае необходимости, но это работало удобное на меня. Я на самом деле использовал его три или четыре раза для подобного поля к преобразованиям вызова метода.
Regex очень удобен любое время, я пытаюсь заменить значение, которое охватывает несколько строк. Или когда я хочу заменить значение чем-то, что содержит разрыв строки.
Мне также нравится этот, можно соответствовать вещам в регулярном выражении и не заменить полное соответствие с помощью $ # синтаксис для вывода части соответствия, которое Вы хотите поддержать.
Я соглашаюсь с Вами на точках 3, 4, и 5, но не обязательно указывает 1 и 2.
В некоторых случаях 1 и 2 легче достигнуть использования анонимного макроса клавиатуры.
Этим я означаю делать следующее:
Теперь все, что необходимо для изменения следующей строки, должно повторить макрос.
Я мог жить с поддержкой regex, но не мог жить без анонимных макросов клавиатуры.
Первой вещью, которую я делаю с любым редактором, является попытка выяснить, что это - причуды Regex. Я использую все это время. Ничто действительно сумасшедшее, но удобно, когда необходимо скопировать/вставить наполнить между различными типами текста - SQL <->, PHP является тем, который я чаще всего делаю - и Вы не хотите пукать вокруг внесения того же изменения 500 раз.
Одна вещь, для которой я использую его в веб-разработке все время, лишает некоторый текст своих HTML-тэгов. Это, возможно, должно было бы быть сделано для очистки ввода данных пользователем для безопасности, или для отображения предварительного просмотра новостной статьи. Например, если у Вас есть статья с большим количеством HTML-тэгов для форматирования, Вы не можете только сделать ОСТАВЛЕННЫЙ (article_text, 100) + '...' (плюс "чтение больше" ссылки) и рендеринг это на странице рискуя тем, чтобы повредить страницу путем разделения независимо HTML-тэга.
Кроме того, я должен был разделить теги img в записях базы данных, которые связываются с изображениями, которые больше не существуют. И давайте не забывать проверку веб-формы. Если Вы хотите сделать пользователя, ввел корректный адрес электронной почты (синтаксически говорящий) в веб-форму, которая это о единственном способе проверить его полностью.
Я только что вставил длинную последовательность символов в строковый литерал и теперь хочу разбить ее на конкатенацию более коротких строковых литералов, чтобы она не переносилась. Я также хочу, чтобы он был читабельным, поэтому хочу разбивать только после пробелов. Я выделяю всю строку (без кавычек) и выполняю замену только в выделении с помощью этого регулярного выражения:
/.{20,60} /
... и этой замены:
/$0"¶ + "/
... где pilcrow - это фактический перевод строки, и количество пробелов меняется от одного инцидента к другому. Результат:
String s = "I recently discussed editors with a co-worker. He uses one "
+ "of the less popular editors and I use another (I won't say "
+ "which ones since it's not relevant and I want to avoid an "
+ "editor flame war). I was saying that I didn't like his "
+ "editor as much because it doesn't let you do find/replace "
+ "with regular expressions.";