Как известно, ключевое слово является специальным зарезервированным словом языка. Мы уже встречали некоторые из них допустим, объявление переменной как целого числа с помощью
int
. Другими примерами ключевых слов являются
public
,
class
,
static
и
void
в листингах кода в этом приложении.
Ключевые слова можно разделить на ряд категорий в связи с их назначением. В этом разделе мы выделим и определим каждую категорию, а также идентифицируем ключевые слова. Реальные ключевые слова будут идентифицироваться своими версиями в Java, чтобы можно было легко их находить. Затем будет дан эквивалент C# (если существует). Для тех ключевых слов, которые присутствуют только в Java, будет предоставлено лучшее соответствие.
Ключевые слова, представленные в C#, но не в Java, будут даны в своей собственной категории с лучшим приблизительным эквивалентом в Java (если такой существует).
Примитивные типы данных в обоих языках ссылаются на низкоуровневые типы значений языка. Конечно, диапазон значений указанных типов может различаться в том или другом языке. Логические значения в C# идентифицируются ключевым словом bool в противоположность boolean в Java. Ниже представлен табличный список типов данных Java и их аналогов в C#:
Тип Java
Описание
Эквивалентный тип C#
Описание
byte
8-битовое со знаком
sbyte
8-битовое со знаком
short
16-битовое со знаком
short
16-битовое со знаком
int
32-битовое со знаком
int
32-битовое со знаком
long
64-битовое со знаком
long
64-битовое со знаком
float
32-битовое число с плавающей точкой со знаком
float
32-битовое число с плавающей точкой со знаком
double
64-битовое число с плавающей точкой со знаком
double
64-битовое число с плавающей точкой со знаком
boolean
true/false
bool
true/false
char
2-байтовый Unicode
char
2-байтовый Unicode
Существует также ряд типов, поддерживаемых C#, которые Java не использует. Таблица ниже выделяет эти типы данных.
Уникальный тип данных C#
Описание
Byte
8-битовое целое без знака
ushort
16-битовое целое без знака
Uint
32-битовое целое без знака
ulong
64-битовое целое без знака
decimal
128-битовое
Ключевые слова-переменные: this, void и super
Эти ключевые слова сами являются переменными. Оба языка, Java и C#, имеют по три ключевых слова, которые попадают в эту категорию. Ключевые слова
this
и
void
обладают в обоих языках одинаковой функциональностью.
super
— эта ссылочная переменная используется для указания класса-предка. В C# эквивалентом является
base
. Возьмем класс
Power
, который предоставляет возможность найти степень заданного числа и степень, в которую требуется возвести (при условии, что не происходит переполнение):
public class SuperEX {
int power;
public SuperEX(int power) {
this.power = power;
}
public int aMethod(int x) {
int total = 1;
for (int i = 0; i < power; i++) {
total *= x;
}
return total;
}
public static void main(String args[]) {
SuperEX x = new SuperEX(Integer.parseInt(args[0]));
int tot = x.aMethod(Integer.parseInt(args[1]));
System.out.println(tot);
}
}
Класс-потомок
этого класса сможет получить доступ к методу
aMethod
с помощью вызова
super.aMethod(<int value>)
, к переменной
power
— с помощью вызова
super.power = <int value>
, и даже к конструктору — с помощью вызова
super(<int value>)
, где
<int value>
может быть любым целым литералом, переменной или константой.
Аналогично в C# класс-потомок этого класса сможет получить доступ к методу
aMethod
с помощью вызова
super.aMethod(<int value>)
и к переменной
power
— с помощью вызова
super.power = <int value>
. Сделать вызов базового конструктора тоже возможно, синтаксис, однако, будет отличаться. Пример ниже является эквивалентом в C# для SuperEX:
namespace SuperEX {
using System;
public class SuperEX {
internal int power;
public SuperEX(int power) {
this.power = power;
}
public int aMethod(int x) {
int total = 1;
for (int i = 0; i < power; i++) {
total *= x;
}
return total;
}
public static void Main(String [] args) {
SuperEX x = new SuperEX(int.Parse(args[0]));
int tot = x.aMethod(int.Parse(args[1]));
Console.WriteLine(tot);
}
}
public class Child: SuperEX {
public Child : base(55) { }
}
}
Как можно видеть на примере класса-потомка
Child
, вызов конструктора базового класса является частью объявления конструктора класса-потомка. Программист может по своему усмотрению определить список параметров конструктора класса-потомка, но ссылка на конструктор базового класса должна соответствовать списку аргументов, требуемых базовым классом. В данном примере конструктор потомка может получить форму
<child constructor>: base constructor(<int value>)
, где
<int value>
может быть любым целым литералом, переменной или константой, a
<child constructor>
представляет любой конструктор потомка, который хочет воспользоваться конструктором базового класса. Более общая версия, как получить доступ к конструктору базового класса, представлена ниже:
Ключевые слова управления пакетами: import и package
Так же как в Java, в C# инструкции
import
предоставляют доступ к пакетам и классам в коде без полной квалификации, директива
using
может использоваться для того, чтобы сделать компоненты пространства имен видимыми в классе без полной квалификации. В C# не существует эквивалента инструкции
package
. Чтобы сделать класс частью пространства имен, надо поместить его в объявление пространства имен. Пространства имен будут обсуждаться более подробно позже в этой главе.
Ключевые слова управления потоком выполнения и итерациями: break, case, continue, default, do, else, for, if, instanceof, return, switch и while
Большинство упомянутых выше ключевых слов имеют одинаковые имена, синтаксис и функциональность в C# и Java. Исключением является оператор Java
instanceof
, используемый для определения того, что объект является экземпляром класса или некоторого подкласса этого класса. C# предоставляет такую же функциональность с помощью ключевого слова
is
. Некоторые примеры того, как инструкции работают в C#, даны ниже. Можно видеть, что большая часть кода точно такая же, как и в Java: