Строка кода Java и что это делает?

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

7
задан Jonik 1 October 2009 в 11:50
поделиться

5 ответов

if(!n.equals(""))
{
     name = n;
}

означает, что если n не является пустой строкой, присвоить его значение имени.

В Java каждый объект имеет метод equals (Object o) для проверки равенства с другим объектом. Оператор == обычно используется для сравнения примитивов. Его также можно использовать для сравнения объектов на «схожесть». т.е. на самом деле два объекта являются одним и тем же экземпляром. Это удобно для неизменяемых типов, таких как Strings, и всех оболочек Object для примитивных типов, таких как Integer и Long.

5
ответ дан 6 December 2019 в 10:51
поделиться

В java строки неизменяемы, но не интернированы, поэтому if ("" == n) может или не может быть верным для другой строки для которого "" .equals (n) истинно.

Чтобы еще больше запутать вас, это плохой код, он получит исключение NullPointerException если вызывается с нулевым аргументом. Его следует записать как "" .equals (n)

9
ответ дан 6 December 2019 в 10:51
поделиться

Метод equals () сравнивает содержимое двух строк. Операторы == и! = Сообщают вам, являются ли два объекта String одним и тем же объектом или нет. Две разные строки с одинаковым содержимым и, следовательно, equals () друг для друга, все еще могут быть! = Друг для друга. Несмотря на то, что строки не изменяемы, это помогает понять разницу, представив, что строки являются изменяемыми, и тогда equals () означает «в настоящее время такие же», а == означает «всегда будут такими же».

Безопасный Правило состоит в том, чтобы всегда использовать equals (), если вы не уверены, что обе строки интернированы . Цитата:

Отсюда следует, что для любых двух строк s и t, s.intern () == t.intern () - это истина тогда и только тогда, когда s.equals (t) истина.

Все литеральные строки и строковые значения. постоянные выражения интернированы.

3
ответ дан 6 December 2019 в 10:51
поделиться

Рассмотрим следующее:

String a="";
String b="";

И a, и b являются строковыми ОБЪЕКТАМИ, каждый со своим собственным распределением памяти и, следовательно, с уникальным адресом. a и b находятся по разным адресам. Когда вы кодируете логическое выражение

a == b

, вы сравниваете адреса объектов, а не их содержимое. Чтобы сравнить contents you must use the String object's equals() method.

An object has a physical location in memory, which is unique for each object -- no two distinct objects can have the same memory address -- and its contents or value. The == operator compares the addresses of the objects; when you code a==b you are asking if a and b are aliased names for the same object -- do a and b refer to the same physical location. a.equals(b) asks if the two objects, wherever they may be, have the same value.

This is complicated somewhat by compiler "interning", where the compiler may detect at compile time that two constants have the same value and reuse the same object, but this won't be true for values created at runtime.

1
ответ дан 6 December 2019 в 10:51
поделиться

метод equals () вернет логическое значение, которое указывает, что передаваемый объект «равен» объекту, выполняющему вызов . Этот метод «равно» можно переопределить в классах для создания собственного теста. В случае String проверяется, совпадает ли значение исходной String со значением строкового представления переданного объекта.

Поскольку он возвращает логическое значение, вы можете инвертируйте значение с помощью ! , поэтому проверка будет: «Является ли аргумент метода пустой строкой?» Да? затем присвойте его нашей переменной name .

== всегда будет проверять, совпадает ли объект слева с объектом справа, при сравнении ссылок.

0
ответ дан 6 December 2019 в 10:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: