Ключова дума new

Запазена дума – new

Запазената дума в Java „new“ :

  • Използва се при създаване на инстанции на клас;
  • Заделя памет по време на изпълнение на програмата (runtime);
  • Запазва памет в heap-а и връща референция към тази памет;
  • Извиква конструктора на обекта.
Person firstPerson  = new Person();

Създава нов обект от класа Person с помощта на конструктора по подразбиране (без аргументи).Полетата на обекта се инициализират със стойности по подразбиране или със стойности, зададени в класа.

Person secondPerson = new Person("Plamen", 20);

Тук при създаване на обекта, полетата се инициализират със стойности по подразбиране или със стойности, зададени в класа.

Инициализация на масиви с new

Ключовата дума new се използва и за създаване на масиви. При това действие се заделя памет за определен брой елементи.

Пример:

int[] numbers = new int[5];

Това създава масив от 5 цели числа, като всички стойности първоначално са 0.

Може да се комбинира с директна инициализация:

String[] names = new String[] {"Ivan", "Maria", "Georgi"};

или в съкратен вид (без new):

String[] names = {"Ivan", "Maria", "Georgi"};

Статични блокове и new

Статичните блокове в Java са специални блокове код, които се изпълняват веднъж при зареждането на класа в паметта, преди да бъде създадена каквато и да е инстанция чрез new.

Пример:

public class Example {
    static {
        System.out.println("Статичният блок се изпълнява при зареждането на класа.");
    }

    public Example() {
        System.out.println("Конструкторът се извиква при създаване на нов обект с new.");
    }

    public static void main(String[] args) {
        Example ex1 = new Example();
        Example ex2 = new Example();
    }
}

Изпълнение:

Статичният блок се изпълнява при зареждането на класа.
Конструкторът се извиква при създаване на нов обект с new.
Конструкторът се извиква при създаване на нов обект с new.
  • Статичният блок се изпълнява само веднъж – при зареждане на класа в JVM.
  • Конструкторът се извиква всеки път, когато се създава нов обект чрез new.