编程语言中的"Explicitly"和"Implicitly"有什么区别?

What is the difference between "Explicitly" and "Implicitly" in programming language?

我想对两者的区别有一个清晰准确的认识

另外 this 关键字是用来 隐式 引用还是 显式 ?这也是我要澄清两者的原因?

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

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

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

例如: Java会提供给我们默认的构造函数implicitly.Even如果程序员没有写构造函数的代码,他可以调用默认构造函数。

显式与此相反,即。程序员必须写 .

1:隐式转换(扩大转换)

较小的数据类型(占用较少的内存)被分配给较大的数据类型。这是由 JVM 隐式完成的。较低的尺寸被加宽到较高的尺寸。这也被称为自动类型转换。

示例:

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

在上面的代码中,4 字节整数值被分配给 8 字节双精度值。

  1. 显式转换(缩小转换)

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

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

1 2个 双 x = 10.5; // 8 个字节 整数 y = x; // 4字节 ;引发编译错误 在上面的代码中,8 字节的 double 值被缩小为 4 字节的 int 值。它会引发错误。让我们明确地对其进行类型转换。

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

1 2个 双 x = 10.5;
int y = (int) x; double x 显式转换为 int y。经验法则是,双方应该存在相同的数据类型。

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

隐式:当某些东西可用作正在使用的编程语言结构的 feature/aspect 时。您只需直接通过 API/interface 调用相应的功能即可。

例如 java 中的垃圾收集 隐含地发生 。 JVM在适当的时候为我们做了。

显式:当 user/programmer 干预需要 invoke/call 特定功能时,没有它,所需的操作将不会发生。

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

希望这可以帮助您清楚地了解其中的区别。

你已经有了答案,但我想补充一些。

隐式: 已经在您的编程语言中可用,例如方法、classes、数据类型等

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

-它提供了优化的代码。等等。

显式: 由程序员(您)根据他们(您的)要求创建,例如您的应用程序 class,getName()、setName 等方法()等

最后以简单的方式, 一种预定义的代码,它为程序员构建他们的应用程序、程序等提供帮助,它被称为 implicit,并且由(您)程序员编写以完全满足被称为 Explicit.

的要求

这比我想象的要复杂得多:

显式 = 索引的标签名称(基于标签的索引) 示例:

df['index label name']

隐式 = 索引的整数(从零开始的索引)

df[0]