Значение одного целого типа может быть приведено к значению другого целого типа.
Приведение целых типов к логическому и обратно выполнять нельзя.
Язык Java предусматривает для целочисленных значений следующие операторы:
операторы сравнения
= равно
!= не равно
операторы отношения
< меньше
<= меньше или равно
> больше
>= больше или равно
унарные операторы
+ положительное значение
- отрицательное значение
бинарные операторы
+ и += сложение (x=x+y эквивалентно записи x+=y)
- и -= вычитание (x=x-y эквивалентно записи x-=y)
* и *= умножение (x=x*y эквивалентно записи x*=y)
/ и /= деление (x=x/y эквивалентно записи x/=y)
% и %= остаток от деления
префиксный и постфиксный оператор приращения и декремента
++ приращение (увеличение значения на 1 до вычисления выражения (++x) или после (x++))
-- декремент
операторы сдвига
<< сдвиг влево
>> сдвиг вправо с распространением знака
>>> сдвиг вправо без учета знака (слева происходит заполнение нулями)
унарный логический оператор
~ отрицание (побитовое дополнение)
бинарные логические операторы
& логическое И (AND)
| логическое ИЛИ (OR)
^ логическое исключающее ИЛИ (XOR)
Если оба операнда имеют целочисленный тип, то операция рассматривается как целочисленная. Если один из операндов имеет тип long, то операция выполняется с использованием 64-битового представления: при этом любой другой операнд будет расширен до типа long и результат будет также иметь тип long. В противном случае операции выполняются, используя 32-битовое представление (любой операнд, не являющийся int, первоначально расширяется до типа int) и результат будет иметь тип int.
Логические значения представляются одним битом и обозначаются константами true и false
В языке Java нельзя прямо выполнить приведение типа int к типу boolean, но можно конвертировать значение int, используя следующий синтаксис языка: int x != 0, где любое не нулевое значение x даст в результате true, а нулевое значение даст false. Для преобразования значения типа boolean в целое следует выполнить условный оператор: bool x ? 1:0.
Для логических значений в языке Java предусмотрены следующие операторы:
== и !=
!, &, |, и ^
&& и ||.
Типы данных языка C#
В языке C# нет базовых типов - все типы реализуются как классы библиотеки NET Framework. Однако язык C# имеет набор встроенных типов, которые рассматриваются как псевдонимы типов в пространстве имен System. Например, тип string - это псевдоним типа System.String, а тип int - псевдоним типа System.Int32.
C# поддерживает следующие встроенные типы:
bool - псевдоним класса System.Boolean;
byte - псевдоним класса System.Byte;
sbyte - псевдоним класса System.SByte;
char - псевдоним класса System.Char;
decimal - псевдоним класса System.Decimal;
float - псевдоним класса System.Single
double - псевдоним класса System.Double;
int - псевдоним класса System.Int32;
uint - псевдоним класса System.UInt32;
long - псевдоним класса System.Int64;
ulong - псевдоним класса System.UInt64;
object - псевдоним класса System.Object;
short - псевдоним класса System.Int16;
ushort - псевдоним класса System.UInt16;
string - псевдоним класса System.String.
Все встроенные типы подразделены на группы:
целочисленные типы (int, long, ulong);
вещественные типы (float, double);
логический тип (bool);
символьные типы (char, string);
объектный тип (object).
Иерархия классов NET Framework имеет один общий корень - класс System.Object.
Все типы разделяются на две категории:
размерные типы;
ссылочные типы.
При создании переменной размерного типа под нее в стеке выделяется определенный объем памяти, соответствующий типу этой переменной. При передаче такой переменной в качестве параметра выполняется передача значения, а не ссылки на него. Значение размерного типа не может быть равным null. К размерным типам относятся целочисленные и вещественные типы, структуры, перечислимые типы.
При создании переменной ссылочного типа память под созданный объект выделяется в куче. Ссылка всегда указывает на объект заданного типа.
В языке C# все массивы являются объектами. Базовым классом массива является класс Array пространства имен Systems.
Язык C# позволяет создавать следующие массивы:
одномерные массивы;
многомерные массивы;
невыровненные массивы.
Массивы относятся к ссылочным типам.
Одномерный массив можно создать одним из следующих способов:
отдельно объявить массив без указания размерности. Например:
· int[] myArr1;
создать уже объявленный массив с одновременной его инициализацией. Например:
· myArr1 = new int[] {1, 2, 3, 4};
отдельно объявить массив с указанием размерности и соответственно созданием объекта. Например:
· int[] myArr2 = new int [4];
объявить массив с одновременной его инициализацией (с указанием оператора new). Например:
· int[] myArr3 = new int[] {1, 2, 3, 4};· string[] sColor = new string[] {· "Yellow","Blue","Red"};
объявить массив с одновременной его инициализацией (короткая форма). Например:
· int[] myArr4 = {1, 2, 3, 4};
Отметим, что нельзя выполнять инициализацию массива в форме myArray5 = {1, 2}; для предварительно объявленного или уже созданного массива.
При создании многомерных массивов их размерность определяется числом запятых плюс один, указанных в квадратных скобках после типа массива. Формы создания многомерного массива аналогичны формам создания одномерного массива.
Например:
int[,] iArr1 = new int[8,2];
Невыровненный массив реализуется как массив массивов.
Например, массив из трех элементов, каждый из которых содержит двумерный массив, может быть описан следующим образом:
int[][,] iJaggedArr1 = new int [3][,] { new int[,] { {1,1}, {8,8} }, // первый элемент массива new int[,] { {5,5}, {6,6}, {7,7} }, // второй элемент массива new int[,] { {0,0}, {0,0}, {0,0} } // третий элемент массива };
Операторы new должны использоваться для создания каждого массива: первое вхождение оператора new создает одномерный массив, каждый из трех элементов которого также является массивом, а три следующих вхождения оператора new создают элементы как двумерные массивы.
В обычных массивах индексы элементов представляют собой подряд идущие целочисленные значения. Библиотека NET Framework предоставляет класс Collections.Hashtable, позволяющий создавать хэшированные массивы.
Например:
Collections.Hashtable hArr = new Collections.Hashtable();hArr["i"] = 175; // Значение индекса указывается // типом string