JavaRush /Курсы /Java Syntax /Статические классы и методы

Статические классы и методы

Java Syntax
6 уровень , 7 лекция
Открыта

— Кроме статических методов есть ещё и статические классы. Что это такое мы рассмотрим в будущем, я лишь покажу пример, что такое может быть:

Пример
public class StaticClassExample
{
    private static int catCount = 0;

    public static void main(String[] args) throws Exception
    {
        Cat vaska = new Cat("Bella");
        Cat murka = new Cat("Tiger");

        System.out.println("Cat count " + catCount);
    }
    
    public static class Cat
    {
        private String name;

        public Cat(String name)
        {
            this.name = name;
            StaticClassExample.catCount++;
        }
    }

}
6
Задача
Java Syntax Pro, 6 уровень, 7 лекция
Недоступна
Выводим массивы
Реализуй метод main(String[]), который выводит массивы strings и ints в консоли с помощью метода Arrays.toString().

— Объектов класса Cat можно создавать сколько угодно. В отличие от, например, статической переменной, которая существует в единственном экземпляре.

— Основной смысл модификатора static перед объявлением класса — это регулирование отношения класса Cat к классу StaticClassExample. Смысл примерно такой: класс Cat не привязан к объектам класса StaticClassExample, и не может обращаться к обычным (нестатическим) переменным класса StaticClassExample.

— Значит, я могу создавать классы внутри других классов?

— Да. Java такое позволяет. Не слишком задумывайся об этом сейчас. В будущем я объясню еще некоторые вещи, и все станет немного проще.

— Надеюсь.

6
Задача
Java Syntax Pro, 6 уровень, 7 лекция
Недоступна
Выводим двумерные массивы
Реализуй метод main(String[]), который выводит массивы strings и ints в консоли c помощью метода Arrays.deepToString(Object[][]).
6
Задача
Java Syntax Pro, 6 уровень, 7 лекция
Недоступна
Сравнение двумерных массивов
Исправь работу метода main(String[]), который выводит в консоли true, если arrayFirst равняется arraySecond, иначе — false.
Комментарии (177)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Сергей Уровень 17
9 октября 2023
SHIFT + F6 = rename всех переменных ALT + ENTER = подсказка или создает за вас методы итд. СTRL + / = закомментировать строку разом. СTRL + ALT + L = корректирует ваш код ))
ArturLamp Уровень 2
8 ноября 2022
Что-то уровни пошли совсем никакие. Максимум 5 абзацев. И та информация которая уже известна.
floramaria87 Уровень 21
15 апреля 2022
🌺 ля-ля-ля... как бы не сойти с ума...
Сергей Жуков Уровень 6
31 декабря 2021
Еще бы выучить это наизусть.
Anonymous #1396846 Уровень 41
7 января 2022
Зачем? Лучше разобраться и понять. Простое зазубривание не поможет, ИМХО)
xseiter Уровень 11
9 ноября 2021
ок, шо
Андрей Уровень 28
1 сентября 2021
static - так обозначаются переменные и методы класса, таким образом к ним можно обращаться на прямую на создавая объектов класса
Валера Уровень 22
21 июля 2021
чет не срабатывает репит кода
Alexey Уровень 24
28 января 2021
https://youtu.be/nbqgPwZJqU4 В этом видео наглядно показано как работают статические методы и статические переменные
Тарас Шкарапут Уровень 17
23 марта 2021
Спасибо за эту ссылку))
Виталий Уровень 11
24 апреля 2021
о, спс, бро!
Komarov Anton Уровень 12
16 января 2021
Если вы как и я поняли лишь поверхностно и думаете, что забудете это на следующий же день, то вот вам краткое пояснение (старичков и старожил прошу поправить, если выражусь некорректно) Статический метод видит ТОЛЬКО статические переменные/объекты/поля и пр. Нестатический метод видит любые(в том числе и статические) переменные/объекты/поля и пр. Так же статическая переменная объявленная в классе будет неизменна для всех объектов этого класса. То есть public static int age = 1; //объявили в классе Cat Теперь age будет всегда являться единицей для каждого нового котика в классе Cat. прошу поправить, если не прав.
Gennady Raster Уровень 24
6 января 2022
Поправляю - очень даже изменна:

public void setAge(int newAge){
            age = newAge;
        }
Статическая переменная относится к типу (классу), а не к создаваемому объекту. Чтобы статическая переменная стала константой нужно добавить final:

public static final int age = 1;
Максим Уровень 41
8 января 2021
Хм. Господа, вопрос. А разве законно через:

StaticClassExample.catCount++;
...обращение напрямую инкрементировать котиков? У них же модификатор доступа private.
Ali Уровень 8
9 января 2021
Модификатор доступа private доступно внутри объявленного класса.