Почему методы класса Math статичны? - PullRequest
6 голосов
/ 23 февраля 2009

Почему методы класса Math статичны?

Ответы [ 8 ]

26 голосов
/ 23 февраля 2009

Поскольку им не требуется никакого внутреннего состояния, но в Java нет автономных функций - каждая функция должна быть членом класса. Таким образом, они статичны.

6 голосов
/ 23 февраля 2009

Когда у вас есть методы, которые на самом деле не включают состояние или класс (например, математические функции, утилиты для массивов и т. Д.), Класс просто используется для «группировки» их в связное местоположение. Таким образом, вы перечисляете их как статические (так как они не касаются состояния) и так как вы фактически никогда не создаете экземпляр класса.

5 голосов
/ 23 февраля 2009

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

  1. они не полиморфны - так что это специальная инструкция JVM для их запуска
  2. им не нужно передавать «this» в качестве первого аргумента - отсутствие аргументов означает меньшее количество элементов в стеке, что означает меньшее время, затрачиваемое на размещение элементов в стеке
2 голосов
/ 23 февраля 2009

Они являются статическими, поскольку методы не зависят от переменных экземпляра класса Math.

2 голосов
/ 23 февраля 2009

Во многом потому, что это служебные методы, многие из которых могут применяться к вычислениям на примитивах. Цель этого класса - предложить стандартную библиотеку функций, многие из которых не нужно применять непосредственно к объекту.

0 голосов
/ 23 февраля 2009

Они должны быть статическими, потому что числа являются примитивами, а не собственными объектами, поэтому они не могут быть методами экземпляров числовых типов.

Теперь в Java также есть классы для номеров в боксах, но было бы слишком неэффективно создавать объект для каждой математической операции.

На других языках, например Smalltalk, числа - это объекты, а все арифметические операции - методы экземпляров.

0 голосов
/ 23 февраля 2009

Они могут быть вызваны, как если бы они были библиотекой математического кода.

0 голосов
/ 23 февраля 2009

Статические функции не имеют побочных эффектов. Нет необходимости отслеживать переменные состояния, когда вы ожидаете одного результата вычисления.

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