Я конечно сообразил что тут нужно подсунуть. Ну у меня возникает вопрос
мы создали объект Cat cat1 = new Cat(); Для этого грубо говоря мы полезли в класс Cat
Почему после того когда мы создаем второй раз объект класса cat она count не сбрасывается на ноль
так как public static int count = 0;
Для меня было бы логично если бы ее просто объявили(public static int count ;) а не прировняли к нулю(так как public static int count = 0;) так как она int и по умолчание 0
так как если мы метода main напишем System.out.println(Cat.count) он выдаст нам ноль
package com.javarush.task.task04.task0407;
/* https://javarush.com/help?taskKey=com.javarush.task.task04.task0407
Кошки во Вселенной
*/
public class Solution {
public static void main(String[] args) {
Cat cat1 = new Cat();
//Код
Cat cat2 = new Cat();
// Код
System.out.println("The cat count is " + Cat.count);
}
public static class Cat {
public static int count = 0;
}
}
Santa
25 уровень
Почему мы пишем так как public static int count = 0;
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Santa
19 февраля 2021, 19:04
Я в шоке от скорость ответов огромное спасибо
0
hidden #2322530
19 февраля 2021, 19:00
Для меня было бы логично если бы ее просто объявили(public static int count ;) а не прировняли к нулю(так как public static int count = 0;) так как она int и по умолчание 0
это роли не играет. иногда так пишут, чтобы нагляднее было. (что = 0)
+1
Wladyslaw Java Developer Master
19 февраля 2021, 19:00
Это статическое поле. Инициализируется оно один раз - при загрузке класса. Грубо говоря, когда где-то в коде первый раз кто-то упомянул класс - он загрузился, статические поля инициализировались и все, второй раз они не будут инициализироватся, вне зависимости от количества создаваемых объектов. Выгружать классы виртуальная машина сама не умеет.
0 можно было не писать, да, поля инициализируются дефолтными значениями автоматически
+1