Примитивы.NET и иерархии типа, почему это было разработано как это?

Поскольку многие люди упомянули его прежде, , Java всегда является передачей значением

, Вот другой пример, который поможет Вам понять различие ( классический пример подкачки ):

public class Test {
  public static void main(String[] args) {
    Integer a = new Integer(2);
    Integer b = new Integer(3);
    System.out.println("Before: a = " + a + ", b = " + b);
    swap(a,b);
    System.out.println("After: a = " + a + ", b = " + b);
  }

  public static swap(Integer iA, Integer iB) {
    Integer tmp = iA;
    iA = iB;
    iB = tmp;
  }
}

Печать:

Прежде: = 2, b = 3
После: = 2, b = 3

Это происходит, потому что iA и iB являются новыми переменными локальной ссылки, которые имеют то же значение переданных ссылок (они указывают на a и b соответственно). Так, попытка изменить ссылки iA или iB только изменится в локальном объеме а не за пределами этого метода.

6
задан Community 8 February 2017 в 14:16
поделиться

2 ответа

Я предполагаю, что базовое оборудование нарушает иерархию классов. Есть (что, возможно, удивительно) много раз, когда вы заботитесь о том, что UInt32 имеет размер 4 байта и без знака, поэтому UInt32 не является разновидностью Int32 , а также Int32 не является типом Int64 .

И вы почти всегда заботитесь о разнице между int и float .

По сути, наследование и иерархия классов не то же самое, что включение математического множества. Тот факт, что значения, которые может содержать UInt32 , являются строгим подмножеством значений, которые может содержать Int64 , не означает, что UInt32 является типом ] Int64 . Менее очевидно, an Int32 не является типом Int64 - хотя между ними нет концептуальной разницы, их базовые представления различаются (4 байта против 8 байтов). Десятичные числа еще больше различаются.

XPath отличается: представления для всех числовых типов в основном одинаковы - это строка цифр ASCII. Здесь разница между коротким и длинным является одним из возможных диапазонов, а не представлением - «123» является действительным представлением short и действительное представление long с тем же значением.

их базовые представления различны (4 байта против 8 байтов). Десятичные числа еще больше различаются.

XPath отличается: представления для всех числовых типов в основном одинаковы - это строка цифр ASCII. Здесь разница между коротким и длинным является одним из возможных диапазонов, а не представлением - «123» является действительным представлением short и действительное представление long с тем же значением.

их базовые представления различны (4 байта против 8 байтов). Десятичные числа еще больше различаются.

XPath отличается: представления для всех числовых типов в основном одинаковы - это строка цифр ASCII. Здесь разница между коротким и длинным является одним из возможных диапазонов, а не представлением - «123» является действительным представлением short и допустимое представление long с тем же значением.

4
ответ дан 17 December 2019 в 00:11
поделиться

Десятичное число предназначено для вычислений, требующих точности (в основном, денег). См. Здесь: http://msdn.microsoft.com/en-us/library/364x0z75 (VS.80) .aspx

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

Вот почему они не связаны.

Что касается байтов и символов, они совершенно разные: байт - это 0-255, тогда как char - это символ, и может следовательно, хранить символы Юникода (их намного больше 255!)

Uints и int не конвертируются автоматически, потому что каждый из них может хранить значения, которые невозможны для другого (uints имеют вдвое больший положительный диапазон int) .

Как только вы во всем разобрались, это действительно имеет большой смысл.

Что касается вашего возраста, я бы просто использовал int;)

3
ответ дан 17 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

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