Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
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 ");
}
}
}
Основное различие - то, что несколько символов, представляющих единственное значение, идентичны, тогда как это не верно со строками. Например:
irb(main):007:0> :test.object_id
=> 83618
irb(main):008:0> :test.object_id
=> 83618
irb(main):009:0> :test.object_id
=> 83618
3 ссылки на символ: тест, весь одинаковый объект.
irb(main):010:0> "test".object_id
=> -605770378
irb(main):011:0> "test".object_id
=> -605779298
irb(main):012:0> "test".object_id
=> -605784948
3 ссылки на строку "тест", все различные объекты.
Это означает, что использование символов может потенциально сохранить хороший бит памяти в зависимости от приложения. Это также быстрее для сравнения символов для равенства, так как они - тот же объект, сравнение идентичных строк намного медленнее, так как строковые значения должны быть сравнены вместо просто идентификаторов объектов.
До, когда использовать, для которого, я обычно использую строки почти все кроме вещей как ключи хеша, где я действительно хочу уникальный идентификатор, не строку.
Как контрапункт, мой друг недавно записал сообщение, названное "Напыщенная речь Ruby" , который дает другой взгляд на символы Ruby.
Дополнительное различие между String
и Symbol
- то, что String
имеет намного больше методов на нем для обработки строк, в то время как Symbol
относительно минимизированный объект.
Выезд документация для String
класс и Symbol
класс .
Символ - что-то, что Вы используете для представления имен и строк. Вы хотели бы использовать символ, когда у Вас может быть потребность использовать строку, вдвое более настолько далеко легче и более продуктивную.
И просто найденный этим через Google, который может предложить большую деталь: Здесь Вы идете
Символы и строки полностью отличающиеся , это сообщение имеет немного понимания различий. Относительно когда и где использовать их, существует довольно обширное сообщение на этом предмете, законченном на , имеет многих: до .