В Java я могу получить доступ к открытому члену класса, используя .
, как видно из второй строки метода main в следующем примере (ради этого примера не обращайте внимания на мое плохое использование инкапсуляции).
public class Test {
public static void main(String[] args) {
Position p = new Position(0,0);
int a = p.x; // example of member access
}
}
class Position {
public int x;
public int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
}
Является ли
считается оператором в языке программирования Java, так же как *
, ~
и !=
считаются операторами?
Edit - Расширение примера выше:
Как было отмечено, похоже, что спецификация языка Java считает .
как разделитель, а не как оператор. Тем не менее, я хотел бы отметить, что .
демонстрирует некоторое поведение, которое кажется скорее операторным. Рассмотрим приведенный выше пример, расширенный до следующего:
public class Test {
public static void main(String[] args) {
Position p = new Position(0,0);
int a = p . x; // a -> 0
int x = 1;
int b = p . x + x; // b -> 1
}
}
class Position {
public int x;
public int y;
public Position(int x, int y) {
this.x = x;
this.y = y;
}
}
Очевидно, что соблюдается некоторый приоритет, так что доступ к члену оценивается перед сложением. Это кажется интуитивно понятным, потому что если бы дополнение оценивалось первым, то мы бы получили p.2
, что является бессмыслицей. Тем не менее, очевидно, что .
демонстрирует поведение, которого нет у других разделителей.