различие между пустым указателем! = что-то и что-то! = пустой указатель

Есть ли различие между пустой указатель! = что-то и что-то! = пустой указатель на Яве. И если есть различие тогда, какой я должен использовать и почему??

1
It' s названный yoda условием. Я ответил почему it' s "не так полезный" на Яве но несколько используемый в C/C++ и т.д.
добавлено автор P.P., источник
Никакое Различие в Яве
добавлено автор Subhrajyoti Majumder, источник

7 ответы

его, вероятно, прибытие из так называемых joda-условий, где вы пишете "bla" == myVariable вместо myVariable == "bla" , потому что это, могло оказаться, accidentially написало myVariable = "bla" , который возвращает "bla" на некоторых языках, но также и назначьте "bla" на myVariable

5
добавлено
Спасибо! Мой коллега объяснил его мне и мне couldn' t помнят то, что она сказала!
добавлено автор Nathan White, источник

I just want to point out that the "Yoda condition" rationale for doing this (in languages like C & C++) does not apply in this (Java) case.

  1. Java does not allow general expressions to be used as statements, so both

     something == null;
    

    and

     null == something;
    

    would be compilation errors.

  2. The types of something == null and something = null are different; boolean and some reference type respectively. In this case, it means that both:

     if (something = null) {
         ...
     }
    

    and

     if (null = something) {
         ...
     }
    

    would be compilation errors.

На самом деле я не могу думать , реалистичные пример, где пустой указатель == что-то было бы ошибкой компиляции и что-то ==, пустой указатель не будет. Следовательно, это ничего не достигает с точки зрения проверки ошибки.

4
добавлено
That' s также случай в C#. По ошибке используемый "=" в булевом условии вместо "==" приводит к ошибке компиляции. Условие Йоды ничего не делает здесь.
добавлено автор Jürgen Bayer, источник

Нет никакого различия между пустого указателя! = что-то и что-то! = пустой указатель . Необходимо думать о person.getName() .equals ("Джон") и "Джон" .equals (person.getName ()) различие: первый бросит NullPointerException , если getName() прибыль пустой указатель , в то время как второе не будет. Но это не применимо для примера вашего вопроса.

4
добавлено

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

  obj.getSomething().getAnotherThing().doSomething() != null

  null != obj.getSomething().getAnotherThing().doSomething()

Но если вы собираетесь просто сравнить переменную или параметр, это более удобочитаемое

  something != null

Конечно, это зависит от смысла читателя.

1
добавлено

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

1
добавлено

На Яве, если мы сравниваем кого-либо, всегда мы должны поместить переменные в левой стороне, и ценности помещаются в правую сторону...

0
добавлено
Я думаю, что это - соглашение.
добавлено автор Subhrajyoti Majumder, источник

Они - оба то же самое нет никакого различия.

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async