В чем разница между String, StringBuffer и StringBuilder?

Строки в Java реализованы в виде объектов класса String. Они финализированы и неизменяемы, вследствие этого при любых манипуляциях с ними всегда создается новая строка, что делает работу со строками весьма ресурсоёмким процессом. Если строки необходимо часто менять, то для этого есть StringBuffer и StringBuilder.

Естественным образом возникают вопросы:

  • В чем разница между StringBuffer и StringBuilder?
  • Что между ними общего?
  • Когда лучше использовать StringBuffer , а когда StringBuilder?

Читать далее В чем разница между String, StringBuffer и StringBuilder?

Java String. Почему строки в Java неизменные и финализированные?

Строки в Java не являются примитивным типом данных, как например int или double. Первым делом String – это класс, прописанный в пакете java.lang и представляющий строковый набор символов. String — наиболее широко используемый класс в Java. Трудно себе представить приложение, не используемое строки.

Особенности класса String  в Java заключаются в том, что строки это неизменяемый (immutable) и финализированный тип данных, и возможности хранения всех объектов класса String в пуле строк. Так же к особенностям можно отнести возможность получения объектов класса String используя двойные кавычки и перегруженный оператор “+” для сцепления(конкатенации) строк.

Так почему же строки в Java неизменяемые? При ответе на этот вопрос также становится понятно, являются ли строки в Java потокобезопасными, и почему строка является популярным ключем в HashMap?

Читать далее Java String. Почему строки в Java неизменные и финализированные?

Конструкторы в Java. Правила и особенности.

Как известно, объект является экземпляром определенного класса. Для его создания используется ключевое слово new, например:
Person student = new Person(“Mike”)
Этим кодом создается новый объект Person и указывается его имя – Mike. Строка «Mike» передается аргументом соответствующему конструктору Person:

Person(String name) {
    this.name = name;
}

Этот конструктор позволяет указать имя человека при создании объекта.

Конструктор всегда вызывается, когда создается новый экземпляр класса. Другими словами, конструкторы используются для инициализации состояния объекта при создании объекта. Конструкторы выглядят как обычные методы, но это далеко не так:

  • Конструкторы имеют то же имя, что и имя класса.
  • Конструкторы, как и методы, имеют список принимаемых параметров, но не имеют возвращаемый тип (даже void).

Ниже представлен набор из  7 основных правил работы с конструкторами, позволяющие полностью разобраться в их работе.

Читать далее Конструкторы в Java. Правила и особенности.

Java задача из сертификационного теста

Простая задачка с двумя (а может у кого и больше) «заковырками». Была почерпнута из книги по подготовке к сертификационному экзамену Java SE 8 Oracle Certified Associate (OCA).

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

class Base {
    protected int i;
    Base() { add(1); }
    void add(int v) { i += v; }
    void print() { System.out.println(i); }
}

class Extension extends Base {
    Extension() { add(2); }
    void add(int v) { i += v*2; }
}

public class Qd073 {
    public static void main(String[] args) {
        bogo(new Extension());
    }
    static void bogo(Base b) {
        b.add(8);
        b.print();
    }
}

 

Предлагаемые варианты ответов: 9, 11, 13, 21, 22.

Читать далее Java задача из сертификационного теста