Каково различие между строкой и символом в Ruby?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

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 ");
        }
    }
}
60
задан the Tin Man 9 July 2019 в 23:02
поделиться

5 ответов

Основное различие - то, что несколько символов, представляющих единственное значение, идентичны, тогда как это не верно со строками. Например:

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 ссылки на строку "тест", все различные объекты.

Это означает, что использование символов может потенциально сохранить хороший бит памяти в зависимости от приложения. Это также быстрее для сравнения символов для равенства, так как они - тот же объект, сравнение идентичных строк намного медленнее, так как строковые значения должны быть сравнены вместо просто идентификаторов объектов.

До, когда использовать, для которого, я обычно использую строки почти все кроме вещей как ключи хеша, где я действительно хочу уникальный идентификатор, не строку.

76
ответ дан the Tin Man 24 November 2019 в 17:49
поделиться

Как контрапункт, мой друг недавно записал сообщение, названное "Напыщенная речь Ruby" , который дает другой взгляд на символы Ruby.

0
ответ дан Greg Hewgill 4 July 2019 в 22:03
поделиться

Дополнительное различие между String и Symbol - то, что String имеет намного больше методов на нем для обработки строк, в то время как Symbol относительно минимизированный объект.

Выезд документация для String класс и Symbol класс .

3
ответ дан Grant Hutchins 24 November 2019 в 17:49
поделиться

Символ - что-то, что Вы используете для представления имен и строк. Вы хотели бы использовать символ, когда у Вас может быть потребность использовать строку, вдвое более настолько далеко легче и более продуктивную.

И просто найденный этим через Google, который может предложить большую деталь: Здесь Вы идете

0
ответ дан websch01ar 24 November 2019 в 17:49
поделиться

Символы и строки полностью отличающиеся , это сообщение имеет немного понимания различий. Относительно когда и где использовать их, существует довольно обширное сообщение на этом предмете, законченном на , имеет многих: до .

0
ответ дан Codebeef 24 November 2019 в 17:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: