Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Причина, что Машины Тьюринга являются грандиозным предприятием, имеет отношение к исследованию классической Вычислительной Науки или Теории материала типа Вычисления. Это в основном об анализе общих свойств компьютера, такой как, какие теоретические способности и ограничения компьютер имеет, а также что мы имеем в виду, когда мы говорим о "вычислении" чего-то.
Один пример чего-то, что можно было бы изучить Машины Тьюринга использования, Проблема остановки . В то время как этой проблемой является что-то вроде академического осуществления, это имеет легко материальные реальные последствия. Почему бы не записать отладчик, который просто скажет Вам, содержит ли Ваша программа какие-либо бесконечные циклы? Проблема остановки устанавливает, что решение этой проблемы для общего случая невозможно.
исследование Машин Тьюринга также предоставляет себя изучению языковых грамматик и классов этого, который ведет в разработку языка программирования. Термин "регулярные выражения" появляется, потому что они регулярная грамматика , и исследование этих грамматик (часть Теории Вычисления) скажет Вам больше о точно, что могут решить виды проблемных регулярных выражений и что они не могут. Например, традиционный синтаксис регулярного выражения не будет в состоянии решить следующую проблему: проанализируйте некоторый номер N символы во входе, и затем проанализируйте тот же номер N символа 'b'.
, Если Вы интересуетесь хорошим текстом об этом виде вещи, проверьте Введение в Теорию Вычисления Michael Sipser. Это хорошо.
Машина Тьюринга является теоретическим компьютером, изобретенным Alan Turing для служения в качестве идеализированной модели для математического вычисления, в основном это - простая форма компьютера, его составленного лента (лента бумаги), имеет голова , который может считать символы, записать новый символ на месте, и затем переместиться левый или правый.
Машина Тьюринга, как говорят, находится в определенном состояние , и затем программа является списком переходы , имея текущее состояние и символ под головой, что должно быть записано на ленте, что было бы следующим состоянием, и куда голова должна переместиться.
Вот Основная Машина Тьюринга , реализован в JavaScript...
И эскиз:
Мой IBM PC - все, что я должен сделать свое вычисление!
Что-то, на что не указали другие: Ваш IBM PC Машина Тьюринга. Более точно это эквивалентно ему, в том смысле, что что-либо, что Ваш ПК может сделать, Машина Тьюринга, может сделать, и что-либо, что Машина Тьюринга может сделать, Ваш ПК может.
А именно, Машина Тьюринга модель вычисления , который полностью получает понятие исчисляемости, оставаясь простым рассуждать о, без всех определенных деталей архитектуры Вашего ПК.
(общепринятый) "тезис Черча-Тьюринга" утверждает, что каждое устройство или модель вычисления не более мощны, чем Машина Тьюринга. Так, много теоретических проблем (например, классы как P и NP, понятие "полиномиально-разового алгоритма", и так далее) официально указаны с точки зрения Машины Тьюринга, хотя, конечно, они могут быть адаптированы к другим моделям также. (Например, иногда может быть удобно думать о вычислении с точки зрения лямбда-исчисления или комбинаторной логике, или независимо от того, что... они - весь эквивалент в питании друг другу, и к Вашему IBM PC также.)
, Таким образом, там Вы идете: люди говорят о Машинах Тьюринга, потому что это - точный и полный указанный способ сказать, каков "компьютер", не имея необходимость описывать каждую деталь архитектуры ЦП, ее ограничений, и так далее.
Существуют на самом деле примеры Машин Тьюринга по своей природе. А именно, рибосома , который переводит RNA в белки, реализует Машину Тьюринга.
Первый, некоторый фон:
операция рибосомы проста:
, Как Вы видите, это - очень простая Машина Тьюринга, которая выполняет самую сложную операцию - сама природа!
Машина Тьюринга является теоретической машиной, которая может использоваться для обоснования о пределах компьютеров. Проще говоря, это - мнимый компьютер с бесконечной памятью.
Мы заботимся о Машинах Тьюринга, потому что они помогают нам обнаружить то, что невозможно выполнить с реальными компьютерами (как Ваш IBM PC). Если для Машины Тьюринга невозможно выполнить конкретное вычисление (как решение Проблема остановки ), то это выдерживает обосновать, что для Вашего IBM PC невозможно выполнить то же самое вычисление.
Почему был бы люди, которые разрабатывают заботу о самолетах о Братьях Райт или науку позади "лифта", который позволяет самолету с неподвижным крылом полететь?
Alan Turing хвалят как родительский элемент современного вычисления. Машина Тьюринга является предшественником всех современных компьютеров.
Теория Исчисляемости была моим самым твердым классом в колледже, но я рад, что взял его. Это заставило меня думать о вещах, которые я никогда не имел бы или думал бы о вещах способами, которыми я никогда не буду иметь, и те - хорошие вещи.
Машина Тьюринга является абстрактной машиной, способной к вычислению.
Из Википедии:
Машины Тьюринга являются основными абстрактными управляющими символом устройствами, которые, несмотря на их простоту, могут быть адаптированы для моделирования логики любого компьютерного алгоритма. Они были описаны в 1936 Alan Turing. Машины Тьюринга не предназначаются как практическая вычислительная технология, но мысленный эксперимент о пределах механического вычисления. Таким образом они не были на самом деле созданы. Изучение их абстрактных свойств приводит ко многому пониманию теории сложности и информатики.
Машину Тьюринга А, которая в состоянии моделировать любую другую Машину Тьюринга, называют Универсальной Машиной Тьюринга (UTM, или просто универсальная машина). Более математически ориентированное определение с подобной "универсальной" природой было представлено Alonzo Church, чья работа над лямбда-исчислением, переплетенным с Turing в формальной теории вычисления, известного как тезис Черча-Тьюринга. Тезис указывает, что Машины Тьюринга действительно получают неофициальное понятие эффективного метода в логике и математике, и предоставляют точное определение алгоритма или 'механической процедуры'.
Машина Тьюринга является абстрактной машиной, которая может воздействовать на последовательность данных и может изменить его собственное состояние, а также данные при работе, согласно некоторой логике.
Это - понятие, которое формирует основание алгоритмов, сохраненных программ и вычисления в целом. Это обеспечивает хорошее понимание и абстракции, если Вы имеете дело с алгоритмами, состояниями, данные и т.д.
Пища для размышления, для большинства.
В дополнение к статье в Википедии Вы могли бы хотеть забрать книгу Аннотируемый Turing Charles Petzold. Снабженный субтитрами "Экскурсия через Историческую Статью Alan Turing об Исчисляемости и Машине Тьюринга", это включает полную бумагу, в которую врываются блоки с большим количеством дискурса по теме, включая историческую перспективу.