Java DOT 运算符的目的是什么?

4
有人可以告诉我Java DOT运算符到底是做什么用的吗?
例如:
public class {
    int value;
    public void great() {};
    ... 
}

public static void main(String[] args) {

    Person p = new Person();

    Person.great(); // <--- here

    Person.value; // <--- here

当我执行Person.great()Person.value时,我想知道上面代码中的.运算符是做什么用的?
3个回答

5
点运算符,也称为分隔符或句点,用于将变量或方法与引用变量分开。 只有使用类名才能访问静态变量或方法。 在对象的类之外的代码必须使用对象引用或表达式,后跟点(.)运算符,后跟一个简单的字段名称,如
objectReference.fieldName

我们使用对象引用来调用对象的方法。将方法的简单名称附加到对象引用上,中间使用点运算符(.),例如:
objectReference.methodName(argumentList);

在上述代码中,可以使用p.great()来调用对象p上的方法great(),并且使用p.value来访问实例变量value
参考:https://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html 完整参考书目:Herbert Schildt的《Java程序设计(原书第10版)》。

1

. 不是一个运算符。因此,它“不执行”任何操作。

它只是一个语法元素,用于表示变量名和对象属性之间的分隔。相同的字符用于分隔包名称和类。


2
这是正确的答案,但如果您不是在寻找这个答案,可以重新表达您的问题。关于这个点没有太多可以说的-它的功能与英语中的“。”几乎相同。在英语中,“。”分隔两个句子。在Java中,它分隔变量名和属性名。它告诉标记器(编译器的一部分)变量名称在那里停止,并且下一个字符是属性名称的开始。就是这样。 - Johannes H.
2
如果你真的想知道编译器是如何工作的,或者对象在内存中是如何存储的以便可以检索属性,或者哪些指令最终会出现在编译后的字节码中 - 那就是一个完全不同的故事,一个非常复杂的问题,很难在SO上轻松回答。我建议在这种情况下阅读有关Java引擎的书籍。 - Johannes H.
13
"."是一个运算符,它是一个二元运算符。左操作数解析为程序中的某个模块,右操作数解析为左操作数的子模块。它具有从左到右的结合性,因此System.out.println是(System.out).println而不是System.(out.println),并且它具有最高的运算符优先级,因此obj1.prop1+obj2.prop2是(obj1.prop1)+(obj2.prop2)而不是obj1.(prop1+obj2).prop2。它在Java文档中被列为一个运算符,在运算符优先级图表中也被列为一个运算符,并且它内置于语法中作为一个运算符。 - John

1

点运算符作为对象和类的访问提供者。上述运算符的用法如下:

它将函数和变量与实例变量分开。 它允许从包中访问子包和类。 它导致访问类或包的成员。

public class DotOperatorExample1 {
        
void display() { 
        double d = 67.54;    
        int i = (int)d;  
        System.out.println(i);  
    }  
public static void main(String args[]) {  
        DotOperatorExample1 doe = new DotOperatorExample1();   
        doe.display();
    }  
}  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接