有什么区别"明确"并且"隐含地"在编程语言?

时间:2016-09-27 05:28:15

标签: java android explicit

我希望能够清楚准确地理解两者之间的差异。

this关键字也用于隐式引用或显式?这也是我想要在两者之间澄清的原因吗?

我假设使用this关键字隐式引用(与类有关)同时显式引用(不属于类本身),就像传递给方法的参数变量一样。

当然,我的假设显然是错误的,这就是我在这里要求澄清的原因。

4 个答案:

答案 0 :(得分:8)

显式手段由程序员完成。 由JVM或工具完成的隐式方法,而不是程序员。

例如: Java将隐式提供默认构造函数。即使程序员没有为构造函数编写代码,他也可以调用默认构造函数。

明确与此相反,即。程序员必须写。

答案 1 :(得分:4)

1:隐式投射(加宽转换)

将较小尺寸的数据类型(占用较少的存储器)分配给较大尺寸的数据类型。这是由JVM隐式完成的。较小的尺寸扩大到更大的尺寸。这也称为自动类型转换。

示例:

    int x = 10;                    // occupies 4 bytes
    double y = x;                  // occupies 8 bytes
    System.out.println(y);         // prints 10.0

在上面的代码中,4个字节的整数值被赋值为8个字节的双倍值。

  1. 显式转换(缩小转换)
  2. 不能将较大尺寸的数据类型(占用更多内存)分配给较小尺寸的数据类型。这不是由JVM隐式完成的,需要显式转换;由程序员执行的转换操作。较大的尺寸缩小到较小的尺寸。

       double x = 10.5;             // 8 bytes
       int y = x;                   // 4 bytes ;  raises compilation error
    

    1 2        double x = 10.5; // 8个字节        int y = x; // 4字节 ;引发编译错误 在上面的代码中,8字节的double值缩小为4字节的int值。它会引发错误。让我们明确地输入它。

       double x = 10.5;                  
       int y = (int) x; 
    

    1 2        double x = 10.5;
           int y =(int)x; 双x显式转换为int y。拇指规则在两边都应该存在相同的数据类型。

答案 2 :(得分:3)

我将尝试提供跨不同编程语言的类似功能的示例,以区分隐式和&明确的。

隐式:当某些东西可用作编程语言构造的特征/方面时使用。除了直接通过API /接口调用各自的功能外,您不得不做任何事情。

例如,java中的垃圾收集隐式发生 。 JVM会在适当的时候为我们做这件事。

明确:当需要用户/程序员干预来调用/调用特定功能时,如果没有这些功能,将不会执行所需的操作。

例如,在C ++中,释放内存(读取:垃圾收集版本)必须通过显式调用delete和free运算符来实现。

希望这有助于您清楚地理解差异。

答案 3 :(得分:1)

你已经得到了答案,但我想补充一点。

隐含:已经可用于您的编程语言,如方法,类,数据类型等。

- 隐藏代码解决了程序员的困难并节省了开发时间。

-it提供优化的代码。等等。

显式:由程序员(您)按照他们的(您的)要求创建,例如您的应用类,getName(),setName()等方法。

最后以简单的方式, 一个预定义的代码,为程序员构建他们的应用程序,程序等提供帮助,它被称为隐式,并且由(你)程序员编写完全满足要求它被称为明确