Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Нет никакого различия. строковый (нижний регистр) является просто псевдонимом для Системы. Строка.
Никакое различие. System.String
строго идентично string
. Общие инструкции по кодированию C# указывают, что необходимо использовать ключевое слово string
.
Они - псевдонимы и являются взаимозаменяемыми. Однако стилистически, для объявлений, я использую печатавшую строчными литерами строку, и для статических методов, я использую Строку.
string foo = "bar";
if( foo != String.Empty )
{
Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
}
Каждый - Система. Представьте Тип.Net в виде строки, и каждый характерен для C#, который оказывается псевдонимом назад к Системе. Строка.
http://msdn.microsoft.com/en-us/library/362314fe (По сравнению с 71) .aspx
Нет различия. строка является псевдонимом, который компилятор преобразовывает в Систему. Строка.
На самом деле, это даже искажается в MSIL:
.method private hidebysig static void Main(string[] args) cil managed
Нет никакого различия между ними. строка является просто псевдонимом для Системы. Строка. Когда скомпилировано они оба компилируются в Систему. Строковый объект.
Версия нижнего регистра является просто псевдонимом к фактическому классу Строка. Нет никакой реальной разницы, насколько IL генерировал.
Нет никакого различия. строка является ключевым словом языка C#, которое относится к системе классов. Строка, точно так же, как интервал является ключевым словом, которое относится к Системе. Int32.
В будущем попытайтесь компилировать приложение, которое использует обоих, и затем используйте Отражатель (измените язык на IL) просмотреть скомпилированный вывод. Вы будете видеть, что нет никакого различия.
Нет никакого различия, потому что строка преобразовывается в Систему. Строка компилятором. То же со всеми общими типами (интервал переходит к Системе. Int32, и т.д.). Мы используем простое имя, таким образом, они выделяются.
Полагая, что “int” отличается на некоторых языках в зависимости от 16bit/32bit системы, "строка" могла в будущем развиваться для не совпадения с Системой. Строка.
, Но на данный момент это.
просто немного примечания: Строка/Строка не является только несколькими псевдонимами: например, Целое число, Int32, интервал является всеми псевдонимами.
@mliesen: это не делает произошел в C#, это не похоже на C. это, потому что от C# Вы не создаете исполняемый файл, но на скомпилированный код как Java.