Некоторые сомнения по поводу синтаксиса Java - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в Java, я знаю кое-что из основ, но иногда я вижу строки кодов, которые я не совсем понимаю, почему они написаны таким образом, вот несколько вопросов, которые у меня есть:

Вопрос 1:

Методы или атрибуты, которые вызываются другими методами или атрибутами:

Пример: System.out.print ();

Я понимаю эта система является классом, и когда вы пишете System.out, вы вызываете атрибут "out", но из атрибута "out" вы вызываете метод "print ()", это метод print () внутри out атрибут? как это работает Также иногда я вижу, что метод вызывается таким образом: ... method1 (). Method2 (); Если я помещу метод в область действия другого метода, не будет ли он работать автоматически? как:

publi c void method1 () {method 2};


Вопрос 2: Я изучал классы Date и Calendar и увидел видео где парень инстанцировал объекты Date и Calendar, не используя мир "new", ни метод построения:

Date d = Date.from (Instant.parse ("2018-06-25T15: 42: 07Z "));

Календарь cal = Calendar.getInstance ();

Как это работает? Могу ли я создать экземпляр любого объекта любого класса, вызвав абстрактный метод (если класс есть)? Или это просто то, что в этих методах они возвращают объект Date и Calendar?


Вопрос 3:

Как массив типа может иметь atributte "length", aren ' Массив просто набор примитивных типов? как примитивный тип может иметь атрибуты ??

Пример: int [] x = new int [3];

System.out.print (x.length); // Prints 3;

1 Ответ

1 голос
/ 24 апреля 2020

Вопрос 1:

System имеет класс и поле (часто в Java, оно называется полем вместо атрибута. Хотя это одно и то же) с именем out. out относится к типу PrintStream. Вам не нужно беспокоиться о том, что такое printStream, но просто знайте, что printStream имеет метод с именем print. Таким образом, вы получаете доступ к полю System с именем out и вызываете этот метод print.

Вы можете сделать что-то вроде method1().method2(), потому что method1 возвращает объект, и вы вызываете метод объектов Например, допустим, у вас есть класс, у которого есть метод с именем print(). Тогда, если у вас есть такой метод:

public A getA() {
    return new A();
}

Тогда, если вы вызовете этот метод, вы получите класс. С помощью этого класса вы можете вызывать его метод и обращаться к его полям.

getA().print();

Вопрос 2

Как и в предыдущем ответе, вы можете получать объекты из методов. Итак, вы присваиваете свой объект возвращаемому значению этого метода. Например, если у вас тот же метод, что и раньше:

public A getA() {
    return new A();
}

Вы можете сделать:

A a = getA();

Поскольку он возвращает тип A, вы присваиваете его своему A.

Вопрос 3

Массив на самом деле особый тип. Технически это объект, который позволяет иметь поля типа length, однако вы все равно можете получить элементы, используя, например, array[5]. Я не думаю, что вам следует беспокоиться о массивах, они сильно отличаются от обычных объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...